Raspberry Pi: Multi-Boot

Auf meinem Raspberry Pi laufen ja bekanntlich ArchLinux und OpenELEC. Da ich aber faul bin und zum Wechseln des OS nich jedesmal die Speicherkarte wechseln will, habe ich mir dieses kleine Script geschrieben und es auf Partition 1 gepackt. Die Funktionsweise ist eigentlich relativ simpel. Partition 1 wird unter ArchLinux nach /boot undunter OpenELEC nach /flash gemounted und somit liegt die cmdline.txt logischerweise auch jeweils an einem anderen Ort. Das Skript erkennt also an der Position der cmdline.txt, welche Distribution gestartet ist und startet dann jeweils die andere. Dazu müssen lediglich cmdline.txt, start.elf und kernel.img ausgetauscht werden.

Vielleicht werde ich das Ganze mal überarbeiten und nen schönes Menü einbauen. Dann könnte man wunderbar mehr als zwei Systeme im Script hinterlegen.

Um euch lästiges Copy&Paste zu ersparen, habe ich das Skript hier hochgeladen.

#!/bin/sh
OPTIONS="smsc95xx.macaddr=de:ad:be:ef:ca:fe"

if [ -e "/boot/cmdline.txt" ]
then
    mount -o rw,remount /boot

    echo "boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p3 ${OPTIONS} ssh nosplash debugging progress" > /boot/cmdline.txt

    cp /boot/{arm128_,}start.elf
    cp /boot/kernel.img{,.archlinux}
    cp /boot/kernel.img{.openelec,}

    shutdown -r now
elif [ -e "/flash/cmdline.txt" ]
then
    OPTIONS="${OPTIONS} dwc_otg.dma_enable=1 dwc_otg.dma_burst_size=256 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 loglevel=2"

    mount -o rw,remount /flash

    echo "boot=/dev/mmcblk0p1 root=/dev/mmcblk0p2 ${OPTIONS} rootfstype=ext4 rootwait" > /flash/cmdline.txt

    cp /flash/{arm224_,}start.elf
    cp /flash/kernel.img{,.openelec}
    cp /flash/kernel.img{.archlinux,}

    reboot
fi