Ein Raspberry Pi ganz ohne SD-Karte betreiben – das klingt komfortabler als es auf den ersten Blick scheint. Keine Karte, die nach Jahren des Dauerbetriebs ihren Geist aufgibt, kein Rumhantieren mit dem Imager bei jedem Update. In diesem Artikel zeige ich euch die modernen Moeglichkeiten: von der einfachen USB-SSD bis zum echten PXE-Netzwerk-Boot.
Wichtiger Hinweis vorab: Der frueheren PiServer-Loesung (aus dem Artikel von 2018) werden wir hier nicht mehr folgen. PiServer wird nicht mehr aktiv entwickelt, unterstuetzt Raspberry Pi OS Bookworm nicht und laeuft nur auf x86-Systemen. Es gibt heute deutlich bessere Alternativen.
Wann macht Booten ohne SD-Karte Sinn?
- Langzeitbetrieb: SD-Karten verschleissen, SSDs sind langlebiger und schneller
- Performance: USB-SSD oder NVMe ist um ein Vielfaches schneller als eine SD-Karte
- Mehrere Pis zentral verwalten: Ein NFS-Root-Server liefert das Betriebssystem an viele Pis gleichzeitig
- Flexible Testumgebungen: Verschiedene Images ohne Umflashen bereitstellen
Methode 1 (empfohlen): USB-SSD direkt bespielen
Fuer die meisten Anwendungsfaelle ist das die beste Loesung: Eine USB-SSD (oder beim Pi 5 mit dem M.2 HAT+ sogar NVMe) direkt mit dem Raspberry Pi Imager bespielen und dann davon booten.
Vorteil: Kein Netzwerk noetig, kein Server-Setup, funktioniert sofort. Der Pi 4 und Pi 5 koennen direkt von USB booten – ohne SD-Karte.
Was ihr braucht
- Raspberry Pi 4 oder Pi 5
- USB-SSD (z.B. Samsung T7 oder SanDisk Extreme)
- Raspberry Pi Imager (kostenlos)
Vorgehen
- Oeffnet den Raspberry Pi Imager und waehlt euer gewuenschtes OS
- Als Speichermedium waehlt ihr die USB-SSD (nicht die SD-Karte!)
- Konfiguriert vorab Hostname, SSH, WLAN und Benutzer ueber die Einstellungen (Zahnrad-Icon)
- Schreibt das Image auf die SSD
Danach muessen wir noch sicherstellen, dass der Pi von USB bootet.
Boot-Reihenfolge mit rpi-eeprom-config anpassen (Pi 4/5)
Beim Raspberry Pi 4 und 5 steuert das EEPROM die Boot-Reihenfolge. Startet einmal kurz mit einer SD-Karte und prueft die aktuelle Konfiguration:
|
1 |
rpi-eeprom-config |
Ihr seht dort u.a. die BOOT_ORDER. Eine gute Einstellung fuer „erst SD, dann USB“ ist:
|
1 |
sudo rpi-eeprom-config --edit |
Setzt den Wert auf:
|
1 |
BOOT_ORDER=0xf41 |
Das bedeutet: Zuerst SD-Karte (4), dann USB (1), dann Neustart (f). Speichert und rebooted – beim naechsten Start ohne SD-Karte bootet der Pi automatisch von der USB-SSD.
Wer auch Netzwerk-Boot als Fallback haben moechte:
|
1 |
BOOT_ORDER=0xf241 |
Das ist: SD (4) → USB (1) → Netzwerk/PXE (2) → Neustart (f).
Methode 2: Echter PXE-Netzwerk-Boot
PXE-Boot (Preboot Execution Environment) ist die technisch aufwendigere Loesung, aber ideal wenn ihr viele Pis zentral verwalten wollt. Der Pi laedt dabei sein Betriebssystem komplett ueber das Netzwerk von einem Server.
Wichtig: PXE-Boot funktioniert nur per Kabel-Netzwerk, nicht ueber WLAN.
Pi 4/5 fuer PXE-Boot konfigurieren
Zuerst aktivieren wir den Netzwerk-Boot im EEPROM. Bootet einmal mit SD-Karte und setzt die Boot-Reihenfolge:
|
1 |
sudo rpi-eeprom-config --edit |
|
1 |
BOOT_ORDER=0xf241 |
Speichert, rebooted. Ab jetzt probiert der Pi nach SD und USB auch den Netzwerk-Boot.
PXE-Server einrichten mit dnsmasq und NFS
Als Server eignet sich ein anderer Raspberry Pi 4/5, ein Ubuntu- oder Debian-Server. Wir brauchen dnsmasq als TFTP-Server und NFS fuer das Root-Filesystem.
Pakete installieren:
|
1 2 |
sudo apt update sudo apt install -y dnsmasq nfs-kernel-server |
TFTP-Verzeichnis anlegen und konfigurieren:
|
1 2 |
sudo mkdir -p /tftpboot sudo chmod 777 /tftpboot |
dnsmasq konfigurieren (neue Datei anlegen):
|
1 |
sudo nano /etc/dnsmasq.d/pxe.conf |
|
1 2 3 4 5 6 |
port=0 dhcp-range=192.168.1.255,proxy log-dhcp enable-tftp tftp-root=/tftpboot pxe-service=0,"Raspberry Pi Boot" |
Ersetzt 192.168.1.255 durch die Broadcast-Adresse eures Netzwerks.
dnsmasq neu starten:
|
1 |
sudo systemctl restart dnsmasq |
Boot-Dateien bereitlegen:
Die Boot-Dateien fuer den Client-Pi muessen im TFTP-Verzeichnis liegen. Ihr koennt sie von einer laufenden Raspberry Pi OS Installation kopieren (aus dem /boot/firmware/-Verzeichnis) oder direkt vom Raspberry Pi Imager-Image extrahieren.
|
1 |
sudo cp -r /boot/firmware/* /tftpboot/ |
NFS-Root einrichten:
|
1 2 |
sudo mkdir -p /nfs/client1 sudo rsync -xa --exclude /proc / /nfs/client1/ |
Dann den NFS-Export konfigurieren:
|
1 |
sudo nano /etc/exports |
|
1 |
/nfs/client1 *(rw,sync,no_subtree_check,no_root_squash) |
|
1 2 |
sudo exportfs -ra sudo systemctl restart nfs-kernel-server |
cmdline.txt auf dem TFTP-Server anpassen:
|
1 |
sudo nano /tftpboot/cmdline.txt |
Ersetzt den Root-Eintrag durch:
|
1 |
console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=192.168.1.100:/nfs/client1,vers=4.1,proto=tcp rw ip=dhcp rootwait elevator=deadline |
Dabei ist 192.168.1.100 die IP-Adresse eures PXE-Servers.
netboot.xyz als fertige PXE-Loesung
Wer einen komfortableren Einstieg sucht: netboot.xyz ist eine vorgefertigte PXE-Boot-Loesung, die eine Art Bootmenue ueber das Netzwerk bereitstellt. Von dort koennt ihr direkt verschiedene Betriebssysteme starten – Raspberry Pi OS, Ubuntu, Debian und viele mehr. Ideal fuer Testumgebungen.
Hinweis zu PiServer (veraltet)
Der PiServer aus dem Originalartikel (2018) war ein GUI-Tool der Raspberry Pi Foundation, das auf Raspberry Pi Desktop (x86) lief und automatisch einen DHCP/TFTP/NFS-Stack eingerichtet hat. Leider wird PiServer nicht mehr aktiv entwickelt, ist mit Raspberry Pi OS Bookworm nicht kompatibel und erfordert ein x86-System. Verwendet stattdessen eine der oben beschriebenen Methoden.
Tipps und Haeufige Probleme
| Problem | Loesung |
|---|---|
| Pi bootet nicht von USB-SSD | EEPROM BOOT_ORDER pruefen, USB-Gehaeuse muss UASP unterstuetzen |
| PXE-Boot schlaegt fehl | Kabel-Netzwerk pruefen, dnsmasq-Logs ansehen mit journalctl -u dnsmasq |
| Sehr langsames Booten per NFS | NFSv4 verwenden (vers=4.1), Gigabit-Netzwerk empfohlen |
| Dateisystem nach Absturz korrupt | ext4 auf dem NFS-Server oder overlayfs als Read-Only-Root verwenden |
