Raspberry Pi PXE boot: Teil 2

swarkn

swarkn

Stefans Schwerpunkte liegen im Umfeld von Betriebssystemen, serverbasierten Diensten und im weitesten Sinne in allgemeiner technischer Infrastruktur. Tagsüber mit strategischen IT-Themen beschäftigt, tackert er Nachts doch mal gerne ins schwarze Loch.
swarkn

Hallo zusammen,

Ja mei. Der Sommer ist rum und ich schulde euch noch immer den versprochenen Raspberry Pi PXE boot: Teil 2. Macht nichts. Jetzt kommen die noch fehlenden Infos, versprochen. 🙂

Für all diejenigen, die meinen ersten Teil mit der gesamten openSUSE Leap 42.1 spezifischen Konfiguration nicht gelesen haben, hier mein erster Teil.

Die richtigen Kernel-Parameter

Die Kernel-Parameter müssen in der Datei cmdline.txt im tftpboot-Verzeichnis angepasst werden:

sudo vi /srv/tftpboot/cmdline.txt

Meine cmdline.txt sieht komplett so aus:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/nfs rootfstype=nfs nfsroot=192.168.178.27:/srv/nfs/rpi3,udp,vers=3 smsc95xx.turbo_mode=N rw ip=dhcp rootwait elevator=deadline

Wichtig sind vor allem folgende Parameter für den PXE-Boot:

root=/dev/nfs
 --> verweist auf das nfs-device als root-Partition
rootfstype=nfs
 --> nur um Unklarheiten zu vermeiden: Ja, das Dateisystem ist vom Typ nfs
nfsroot=192.168.178.27:/srv/nfs/rpi3,udp,vers=3
 --> Die IP-Adresse ist natürlich die eures Boot-Servers. Aus Kompatibilitätsgründen verwenden wir UDP als Übertragungsprotokoll und verweisen gleichzeitig auf das NFS Protokoll-Version 3. Ohne diesen "downgrade" der Protokolle hat es nicht bei mir nicht funktioniert.

Anpassen des Filesystem Table

Da im Standard die Konfiguration der Datei fstab auf die SD-Karte für die root bzw. boot-Partition verweist, muss das natürlich auch noch geändert werden:

sudo vi /srv/nfs/rpi3/etc/fstab

Hier der Inhalt meiner fstab:

proc            /proc           proc    defaults          0       0
#/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

Wichtig ist vor allem, dass ihr die Verweise auf die SD-Karte auskommentiert. Die Zuweisung der root-Partition auf den NFS-Mountpoint habt ihr oben in der cmdline.txt schon hinterlegt. *daumenhoch*

Die wichtigsten Links auf die Seiten des Raspberry Pi Projektes hierzu sind:

Pi 3 booting part II: Ethernet
Network Boot Your Raspberry Pi

Als Fazit lässt sich sicher sagen, dass es durchaus reizbar ist seinen Raspberry Pi ohne eine SD-Karte betreiben zu können. Sicherlich auch, da bei häufigen I/O-Prozessen die Karte auch mal über den Jordan gehen kann. Wer aber Performance für den Zugriff auf das Dateisystem braucht kann auch darüber nachdenken die SD-Karte weiterhin als Datenablage zu verwenden. Sprich: Boot aus dem Netz, Datenbank auf der SD-Karte.

Als weiterführendes Projekt kann ich mir auch vorstellen den Bootserver so auszubauen, dass unterschiedliche Raspberry-Pi davon booten können. Dabei würde uns die von UNIX vererbte Ordner- und Dateistruktur sicher entgegenkommen. Eine Automation – z.B. auf Basis von cobbler – welche neue Raspberry Pi automatisch mit eigener Konfiguration versorgt, würde uns viel manuelle Arbeit abnehmen. Auf jeden Fall ein interessantes Projekt!

Viele Späße,
swarkn

pinterest