Raspberry Pi vom USB Stick booten

Den Raspberry Pi vom USB Stick booten war ein viel gewünschtes Feature der Community und wurde inoffiziell beim Raspberry Pi 3 Release auch angekündigt. Nun gibt es die erste Betaversion davon. Damit ist es möglich das Linux Image rein vom USB Stick oder einer USB Festplatte zu booten, man benötigt keine SD Karte mehr.

Raspberry Pi vom USB Stick booten

Raspberry Pi vom USB Stick booten

Eine SD Karte ist praktisch. Sie ist klein und auf sie passen große Datenmengen. Zudem ist sie günstig, weshalb sie in mobilen Geräten als Speichererweiterung eingesetzt wird. Bei der Konstruktion des ersten Raspberry Pi hat man vermutlich deshalb dieses Speichermedium als primären Speicher ausgewählt. Leider ist die SD Karte aber für manche Anwendungsgebiete keine gute Idee. Viele Benutzer beklagen, dass diese fast immer der Grund für den Ausfall eines Raspberry Pis ist. Sie ist quasi das schwache Glied in der Kette.

Warum ist das so? SD Karten haben nur begrenzt oft beschrieben werden. Irgendwann sind ihre Speicherzellen einfach kaputt durch Materialermüdung. Wie bei SSDs verhindert man ein vorzeitiges Ableben indem man Dateien die oft geschrieben werden (zum Beispiel Log Dateien unter var/log) auf eine Festplatte auslagert. Zusätzliche gibt es bei den SD Karten große Qualitätsunterschiede. Es gibt viele unterschiedliche Hersteller und die Karten unterscheiden sich von der Spezifikation nur gering voneinander, haben aber oft enorme Unterschiede bei Performance und maximaler Schreibanzahl.

Wie wird über USB gebootet?

Der Raspberry Pi verfügt über ein Boot ROM, ein kleines Programm, dass die ersten Teile des Bootprogramms (die Datei bootcode.bin) des Betriebssystems von der SD Karte ließt und diesen in den RAM schreibt. Danach wird das Booten mit diesem Code fortgesetzt. Es wurden diesem Boot ROM nun neue Boot Modes wie das Booten über USB hinzugefügt.

USB Boot am Raspberry Pi 3 aktivieren

Um den Raspberry Pi vom USB Stick booten zu können benötigen wir zuerst einen Raspberry Pi 3 und das aktuellste Image. Dort findet man die überarbeiteten Dateien start.elf und bootcode.bin. USB Boot wird bei dem aktuellen Image folgendermaßen aktiviert (ist standardmäßig deaktiviert weil immer noch Beta):

Mit dem Kommando wird program_usb_boot_mode=1 am Ende der Datei boot/config.txt hinzugefügt. Nun muss man den Pi neu starten! Danach sollte das Kommando

die Ausgabe 3020000a zeigen. Damit ist der USB Boot aktiviert! Nun benötigen wir noch einen bootfähigen USB Stick. Wir haben dafür zwei Möglichkeiten:

  1. Raspbian Image neu herunterladen und auf den USB Stick kopieren
    der einfachste Weg ist das Image neu herunterzuladen.
  2. den bootfähigen Stick direkt am Raspberry Pi erzeugen

Bootfähigen Raspbian USB Stick erzeugen

Wir starten den Raspberry Pi ganz normal mit eingelegter SD Karte. Zusätzlich stecken wir einen leeren USB Stick in einen der USB Steckplätze. Wir haben nun folgende Situation:

  • /dev/mmcblk0
    das ist die SD Karte
  • /dev/sda
    das ist der USB Stick

Wir erstellen nun auf dem USB Stick eine 100 MB große FAT32 boot Partition, den Rest des Speichers legen wir als ext4 Linux Partition an:

Mit Yes antworten.

Es folgt eine Ausgabe der Partitionen am USB Stick.
Wir erstellen die Dateisysteme wie folgt:

Im nächsten Schritt mounten wir die neu erstellte Partition und kopieren das laufende System auf den USB Stick:

Im nächsten Schritt müssen wir die SSH host keys regenerieren, sonst würde das System nicht starten:

Boot Parameter einstellen

Der letzte Schritt ist nun noch, dass wir dem System mitteilen was gestartet werden soll. Wir beginnen damit, dass wir den USB Stick als primäre Boot Partition definieren. Das wird in der /boot/cmdline.txt Datei gemacht:

In der fstab Datei müssen wir diese Information auch noch einmal hinterlegen:

Jetzt noch den USB Stick umounten und den Pi neu starten…

Nun startet der Pi das erste Mal vom USB Stick!

Probleme

Da es sich um eine Beta Version handelt gibt es aktuell noch  zahlreiche Probleme. Größtes Problem ist bislang, dass nicht alle USB Sticks unterstützt werden. Aufgrund der großen Zahl an Herstellern und Modellen wurde bisher nur wenig getestet. Man weiß von einigen Modellen, dass sie funktionieren beziehungsweise nicht funktionieren. Die Entwickler versprechen in den nächsten Versionen Verbesserungen.

USB Boot für Raspberry Pi 1, 2 und Pi Zero

Die älteren Modelle und der Zero werden derzeit nicht unterstützt, da bei ihnen der Bootloader noch im BCM2837 Baustein eingebaut ist. Es gibt aber trotzdem eine Möglichkeit Raspbian vom USB Stick zu laden. Mann benötigt lediglich eine spezielle bootcode.bin Datei auf der SD Karte, diese Datei wird beim booten geladen. Alle weiteren Dateien können direkt im Bootvorgang vom USB Datenträger kommen. Die SD Karte fungiert quasi als Boot Disk, wie man es früher mit 3,5 Zoll Disketten kannte.

Fazit

Ich habe euch gezeigt wie man den Raspberry Pi vom USB Stick booten kann. Diese Funktion war schon sehr lange und oft gewünscht und wurde nun endlich ermöglicht. Damit ist der Raspberry Pi noch dynamischer und man kann endlich durch den Einsatz einer Festplatte einen viel reibungsloseren Betrieb garantieren.

Im nächsten Artikel geht es um den Boot Modus Network Boot, damit kann man den Pi über ein Netzwerk Image booten, damit kann man mehrere Pis über eine zentrale Software laufen lassen, ideal für jedes Rechenzentrum.

(Visited 1.177 times, 1 visits today)

Das könnte auch interessant sein...

3 Antworten

  1. Hans sagt:

    Danke für den Beitrag. Da das X400 mit dem Pi3 leider nicht funktionierte (da liefert das X400 wohl doch nicht genug Power), habe ich den wieder verkauft. Wie sieht es mit Dem Pi2 und B+ aus – da wäre eine Anleitung auch sehr hilfreich. Muss dazu nur die bootcode.bin geändert werden und was genau?

    lg

  2. Walter sagt:

    Genau die Frage habe ich mir auch gestellt, wie geht das mit dem pi zero?

  3. Jürgen Morak sagt:

    In Zeile 5 im Schritt mit den SSH Keys steht „sudo chroot /mnt/target“. hier müsste aber statt „target“ „usbstick“ verwendert werden!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.