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.
Updates: Hinweis auf Inkompatibilitäten mit verschiedenen USB/SATA-Adaptern, Warnung vor rpi-update
. Tipp: Werfen Sie unbedingt auch einen Blick in das Raspberry-Pi-Forum.
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 siehe Hinweis unten)
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
WARNUNG Mehrere Leser haben mir über massive Probleme mit
rpi-update
berichtet. Gleichzeitig reichen der Kernel und die Firmware, die Sie im Rahmen normaler Updates erhalten, für USB-Boot aus. Kurzum: In den meisten Fällen sollte es möglich sein, USB-Boot ohnerpi-update
zum Laufen zu bringen. Führen Sie das Kommando also nur als letzten Notweg aus (und machen Sie auf jeden Fall vorher ein Backup Ihrer wichtigen Daten).
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
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.
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.
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
- https://github.com/raspberrypi/rpi-eeprom/blob/master/firmware/release-notes.md
- https://www.tomshardware.com/how-to/boot-raspberry-pi-4-usb
Referenz über funktionierende Adapter und Tipps, wie man nicht funktionierende Adapter zur Zusammenarbeit überredet (vielen Dank für alle diesbezüglichen Forum-Beiträge!):
- https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives
- https://jamesachambers.com/new-raspberry-pi-4-bootloader-usb-network-boot-guide
- https://forum-raspberrypi.de/forum/thread/47876-magische-usb-sata-adapter-und-wo-sie-zu-finden-sind
- https://forum-raspberrypi.de/forum/thread/48950-tutorial-eine-unendliche-geschichte-raspberry-4b-und-usb-boot
Moin,
evtl. mal eine SD Card einlegen ohne Partitionstabelle? Vielleicht sucht er nur viel zu lange auf der Karte nach irgendwas.
Gruß
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ß
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)
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!!
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)
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.
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