Voraussetzungen
DHCP Server
Zunächst muss ein vollwertiger DHCP Server aufgesetzt werden. Die in den herkömmlichen Routern eingebauten DHCP Server lassen sich leider nicht um die PXE Option erweitern.
Aus diesem Grund empfiehlt es sich den DHCP Server des Routers zu deaktivieren. Befindet sich ein DHCP auf der Basis von Windows Server im Einsatz muss zunächst die PXE Bootfunktion aktiviert werden.
Client
Die entsprechenden Clients müssen über eine PXE fähige Netzwerkschnittstelle verfügen. Hier ist es wichtig die PXE Netzwerk Boot Funktion auch im BIOS zu aktivieren. Ein Booten über die WLAN Schnittstelle ist nicht möglich.
Installation
Am Anfang werden die benötigten Pakete für den PXE Server unter Ubuntu mittels apt-get installiert.
sudo apt-get install tftpd-hpa nfs-kernel-server syslinux
Serverdienste
Bevor der PXE Server getestet werden kann, werden die einzelnen benötigten Dienste wie DHCP und NFS eingerichtet.
TFTP Server
Der TFTP Server wird zur Bereitstellung der Daten an die PXE Clients benötigt.
Vorerst wird der TFTP Server als Dämon gestartet. Hierzu die Datei /etc/default/tftp-hpa bearbeiten.
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="192.168.1.121:69"
TFTP_OPTIONS="-l --secure"
Zum Abschluss wird der TFTP Server neugestartet.
sudo service tftpd-hpa restart
NFS Server konfigurieren
Das tftpboot Verzeichnis in welchem sich später alle wichtigen Dateien befinden haben wir bereits erstellt.
Nun wird das Verzeichnis noch im NFS Server hinterlegt. Hierzu wird die Konfigurationsdatei /etc/exports angepasst. Alternativ kann man hier auch ein anderes Verzeichnis (z.B. /nfsroot) wählen.
/var/lib/tftpboot 192.168.1.0/255.255.255.0(rw,no_root_squash,no_subtree_check,async)
Wir gehen hierbei davon aus, dass sich alle Rechner mit Netzwerk 192.168.1.0 mit der Subnetzmaske 255.255.255.0 befinden. Diesen wird dadurch Schreibzugriff auf das Verzeichnis /srv/net gegeben.
Abschließend werden die Freigaben neu eingelesen.
sudo exportfs -ra
Konfiguration
DHCP
Im DHCP Server hinterlegen wir nun den Pfad zum PXE Server. Unter Linux wird dies auf dem Server in der Datei /etc/dhcp/dhcpd.conf festgelegt.
...
allow booting;
allow bootp;
next-server 192.168.1.121;
filename "/pxelinux.0";
...
Bei next-server wird die IP Adresse des PXE Servers eingegeben.
Dateien kopieren
Jetzt werden die notwendigen Dateien in das tftpboot Verzeichnis kopiert
sudo cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot
sudo cp /usr/lib/syslinux/menu.c32 /var/lib/tftpboot
und ein Unterverzeichnis für die PXE Dateien erstellt.
sudo mkdir /var/lib/tftpboot/pxelinux.cfg
Boot Konfiguration
Als Beispiel binden wir einen einfachen memtest ein.
mkdir /var/lib/tftpboot/memtest && cd /var/lib/tftpboot/memtest
wget http://www.memtest.org/download/5.01/memtest86+-5.01.bin.gz
gunzip memtest86+-5.01.bin.gz
mv memtest86+-5.01.bin memtest86
Die Standard Boot Konfiguration wird im Verzeichnis /var/lib/tftpboot/pxelinux.cfg als Datei default abgelegt.
DEFAULT menu.c32
ALLOWOPTIONS 0
PROMPT 0
TIMEOUT 0
MENU TITLE Server PXE Boot Server
LABEL memtest
MENU LABEL ^Memtest86+
KERNEL memtest/memtest86
Test
Zum Testen empfiehlt es sich einen Rechner über PXE booten zu lassen. Alternativ kann man natürlich auch Virtualbox zum Testen verwenden. Hierzu muss die virtuelle Netzwerkkarte auf Brücke stehen und direkt beim Start der VM ESC gedrückt werden. Über die Taste l kann dann vom Netzwerk gebootet werden.
Fazit
Die Konfiguration eines PXE Boot Server unter Ubuntu gestaltet sich zwar recht umfangreich ist aber dennoch überschaubar.
Gerade für häufig benötigte Tools wie z.B. GParted, Knoppix, etc. ist ein PXE Server äußerst praktisch.
Leave a comment