Sheevaplug – Debian auf SD Karte + Dualboot

Auf der Seite von Martin Michlmayr ist eine Anleitung zu finden, wie Debian Lenny auf einer SD-Karte oder USB-Stick installiert werden kann. Ich habe mich für die Variante mit der SD-Karte entschieden, da ich bzgl. USB-Stick von einigen Problemen gelesen habe und der SD-Karteneinschub sonst sowieso ungenutzt geblieben wäre.
Der erste Schritt ist das Formatieren der SD-Karte. Im Verzeichnis /dev muss zunächst nach dem logischen Namen der SD-Karte gesucht werden. Dazu nach dem Einstecken einfach mit “ls mmc*” im Verzeichnis /dev die möglichen Namen auflisten. Im Normalfall müsste dort dann “mmcblk0″ zu finden sein.

Mit dem Befehl
fdisk /dev/mmcblk0
startet man das Tool “fdisk”, mit dem man den Datenträger partitionieren und formatieren kann.
Für die 4 GB große SD-Karte habe ich folgende Partitionen angelegt:
Boot: 50 MB
Daten: 3200 MB
swap: 512 MB

Die Partitionstabelle sollte nach der Partitionierung dann so aussehen:
Disk /dev/mmcblk0: 3965 MB, 3965190144 bytes
49 heads, 48 sectors/track, 3292 cylinders
Units = cylinders of 2352 * 512 = 1204224 bytes
Disk identifier: 0×00000000
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 * 1 45 52896 83 Linux
/dev/mmcblk0p2  46 2832 3277512 83 Linux
/dev/mmcblk0p3  2833 3292 540960 82 Linux swap / Solaris

Danach sind die SD-Karte bzw. die drei Partitionen mit folgenden Befehlen zu formatieren:
mkfs.ext2 -I 128 /dev/mmcblk0p1
mkfs.ext2 /dev/mmcblk0p2
mkswap /dev/mmcblk0p3

Danach wird der Tar Ball von der Homepage von Martin Michlmayr direkt per wget heruntergeladen und auf der SD-Karte installiert.
Damit der Bootvorgang von der SD-Karte stattfindet müssen die Bootargumente in U-Boot geändert werden. Dazu zunächst den Bootvorgang starten und dann gleich abbrechen (wenn der Counter hochzählt), so dass der Marvell-Prompt zu sehen ist (Marvell>>). Nun befinden wir uns im Bootloader und können mit “printenv” uns die aktuellen Bootargumente anschauen.
Für den Fall, dass etwas schief läuft, wollte ich die Möglichkeit haben noch über den internen Flash-Speicher zu booten, in dem ich einfach die SD-Karte entferne.

Für diesen Dual-Boot sind folgende Befehle einzugeben. Damit werden die Bootargument entsprechend geändert.Zunächst die Bootargumente für die SD-Karte setzen:
setenv bootargs_sd ‘console=ttyS0,115200 ro root=/dev/mmcblk0p2′
setenv bootcmd_sd1 ‘setenv bootargs $(bootargs_sd); mmcinit; ext2load mmc 0 0×0800000 /uInitrd’
setenv bootcmd_sd2 ‘ext2load mmc 0 0×400000 /uImage; bootm 0×400000 0×0800000′

Dann die Bootargumente für den Nand Flashspeicher setzen:
setenv bootargs_nand1 ‘console=ttyS0,115200′
setenv bootargs_nand2 ‘mtdparts=orion_nand:0×400000@0×100000(uImage),0x1fb00000@0×500000(rootfs)’
setenv bootargs_nand3 ‘ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs’
setenv bootcmd_nand ‘setenv bootargs $(bootargs_nand1) $(bootargs_nand2) $(bootargs_nand3); nand read.e 0×00800000 0×00100000 0×00400000;bootm 0×00800000′

Zum Schluss den Bootbefehl setzen:
setenv bootcmd ‘run bootcmd_sd1; run bootcmd_sd2; run bootcmd_nand’

Hinweis: Da die Anzahl der Bootargumente beschränkt ist, werden sie auf mehrere Variablen (bootcmd_sd1, boot_cmd_sd2 etc.) aufgeteilt.

Sollte jetzt der Bootbefehl für die SD-karte nicht funktionieren (z.B. weil sie nicht eingesteckt ist) werden automatisch die nächsten Bootbefehle in Folge (hier bootcmd_nand) für den Flashspeicher ausgeführt.

One thought on “Sheevaplug – Debian auf SD Karte + Dualboot

  1. Thanks!
    this finally saved me jumping from a bridge…
    I tried so many dual boot advices but only this one worked!
    …you made an old man happy!
    Cheers,
    Y.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>