(Übersetzt aus dem Englischen: /en/raspberry-pi-4-usb-first )

Zum Zeitpunkt dieses Artikels wurde das Booten von USB gerade als Beta-Funktion für den Raspberry Pi 4 verfügbar gemacht.

Es gibt einige Anleitungen, wie man diese Funktion aktiviert, aber ich hatte eine zusätzliche Anforderung: Zuerst von USB booten, dann von SD booten, was einige zusätzliche Schritte erfordert.

Dieses Dokument könnte auch nützlich sein, wenn Du nur den SD-first Ansatz möchtest. Ignoriere in diesem Fall einfach den vorletzten Teil.

Aber bevor wir beginnen:

Benutzung auf eigenes Risiko. Wir schreiben hier Daten mit Beta-Inhalten ins EEPROM und manipulieren sogar Konfigurationen dafür. Wenn etwas schiefgeht, könnte Dein Pi unbrauchbar werden. Nicht einmal eine Linux-Neuinstallation wird das reparieren.

Zusätzliche Warnung: Versuche dies nicht bei einer N00bs-Installation.

Noch da? Dann lass uns beginnen. (Ich gehe davon aus, dass Du Raspbian Buster verwendest)

Den Pi aktualisieren

Bevor wir starten, sollten wir immer die aktuellste Linux-Version installiert haben. Stelle also sicher, dass Deine Internetverbindung funktioniert und gib ein

sudo apt-get update

gefolgt von

sudo apt-get upgrade

und zusätzlich

sudo rpi-update

um die Firmware auf der SD-Karte zu aktualisieren

Auf Beta umstellen

Ändere jetzt rpi, um auf den Beta-Status umzuschalten. (Wenn Du dies aus der Zukunft liest: Hallo! Gibt es noch Autos? Und vielleicht musst Du gar nicht mehr auf Beta umschalten)

Tue dies, indem Du Deinen bevorzugten Editor wie vi oder nano verwendest, um die rpi-config zu ändern:

sudo nano /etc/default/rpi-eeprom-update

Ändere den release-status von critical auf beta und speichere die Datei.

EEPROM flashen

Prüfe jetzt die aktuellste Version auf Deinem Pi:

ls /lib/firmware/raspberrypi/bootloader/beta/pieeprom*.bin

Zum Zeitpunkt dieses Schreibens ist die aktuellste Version dort 2020-05-15. Also flashe das EEPROM mit dieser Version:

sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-05-15.bin

Du wirst nach einer Weile zur Eingabeaufforderung zurückgeworfen. Starte jetzt Deinen Pi neu und hoffe, dass nichts schiefgegangen ist:

sudo shutdown -r now

Prüfe nun, ob die Version installiert wurde, indem Du eingibst

sudo vcgencmd bootloader_version

Die Antwort sollte das Datum entsprechend Deiner Datei anzeigen. Also etwa May 15

Boot-Reihenfolge ändern

Standardmäßig ist die Boot-Reihenfolge jetzt: SD zuerst, USB als zweites. Wenn Du also einfach Deine SD wegwerfen und von USB booten willst: Ignoriere dieses Kapitel. Wenn Du einen "Hardware-Multiboot" brauchst (von USB booten wenn angeschlossen, aber immer noch eine Fallback-SD verfügbar haben), folge diesen Anweisungen:

Stelle zunächst sicher, dass ich nicht über die Standardreihenfolge gelogen habe und zeige die aktuelle Konfiguration an:

sudo vcgencmd bootloader_config

Dies sollte einige Informationen über die Konfiguration anzeigen. Am interessantesten für uns ist der letzte Teil namens BOOT_ORDER, der den Eintrag enthält

BOOT_ORDER=0xf41

wobei 4=USB und 1=SD bedeutet. Weitere Details wie Netzwerk-Boot findest Du in der Bootloader-Dokumentation.

Während dies vielleicht so aussieht, wie wir es wollen, musst Du dies von rechts nach links lesen. Also ist es SD (1) zuerst und USB (4) als zweites. Aber wir werden das ändern.

Zuerst wird dringend empfohlen, nicht direkt an den offiziellen ROM-Dateien herumzubasteln, sondern eine Kopie davon zu machen. Lass uns das tun:

sudo cp /lib/firmware/respberrypi/bootloader/beta/pieeprom-2015-05-15.bin pieeprom.bin

Erstelle nun eine Konfiguration aus diesem ROM:

sudo rpi-eeprom-config pieeprom-usbfirst.bin >bootconf.txt

Du hast jetzt eine Konfigurationsdatei erstellt, die die Konfigurations-Ausgabe enthält, die Du wieder mit nano bearbeiten kannst:

sudo nano bootconf.txt

und ändere die letzte Zeile zu:

BOOT_ORDER=0xf14

Im letzten Schritt wenden wir nun unsere geänderte Konfiguration an und aktualisieren das EEPROM erneut:

sudo rpi-eeprom-config --out pieeprom-usbfirst.bin --config bootconf.txt pieeprom.bin sudo rpi-eeprom-update -d -f ./pieeprom-usbfirst.bin sudo shutdown -r now

USB-Laufwerk finalisieren

Jetzt kann unser Raspberry von USB booten (und zuerst von dort booten), aber das Linux auf unserem USB-Laufwerk weiß nicht wirklich, wie es damit umgehen soll. Dieser Teil ist einfach:

Zuerst musst Du ein Raspbian-Image auf Dein USB-Laufwerk flashen (genau wie Du es mit einer SD-Karte machen würdest). Dann schließe das USB-Laufwerk an, mounte es und kopiere die aktuellsten Firmware-Dateien aus dem /boot-Verzeichnis der SD-Karte auf das USB-Laufwerk. Alternativ kannst Du diese Dateien aus dem Master-Branch auf Github auswählen.

Viel Spaß :)