USB-Boot für den Raspberry Pi 4

Seit Anfang September 2020 gibt es ein EEPROM-Update für den Raspberry Pi 4, das eine von älteren Modellen bekannte Funktion endlich auf für die Version 4 implementiert: Das Booten von externen USB-Datenträgern. Damit können Sie Ihren Raspberry Pi 4 ohne die auf Dauer oft unzuverlässige SD-Karte betreiben.

Testaufbau: Raspberry Pi 4B mit einer älteren SATA-SSD, die über ein USB-Kabel angeschlossen ist

Vorbereitungsarbeiten

Um den USB-Bootprozess auszuprobieren, habe ich das neueste 32-Bit-Image von Raspberry Pi OS heruntergeladen und mit Etcher auf eine SD-Karte übertragen. Die erforderliche neueste Firmware ist in diesem Fall bereits inkludiert.

Wenn Sie eine ältere Raspberry-Pi-OS- bzw. Raspbian-Installation haben, müssen Sie sich selbst um alle Updates für das Betriebssystem, die Firmware und das EEPROM kümmern. Anschließend ist ein Reboot erforderlich.

sudo -s
apt update
apt full-upgrade
rpi-update
rpi-eeprom-update 

  BCM2711 detected
  Dedicated VL805 EEPROM detected
  BOOTLOADER: up-to-date
    CURRENT: Do Sep  3 12:11:43 UTC 2020 (1599135103)
    LATEST: Do Sep  3 12:11:43 UTC 2020 (1599135103)
  FW DIR: /lib/firmware/raspberrypi/bootloader/critical
  VL805: up-to-date
    CURRENT: 000138a1
    LATEST: 000138a1

Bei einer aktuellen Version des Raspberry Pi OS wird das EEPROM schon dahingehend vorkonfiguriert, sowohl die SD-Karte als auch allfällige USB-Datenträger als Bootmedium zu berücksichtigen. Bei älteren Installationen sollten Sie auch das kontrollieren. Dazu führen Sie sudo raspi-config aus und wählen die folgenden Menükommandos aus:

  • 3. Boot Options
  • B4 Boot Order
  • B1 USB BOOT
Aktivierung des USB-Boot-Modus mit raspi-config

Wichtig für den späteren Bootprozess ist, dass die Datei /boot/cmdline.txt keinen absoluten Pfad zur Boot-Partition enthält, sondern deren UUID (Parammeter root=PARTUUID=...). In meinem Fall sieht cmdline.txt so aus:

console=serial0,115200 console=tty1 root=PARTUUID=9e49548b-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

SD-Karte auf die Festplatte/SSD klonen

Damit Sie in Hinkunft vom USB-Datenträger booten können, müssen Sie den Inhalt der SD-Karte auf die mit dem Raspberry Pi verbundene Festplatte oder SSD kopieren. Am einfachsten geht das direkt im Raspberry Pi OS mit dem Programm Zubehör / SD-Card Copier. Beachten Sie, dass Sie dabei sämtliche Daten verlieren, die sich bisher auf dem USB-Datenträger befanden.

Anschließend fahren Sie den Raspberry Pi herunter, entfernen die SD-Karte, schalten den Pi wieder ein und hoffen, dass er nun den USB-Datenträger als Boot-Device akzeptiert.

Hinweis Der Raspberry Pi kann eine kleine USB-Disk (SSD oder 2,5-Zoll-Laufwerk) mit Strom versorgen. Dazu ist es aber wichtig, dass das Netzteil für den Raspberry Pi ausreichend stark ist! Verwenden Sie zumindest ein Netzteil mit 15 W! Andernfalls brauchen Sie für die USB-Disk ein eigenes Netzteil.

Raspberry-Pi-Image direkt auf die USB-Disk schreiben

Anstatt den Umweg über die SD-Karte zu nehmen, habe ich versucht, ein aktuelles Raspberry-Pi-OS-Image mit Etcher direkt auf die SSD zu schreiben. Die so initialisierte Disk habe ich an einen Raspberry Pi ohne SD-Karte angeschlossen — und siehe da, auch das funktioniert! Wenn Sie also nicht eine vorhandene Installation auf ein USB-Gerät übertragen, sondern eine Neuinstallation durchführen möchten, ist das der einfachste und schnellste Weg!

Hinweis Der Boot-Prozess setzt voraus, dass der Raspberry Pi ein aktuelles EEPROM hat. Sie müssen also auf jeden Fall vorweg mit rpi-eeprom-update sicherstellen, dass diese Voraussetzung erfüllt ist.

Praktische Erfahrungen

Die Hoffnung, dass der Boot-Prozess von einer SATA-SSD vielleicht schneller als von einer SD-Card erfolgen würde, haben sich nicht erfüllt. Der eigentliche Boot-Prozess geht zwar flott vor sich — aber es dauert ziemlich lange (fast eine halbe Minute), bis dieser startet. In der Wartezeit zeigt der Raspberry Pi eine Statusseite an. Warum die Erkennung der USB-Disk solange dauert, ist schwer zu verstehen.

Anstatt flott zu booten, zeigt der Raspberry Pi zuerst einmal eine Weile irgendwelche Statusinformationen an.

Ich habe für meine Tests eine ältere SSD mit 256 GByte verwendet. Nahezu der gesamte Platz steht nun im Root-Dateisystem zur Verfügung. Eindrucksvoll:

df -h -t ext4 -t vfat

Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root       229G    2,9G  217G    2% /
/dev/sda1       253M     54M  199M   22% /boot

Stark I/O-lastige Arbeiten, z.B. Updates, erfolgen nun spürbar schneller als mit einer SD-Karte. (Benchmark-Tests habe ich keine durchgeführt — aber sobald mir welche bekannt sind, werde ich hier einen Link angeben.)

Update: Stark abhängig vom USB/SATA-Controller

Ein Hinweis im Forum hat mich dazu gebracht, mein Setup mit einem zweiten USB/SATA-Controllern zu testen. Ergebnis:

  • Controller 1 (USB-3-Stecker für Labor-Setups, Aufschrift »GHB«, ID laut lsusb: 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge): der Raspberry Pi bootet erst nach ca. 30 Sekunden, läuft dann aber stabil

  • Controller 2 (Gehäuse für SATA-Disks, USB 3, Aufschrift »inateck«, ID laut lsusb: 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge): der Raspberry Pi bootet sofort, bleibt aber hängen :-( Das Grafiksystem wird manchmal erreicht, manchmal nicht. Das System ist nicht benutzbar.

Links mein SATA/USB-Controller 1, rechts Controller 2

Mit anderen Worten: Der USB-Bootprozess hängt stark vom verwendeten Adapter ab! Es ist ein Lotteriespiel, ob das Zusammenspiel überhaupt klappt. Ich denke, es gibt keinen schlimmeren Standard als USB3 …

Quellen

Referenz über funktionierende Adapter und Tipps, wie man nicht funktionierende Adapter zur Zusammenarbeit überredet (vielen Dank für alle diesbezüglichen Forum-Beiträge!):

7 Gedanken zu „USB-Boot für den Raspberry Pi 4“

  1. Hallo,

    Das kann an den Adaptern liegen. Ich habe zwei USB to SATA Adapter. Einer von Sabrent und einen von Startech. Der Sabrent zeigt auch sehr lange den Bootbildschirm und bootet auch sehr langsam. Der Startech rast nur so ins Betriebssystem mit der gleichen SSD. Hatte mal gelesen dass das an den Controllern in den Adaptern liegt und der Pi nicht zu jedem Controller 100% Kompatibel ist und dann halt bei manchen Adaptern langsamer ist als von SD Karte.

    Gruß

  2. Es gibt da die Möglichkeit, mit einem Eintrag in die cmdline.txt den einen oder anderen Controller zum Laufen zu überreden:
    usb-storage.quirks=152d:0579:u
    als Beispiel für die Intenso Portable SSD… (ID: 152d:0579 JMicron Techn…)
    Sollte auch für den oben erwähnten 2.ten Controller (angepasst) funktionieren.
    Nur ist der Erfolg nicht immer garantiert (bei mir hat es nicht geklappt, aber bei der Person, die mir die Info gegeben hatte).

    Weitere Informationen dazu finden sich im deutschen Raspberry Pi-Forum (just leider nur eingeschränkt zu erreichen) oder auf der Seite von Rasberry Pi Foundation (z.B. https://www.raspberrypi.org/forums/viewtopic.php?t=286102)

  3. Hallo Andreas, habe eine ssd intenso premium gekauft und war schon verzweifelt. Doch mit deinem Tipp (usb-storage.quirks=152d:0579:u) läuft alles wie geschmiert. Danke schön!!

  4. Noch ein paar Nachträge:

    im deutschen Raspi-Forum gibt es zu dem Thema einen interessanten Thread:
    https://forum-raspberrypi.de/forum/thread/47876-magische-usb-sata-adapter-und-wo-sie-zu-finden-sind/

    wer einen RPi4 besitzt, der von USB booten kann, sei das Image-Writer-Tool der Raspi Foundation empfohlen (auf der Download-Seite zu finden). Leider funktioniert z.B. die Laufwerksverwaltung von Ubuntu nicht (immer), wenn man ein RPi-Image auf SSD schreiben will.
    (im 4.ten Anlauf konnte ich so die oben erwähnte Intenso SSD zum Booten überreden)

  5. Hallo Zusammen,
    ich habe Deine obige Anleitung mit einer externen 2,5 Zoll HDD (nicht SSD) getestet und ich muss sagen, auch damit funktioniert der Boot tadellos.
    Ich habe eine handelsübliche 320GB Notebook HD in einem externen Gehäuse von Fantec Model: FANTEC UB-229U3-6G ausprobiert, da ich gerade nichts anderes hatte, und wie oben schon geschrieben, es funktioniert, und sogar sehr schnell und ohne längere Pausen.

  6. Hallo,
    booten von USB-Stick oder SSD funktioniert prima!

    Frage: gibt es auch schon Versuche, das OS nach dem Booten in eine RAMDisk zu kopieren (nur bei 8GB RAM sinnvoll) und dann dort zu betreiben? Beabsichtigte Veränderungen müssten natürlich vor dem Herunterfahren gesichert werden.

    MfG Rolf

Schreibe einen Kommentar

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

Wenn Sie hier einen Kommentar absenden, erklären Sie sich mit der folgenden Datenschutzerklärung einverstanden.