Aus Raspberry Pi Geek 02/2018

RasPi via Netzwerk booten (Seite 3)

Vor dem Start des DNS-Servers gilt es, noch einige Vorbereitungen zu treffen. Da sind zunächst einmal die nötigen Verzeichnisse anzulegen. Der DNS-Server hält für jeden Client ein passendes Boot-Image in einem Verzeichnis bereit, dessen Name seiner IP-Adresse entspricht. Im Anschluss kopieren Sie deren Images dort hin (Listing 6).

Listing 6

 

$ sudo mkdir -p /tftpboot/192.168.1.50/
$ sudo mkdir -p /tftpboot/192.168.1.51/
$ sudo chmod -R 777 /tftpboot
$ cp -r /boot/* /tftpboot/192.168.1.50/
$ cp -r /boot/* /tftpboot/192.168.1.51/

Nach Abschluss der Vorbereitungen melden Sie Dnsmasq zunächst als Dienst im System an, das ihn zukünftig beim Booten automatisch mitlädt. Dann starten Sie den Dienst neu, um die Änderungen zu übernehmen (Listing 7).

Listing 7

 

$ sudo systemctl enable dnsmasq.service
$ sudo systemctl restart dnsmasq.service

Prüfen Sie anschließend mithilfe des Tools Tcpdump, ob die aktuelle Konfiguration fehlerfrei funktioniert. Dazu öffnen Sie zwei Terminalfenster: In dem einem sehen Sie sich mit sudo tcpdump -i eth0 port bootpc den Netzwerkverkehr an, im anderen mit tail /var/log/daemon.log -f das laufende Logfile des TFTP-Servers. Sobald Sie nun die Clients anschalten, sollte die Ausgabe von Tcpdump so aussehen wie in Listing 8.

Listing 8

 

$ sudo tcpdump -i eth0 port bootpc
15:31:09.150590 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from b8:27:eb:e7:dc:af (oui Unknown), length 320
15:31:09.162386 IP 192.168.1.200.bootps > 255.255.255.255.bootpc: BOOTP/DHCP, Reply, length 314
15:31:09.167906 IP 192.168.1.1.bootps > 255.255.255.255.bootpc: BOOTP/DHCP, Reply, length 304
15:31:16.613093 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from b8:27:eb:e7:dc:af (oui Unknown), length 320
15:31:16.623357 IP 192.168.1.200.bootps > 255.255.255.255.bootpc: BOOTP/DHCP, Reply, length 314
15:31:16.627890 IP 192.168.1.1.bootps > 255.255.255.255.bootpc: BOOTP/DHCP, Reply, length 304
15:31:19.615334 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from b8:27:eb:24:24:46 (oui Unknown), length 320
15:31:19.627153 IP 192.168.1.200.bootps > 255.255.255.255.bootpc: BOOTP/DHCP, Reply, length 314
15:31:19.628146 IP 192.168.1.1.bootps > 255.255.255.255.bootpc: BOOTP/DHCP, Reply, length 304
[...]

Im Log des TFTP-Servers sehen Sie, wie er Dateien an die Clients sendet. Sofern diese an Monitore angeschlossen sind, können Sie zumindest den Splash-Screen mit den vier Himbeeren sehen. Wenn sich alles wie beschrieben verhält, booten die Clients den Kernel einwandfrei – allerdings fehlt noch das eigentliche Betriebssystem.

NFS-Server einrichten

Nun gilt es, den NFS-Server (siehe Kasten “NFS”) einzurichten. Dessen Netzwerkfreigaben steuert die Datei /etc/exports. Fügen Sie dieser die zwei Zeilen aus Listing 9 hinzu und starten Sie den NFS-Server neu. Danach steht das Netzwerk-Dateisystem zum Einsatz bereit.

Listing 9

 

/nfs/client1 *(rw,sync,no_subtree_check,no_root_squash)
/nfs/client2 *(rw,sync,no_subtree_check,no_root_squash)

Außerdem sorgen Sie dafür, dass der Server-Dienst beim nächsten Reboot automatisch startet (Listing 10). Gleichzeitig aktivieren Sie den Dienst Rcpbind, den der NFS-Server benötigt, um seine Netzwerkkommunikation aufzubauen.

Listing 10

 

$ sudo systemctl enable rpcbind
$ sudo systemctl restart rpcbind
$ sudo systemctl enable nfs-kernel-server
$ sudo systemctl restart nfs-kernel-server

NFS

Das Network File System NFS erlaubt es, Dateien eines anderen Rechners lokal einzuhängen. Dazu stellt ein NFS-Server beliebige lokale Dateisysteme im Netzwerk zur Verfügung – man spricht hier vom Exportieren. Die Clients, die ein solches Filesystem verwenden wollen, müssen es wie ein lokales Dateisystem einhängen (mounten). Die Schritte zur Installation und Konfiguration eines NFS-Servers zeigen die ersten beiden Zeilen von Listing 11.

Nach der Installation des Server-Diensts passen Sie dessen Konfigurationsdatei /etc/exports an. Um Dateisysteme zu exportieren, teilen Sie dem Server mit, welches davon er für welche Clients mit welchen Parametern bereitstellen soll:

/home/pi 192.168.3.0/24(rw,sync,no_subtree_check)

Achten Sie hierbei darauf, den IP-Bereich Ihres eigenen Netzwerks zu verwenden. Um die Änderungen anzuwenden, starten Sie den Server neu (Listing 11, Zeile 4 und 5). Um ein NFS-Filesystem auf einem Client zu mounten, verwenden Sie den Befehl aus Listing 12.

Listing 11

 

$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install nfs-kernel-server nfs-common rpcbind
[... Konfiguration ...]
$ sudo service rpcbind restart
$ sudo service nfs-kernel-server restart

Listing 12

 

$ sudo mount -t nfs Server-IP:/home/pi /home/User/pi

Letzte Handgriffe

Der Server übermittelt dem Client beim Booten die Datei /tftpboot/Client-IP/cmdline.txt mit der Information, dass für ihn ein Filesystem bereitsteht. Darin steht, von wo sich der Client das Dateisystem holen soll, das für ihn bereitsteht. Ein Beispiel für eine solche Datei zeigt Listing 13.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben