Ja, das stimmt so.
Allerdings ist das vorinstallierte Ubuntu der schlechteste Ausgangspunkt, den man sich wohl denken könnte:
Das Gute ist: Es gibt ein Tool, da macht man quasi zwei Klicks, und schon sind alle genannten Punkte in einem Rutsch erledigt.
Benötigt wird:
Der Einfachheit halber beschreibe ich ausschließlich den Weg für Ubuntu (9.*) in VirtualBox, sodass auch Mac- und Windows-User diese Anleitung verfolgen können.
Ich selber habe es mit Arch Linux ebenfalls hinbekommen; mit Debian sollte die Installation auch funktionieren. Man müsste das halt nur adaptieren und für seine Distribution leicht anpassen.
startet Linux und stöpselt das SheevaPlug schon mal auf 'ne Steckdose und verbindet es mit dem seriellem Kabel.
sudo apt-get install minicom libftdi libftdi-dev openocd php5-cli
USB-Stick anstöpseln und via Geräte -> USB-Geräte -> $Modell zum Gast durchleiten.
Formatieren des Sticks mit fat32:
$ sudo umount /media/usbstick # falls gemountet
$ sudo mkfs.msdos /dev/sdb1 # je nach eigenen Geräten
$ sudo mount /dev/sdb1 /mnt
Entpackt sheevaplug-installer-v1.0.tar.gz und geht in das Verzeichnis sheevaplug-installer-v1.0.
$ ubuntu@ubuntu-desktop:~/Downloads$ cd sheevaplug-installer-v1.0/
$ sudo cp ./installer/* /mnt/
$ umount /mnt/
Nehmt den USB-Stick und steckt ihn ans SheevaPlug.
Nun geht's ans Flashen via JTAG. Es unnötig zu sagen, dass alle Daten auf dem Sheeva werden gelöscht...
$ sudo ./runme.php nand
[bei wem die runme.php streikt, der kann eine syntaktisch Korrekte hier beziehen]
Dauert etwas und resultiert in:
**** exec(modprobe ftdi_sio vendor=0x9e88 product=0x9e8f)
**** Preparing environment variables file ...
reading uboot/uboot-env/uboot-dflt.txt
uboot/uboot-env/fw_setenv baudrate 115200
CRC read error on uboot-env.bin: Success
[...]
**** Burning uboot and environment variables ... This will take few minutes ...
Open On-Chip Debugger 0.2.0 (2009-07-26-14:56) Release
$URL: http://svn.berlios.de/svnroot/repos/openocd/tags/openocd-0.2.0/src/openocd.c $
For bug reports, read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
2000 kHz
jtag_nsrst_delay: 200
jtag_ntrst_delay: 200
dcc downloads are enabled
[...]
**** U-boot should be up and running now. Open your console ...
Der Prozess dauert einige Minuten, nach Erhalt der letzten Zeile kann dann via minicom der Bootprozess und das Einrichten von Ubuntu verfolgt werden.
(wenn minicom den Bootprozess unterbricht, einfach in u-boot reset eintippen, dann geht es nochmal los.)
Nachdem man fertig ist, kann man ein frisches Ubuntu 9.04 auf einem UBIFS mit neuem Kernel und U-Boot betrachten.
Ein LAN-Kabel eingesteckt, einem DHCP Router und man kann sich via ssh in das System einloggen:
$ ssh root@192.168.0.123 # passwort: nosoup4u
Der SheevaPlug Installer ist ein sehr nettes Tool. Damit lässt sich zum Beispiel ein tot geflashtes SheevaPlug wiederbeleben.
Totflashen geht, indem man den Bootloader falsch flasht, sodass das Plug nicht einmal mehr die Hardware initialisieren kann.
(Erkennbar an der nicht leuchtetenden blauen Lampe)
Dieser Schritt sollte der allererste sein, den man nach Erhalt eines neuen Sheevas tut.
Hinterher haben wir:
Weiterhin ist es mit diesem Werkzeug möglich, eigene Distributionen einzubinden. Im installer/-Verzeichnis kann der rootfs.tar.gz Tarball mit einem eigenen Distro-Baum ausgetauscht werden.
Auf diesem Weg habe ich selber ein Debian zum Laufen bekommen. Wer das allerdings selber probieren möchte, sollte den vorgefertigten Tarball nutzen. Die aktuelle Build (Anfang Januar) via bootstrap funktionierte bei mir nämlich nicht.
Der Installer bietet auch die Möglichkeit, das Betriebssystem auch auf die SD Flashkarte zu spielen. Denn diese wird mit dem Kernel Update wieder richtig schnell:
100 bis 1 GB MB:
== Schreiben via dd bs=1024 count=[100K, 200K, 1M] if=/dev/zero of=/mnt/test.img ==
104857600 bytes (105 MB) copied, 6.31505 s, 16.6 MB/s
209715200 bytes (210 MB) copied, 30.8354 s, 6.8 MB/s
1073741824 bytes (1.1 GB) copied, 221.97 s, 4.8 MB/s
== Lesen via dd if=/mnt/test.img of=/dev/null ==
104857600 bytes (105 MB) copied, 5.46798 s, 19.2 MB/s
209715200 bytes (210 MB) copied, 10.8675 s, 19.3 MB/s
1073741824 bytes (1.1 GB) copied, 64.4165 s, 16.7 MB/s
Da das NAND Flashspeicher ist und dieser bekanntlich eine begrenzte Schreibvorgangsanzahl haben, ist es ratsam, swap, /tmp und /var (sehr häufige Schreib/Lesezyklen) auf eine USB-Festplatte oder auf eine externe (billige) SD Karte umzubiegen oder in den RAM zu speichern.
Das NAND selber kann nämlich nur zwischen 1.000 und 10.000 Schreibzyklen bestehen. Dazu editiert man sich einfach seine /etc/fstab zurecht. Meine sieht z.B. so aus:
mone /dev/pts devpts defaults 0 0
none /dev/shm tmpfs defaults 0 0
ubi0:rootfs / ubifs defaults,noatime 0 0
/dev/sda1 /var jfs defaults,mode=0755 0 0
/dev/sda6 /home jfs defaults,noatime
/dev/sda5 swap swap defaults 0 0
/tmp /var/tmp bind defaults,bind 0 0
nach Arch Mobile Wiki
none /dev/pts devpts defaults 0 0
none /dev/shm tmpfs defaults 0 0
ubi0:rootfs / ubifs defaults,noatime 0 0
tmpfs /var/lock tmpfs defaults,size=50m,mode=0755 0 0
tmpfs /var/log tmpfs defaults,size=50m,mode=0755 0 0
tmpfs /var/run tmpfs defaults,size=50m,mode=0755 0 0
tmpfs /tmp tmpfs defaults,size=100m,mode=1777 0 0
/tmp /var/tmp bind defaults,bind 0 0
Viel Spaß mit eurem neuen System!