Aus Raspberry Pi Geek 04/2018

Multiboot für Raspbian (Seite 2)

Listing 1

 

$ sudo apt-get -y install git
$ git clone https://github.com/bablokb/pi-boot-switch.git
$ cd pi-boot-switch
$ sudo tools/install

Das Skript implementiert eine Reihe von Funktionen wie Kopieren (copy, -c) oder Wechseln (switch, -s). In aller Regel lassen sich mehrere Funktionen auf einmal ausführen; um die Funktionsweise zu erläutern, zeigen die nächsten Abschnitte die Kommandos aber einzeln.

Das Standardszenario

Das Standardszenario besteht im Kopieren der aktuellen Systempartition auf eine zweite Partition und anschließendem Wechsel. Zunächst einmal informieren Sie sich mit dem Info-Kommando -I über die vorhandenen Partitionen (Listing 2). Die rechte Spalte der Ausgabe zeigt, dass das System aktuell von der ersten Partition bootet. Die aktuelle Systempartition liegt auf der zweiten Partition (current root); auch beim nächsten Hochfahren würde diese die Systempartition bleiben (next root).

Listing 2

 

$ sudo pi-boot-switch -I
Partition      | Label | Role
---------------|-------|---------------------
/dev/mmcblk0p1 | boot  | current boot
/dev/mmcblk0p2 |       | current root/next root
/dev/mmcblk0p3 |       |

Um sich das Identifizieren der Partitionen zu erleichtern, vergeben Sie ein Label für die aktuelle Systempartition auf /dev/mmcblkp02 (Listing 3, erste Zeile). Die Ausgabe mit -I zeigt anschließend den Labelnamen Original an. Danach kopieren Sie mit dem zweiten Kommando aus Listing 3 die aktuelle Systempartition eins zu eins auf die dritte Partition /dev/mmcblk0p3. Nutzen Sie die grafische Oberfläche von Raspbian, könnte Ihnen der Automounter wieder in die Quere kommen – in diesem Fall müssten Sie vorher die dritte Partition aushängen.

Listing 3

 

$ sudo pi-boot-switch -L "Original" -t /dev/mmcblk0p2
$ sudo pi-boot-switch -c -t /dev/mmcblk0p3 -F

Dank der Option -F formatiert das Skript das Ziel vor dem Kopieren. Haben Sie die Partition schon beim Anlegen mit Gparted formatiert, lassen Sie diesen Schalter weg. Das Kopieren dauert je nach Partitionsgröße eine Weile; anschließend zeigt das Info-Kommando den neuen Zustand. Hier fällt auf, dass das Skript die Partition automatisch mit einem Label versieht (raspbian 9). Sie ändern das mit dem in Listing 3 beschriebenen Label-Kommando auf Test (Kopie). Listing 4 zeigt das komplette Prozedere.

Listing 4

 

$ pi-boot-switch -c -t /dev/mmcblk0p3 -F
info: formatting partition /dev/mmcblk0p3 with ext4
/dev/mmcblk0p3 hat ein ext4-Dateisystem
        zuletzt auf Fri Nov 24 11:23:41 2017
 eingehängt info: mounting /dev/mmcblk0p3 on /tmp/pi-boot-switch.ncFxrS
info: copying / to /tmp/pi-boot-switch.ncFxrS
info: fixing /etc/fstab on /dev/mmcblk0p3
info: copying /boot/ to /tmp/pi-boot-switch.ncFxrS/_boot
info: fixing /tmp/pi-boot-switch.ncFxrS/_boot/cmdline.txt
info: copied system to /dev/mmcblk0p3
info: use pi-boot-switch with option '-s /dev/mmcblk0p3' to boot from new partition
info: setting label for /dev/mmcblk0p3: raspbian 9
$ sudo pi-boot-switch -I
[...]
$ sudo pi-boot-switch -L "Test (Kopie)" -t /dev/mmcblk0p3
$ sudo pi-boot-switch -I
[...]

Aktuell existieren nun auf der SD-Karte also das Original und eine Kopie. Mit dem Switch-Kommando -s (Listing 5, erste Zeile) wechseln Sie die Systempartition. Das kommt aber erst beim nächsten Boot-Vorgang zum Tragen, den Sie mit sudo reboot einleiten. In einer grafischen Umgebung klappt das auch über das normale Menü. Alternativ erweitern Sie das Switch-Kommando um die Option -R: Dann erfolgt der Reboot nach dem Wechsel der Systempartition automatisch.

Listing 5

 

$ sudo pi-boot-switch -s -t /dev/mmcblk0p3
info: copying /boot/ to /_boot
info: mounting /dev/mmcblk0p3 on /tmp/pi-boot-switch.HkGWiP
info: copying /tmp/pi-boot-switch.HkGWiP/_boot/ to /boot
info: unmounting /dev/mmcblk0p3
info: reboot the system to start from /dev/mmcblk0p3
$ sudo pi-boot-switch -I
Partition       | Label            | Role
----------------|------------------|---------------------
/dev/mmcblk0p1  | boot             | current boot
/dev/mmcblk0p2  | Original         | current root
/dev/mmcblk0p3  | Test (Kopie)     | next root
/dev/mmcblk0p4  |                  |

Während sich das Kopieren der Systempartition langwierig gestaltet, geht der Wechsel zwischen den verschiedenen Systempartitionen flott vonstatten. So können Sie bei Bedarf schnell in eine Testumgebung auf eine anderen Partition wechseln, um etwas auszuprobieren. Anschließend gelangen Sie genauso schnell wieder zurück zur produktiven Arbeitsumgebung.

Systempartition auf USB

Bei Bedarf lässt sich eine Systempartition auch auf ein USB-Laufwerk auslagern, etwa einen schnellen Stick oder eine Festplatte. Gerade Letzteres führt im Alltag zu einer spürbaren Geschwindigkeitssteigerung, insbesondere dann, wenn der RasPi häufig Daten schreibt.

Mit dem Raspberry Pi 3 führte die Foundation die Möglichkeit ein, direkt von USB zu booten und damit ganz auf die SD-Karte zu verzichten. Allerdings funktioniert das nicht mit jedem Stick; außerdem dauert der Boot-Prozess deutlich länger, da er immer zuerst eine SD-Karte sucht.

Aber auch der Hybridbetrieb funktioniert ohne Probleme: Die Boot-Partition bleibt auf der SD-Karte, die Systempartition kommt auf den USB-Speicher. Da auf der Boot-Partition nur die Firmware und der Kernel liegen, greift das System lediglich beim Start kurz darauf zu, ansonsten gibt es keinerlei Zugriff. Theoretisch könnte man nach dem Hochfahren und dem Aushängen der Boot-Partition sogar die SD-Karte entnehmen und den Slot als normalen Kartenleser nutzen. Eine gute Idee ist das trotzdem nicht: Dann gehen Kernel- und Firmware-Aktualisierungen in die Hose.

Das Boot-Switch-Skript funktioniert ohne Probleme auch mit USB-Medien. Zum Testen hängen Sie einfach einen passend partitionierten Stick an den USB-Anschluss und rufen mit dem Schalter -I wie oben beschrieben die verfügbaren Partitionen ab.

In der Liste tauchen dann neben den /dev/mmcblk0px-Partitionen der SD-Karte auch noch die USB-Partitionen auf, üblicherweise als /dev/sda1 und so weiter. Per Copy und Switch übertragen Sie dann die Systempartition auf das USB-Medium und wechseln für den nächsten Boot-Vorgang dorthin.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben