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.

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!):

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.