Aus Raspberry Pi Geek 04/2014

RasPi als PXE-Server: Diskless Linux (Seite 2)

Listing 4

 

$ sudo mkdir -p /srv/data/nfs/ubuntu/fritz-pc
$ sudo exportfs -ra
$ sudo showmount -e
Export list for pi.homenet.de:
/data/nfs/desinfect2013         192.168.100.0/24
/srv/data/nfs/knoppix7.2        192.168.100.0/24
/srv/data/nfs/ubuntu/fritz-pc   fritz-pc.homenet.de

Damit der Client später auch im Root-Verzeichnis schreiben darf, sind besonders die Optionen rw und no_root_squash wichtig. Die Schalter async und no_subtree_check dienen der Leistungsoptimierung [1]. Weitergehende Informationen zum Network File System (NFS) finden Sie im Linux-NFS-Howto von Christopher Smith [2]. Nach dem Erstellen der Freigaben mounten Sie diese mit den Kommandos aus Listing 5 und kopieren das System auf dem RasPi-PXE-Server.

Listing 5

 

$ sudo mount -t nfs -o nolock pi:/data/nfs/ubuntu/fritz-pc /mnt
$ cp -ax /. /mnt
$ cp -ax /dev/. /mnt/dev/.

Alle weiteren Konfigurationsanpassungen müssen Sie nun nicht mehr auf dem Client vornehmen, sondern Sie können direkt auf dem RasPi arbeiten. Es gilt, das für den Netzwerkstart erstellte Ramdisk-Image ins /boot-Verzeichnis zu kopieren und die Datei /etc/fstab entsprechend anzupassen. Danach legen Sie die PXE-Boot-Umgebung und eine entsprechende Menüdatei für den Client an.

TFTP konfigurieren

Wir sollten nicht mehr die Datei /srv/tftpboot/pxelinux.cfg/default verwenden, sondern eine eigene Bootdatei speziell für unseren Client-Rechner erzeugen. Zur Identifizierung dieser Datei dient die MAC- oder IP-Adresse des Clients.

Während der Client startet, lässt sich aus der /var/log/messages entnehmen, dass unser Client die MAC-Adresse 90:e6:ba:3d:1d:95 besitzt und vom DHCP-Server die IP-Adresse 192.168.100.50 zugewiesen bekommt (Listing 6).

Listing 6

 

$ tail -f /var/log/messages | grep dhcpd
[...]
2014-03-25T12:16:53.193656+01:00 pi dhcpd: DHCPREQUEST for 192.168.100.50 from 90:e6:ba:3d:1d:95 via eth1
2014-03-25T12:16:53.194144+01:00 pi dhcpd: DHCPACK on 192.168.100.50 to 90:e6:ba:3d:1d:95 via eth1
2014-03-25T12:17:13.774170+01:00 pi dhcpd: DHCPINFORM from 192.168.100.50 via eth1
2014-03-25T12:17:13.774641+01:00 pi dhcpd: DHCPACK to 192.168.100.50 (90:e6:ba:3d:1d:95) via eth1

PXE sucht zuerst eine Menüdatei, die der MAC-Adresse des Clients mit vorangestelltem 01- entspricht, in unserem Fall also 01-90-e6-ba-3d-1d-95. Gibt es kein solches File, dann sucht das System Dateien, die der hexadezimalen Schreibweise der IP-Adresse oder Substrings daraus entsprechen. Die IP-Adresse unseres Clients lautet in hexadezimaler Schreibweise C0:A8:64:32. Die Suchreihenfolge (Listing 7) erlaubt so, Menüdateien für Gruppen von IP-Adressen zu erzeugen.

Listing 7

 

01-90-e6-ba-3d-1d-95
C0A86432
C0A8643
C0A864
C0A86
C0A8
C0A
C0
C
default

Sie kopieren die Datei default nun nach 01-90-e6-ba-3d-1d-95 (Listing 8) und erweitern die Kopie dann entsprechend Listing 9 – passen Sie auch hier wieder die Rechnernamen entsprechend an. Kopieren Sie die Ramdisk, legen Sie den Verzeichnispfad für den Client an und kopieren Sie Kernel sowie Ramdisk in das neue Verzeichnis (Listing 10). Abschließend bearbeiten Sie noch die Datei /srv/data/nfs/ubuntu/fritz-pc/etc/fstab und passen diese gemäß Listing 11 an.

Listing 8

 

$ cd /srv/tftpboot/pxelinux.cfg
$ cp default 01-90-e6-ba-3d-1d-95

Listing 9

 

[...]
LABEL Ubuntu Diskless fritz-pc
MENU LABEL Ubuntu Diskless fritz-pc
KERNEL /ubuntu/ vmlinuz-3.11.0-12-generic
APPEND netboot=nfs nfsroot=192.168.100.2:/srv/data/nfs/ubuntu/fritz-pc rw initrd=/ubuntu/fritz-pc/vmlinuz-3.11.0-12-generic

Listing 10

 

$ sudo cp /srv/data/nfs/ubuntu/fritz-pc/home/fritz/initrd.img-3.11.0-12-generic /srv/data/nfs/ubuntu/fritz-pc/boot/.
$ sudo mkdir -p /srv/tftpboot/ubuntu/fritz-pc
$ cd /srv/tftpboot/ubuntu/fritz-pc
$ sudo cp /srv/data/nfs/ubuntu/fritz-pc/boot/initrd.img-3.11.0-12-generic .
$ sudo cp /srv/data/nfs/ubuntu/fritz-pc/boot/vmlinuz-3.11.0-12-generic .

Listing 11

 

proc      /proc  proc  defaults  0  0
/dev/nfs  /      nfs   defaults  1  1

Verschiedene Dokumentationen empfehlen, in der Datei /etc/networks/interfaces die Konfiguration für die Netzwerkkarte auto auf manual umzustellen. Dies soll verhindern, dass das System die Netzwerkkarte während des Bootvorgangs erneut konfiguriert und dabei die NFS-Verbindung verloren geht. Wir empfehlen jedoch, die Konfiguration nicht zu ändern – der Tipp führt eher dazu, dass der vom DHCP-Server mitgeteilte Name-Server außer Acht bleibt.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 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