Good to Know Database

Raspbian Wheezy: PXE-Server einrichten


Die Abkürzung PXE steht für Preboot Execution Environment. Mit Hilfe einer PXE-fähigen Netzwerkkarte und einem entsprechenden Server können Sie einen Client direkt vom Netzwerk booten. Dies bietet sich zum Beispiel für Live-Systeme sowie für die Installation direkt vom Netzwerk an.

Beim Bootvorgang wird zuerst eine IP-Adresse über das DHCP-Protokoll (Dynamic Host Configuration Protocol) angefordert. Der DHCP-Server liefert neben der IP-Adresse, der Subnetzmaske und weiteren Netzwerkeinstellungen auch die IP-Adresse des PXE-Servers sowie den Dateinamen des Bootloaders. Sobald der PXE-Client eine IP-Adresse erhalten hat, stellt dieser eine Verbindung zum TFTP-Service auf dem PXE-Server her. Über das TFTP-Protokoll (Trivial File Transfer Protocol) wird der PXE-Client jetzt den Bootloader und die Bootmenükonfigurationsdatei herunterladen. Sobald Sie einen Booteintrag ausgewählt haben, werden die jeweiligen Bootdateien ebenfalls über TFTP heruntergeladen.

In der folgenden Anleitung soll Ihnen gezeigt werden, wie Sie auf Ihrem Raspberry Pi mit Raspbian als Betriebssystem einen PXE-Server einrichten können. Dabei werden alle notwendigen Dienste Schritt für Schritt installiert und konfiguriert.

Statische IP-Adresse konfigurieren

Bevor Sie mit der Installation und Konfiguration der benötigten Dienste beginnen können, müssen Sie für die Netzwerkschnittstelle eth0 eine feste IP-Adresse einrichten.

Öffnen Sie hierzu die Konfigurationsdatei /etc/network/interfaces mit einem Editor.

pi@raspberrypi ~ $ sudo vi /etc/network/interfaces

Versehen Sie hier die folgende Zeile mit einem Kommentarzeichen (#) am Zeilenanfang.

iface eth0 inet dhcp

Fügen Sie anschließend die folgenden Zeilen ein und passen die Einstellungen für Ihre Bedürfnisse an.

auto eth0
iface eth0 inet static
address 192.168.10.52
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1
nameserver 192.168.10.1

Nachdem Sie die Konfigurationsdatei angepasst haben, müssen Sie den Service networking neu starten.

pi@raspberrypi ~ $ sudo service networking restart

DHCP-Server einrichten

Nachdem die Netzwerkschnittstelle eth0 eine statische IP-Adresse erhalten hat, können Sie den DHCP-Server installieren und konfigurieren.

Der ISC DHCP-Server kann durch den folgenden Befehl installiert werden. Zuvor sollten Sie aber die lokale Paketdatenbank aktualisieren.

pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get install isc-dhcp-server

Hinweis: Während der Installation wird versucht den DHCP-Server zu starten. Aufgrund der standardmäßigen Konfiguration scheitert dieser Vorgang mit einer Fehlermeldung. In der Logdatei /var/log/syslog werden Sie die folgende Fehlermeldung vorfinden.

pi@raspberrypi ~ $ tail -f /var/log/syslog
[...]
Nov 12 20:04:13 raspberrypi dhcpd: Not configured to listen on any interfaces!

Nach der Installation müssen Sie die Konfigurationsdatei /etc/default/isc-dhcp-server anpassen.

pi@raspberrypi ~ $ sudo vi /etc/default/isc-dhcp-server

Geben Sie hier über die Option INTERFACES den Namen der Netzwerkschnittstelle an, auf welcher der DHCP-Server auf Anfragen lauschen soll.

INTERFACES="eth0"

Nachdem Sie die Schnittstelle festgelegt haben, können Sie die eigentliche Konfiguration des DHCP-Servers vornehmen. Zuerst sollten Sie die originale Konfigurationsdatei sichern.

pi@raspberrypi ~ $ sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup

Erstellen Sie jetzt eine neue Konfigurationsdatei.

pi@raspberrypi ~ $ sudo vi /etc/dhcp/dhcpd.conf

Fügen Sie hier die folgenden Zeilen ein und passen die Netzwerkadressen an Ihre Bedürfnisse an.

authoritative;

ddns-update-style none;

subnet 192.168.10.0 netmask 255.255.255.0 {
  default-lease-time 3600;
  max-lease-time 7200;

  option subnet-mask 255.255.255.0;

  option domain-name "raspberry.lan";

  next-server 192.168.10.52;
  filename "pxelinux.0";

  pool {
    range 192.168.10.100 192.168.10.199;
    }
  }

Nachdem Sie die Konfigurationsdatei erstellt haben, starten Sie den DHCP-Server neu.

pi@raspberrypi ~ $ sudo service isc-dhcp-server start

TFTP-Server einrichten

Als nächstes wird der TFTP-Server installiert und konfiguriert. Dieser wird vom PXE-Client zum Laden des Bootloaders, des Bootmenüs und der jeweiligen Bootdateien (zum Beispiel Kernel und Ramdisk bei einem Linux Live-System) benötigt.

Installieren Sie zuert das Paket tftpd-hpa.

pi@raspberrypi ~ $ sudo apt-get install tftpd-hpa

Hinweis: Auch hier versucht die Installationsroutine den Service tftpd-hpa direkt zu starten. Dies wird mit den folgenden Fehlermeldungen in der Logdatei /var/log/syslog fehlschlagen.

pi@raspberrypi ~ $ tail -f /var/log/syslog
[...]
Nov 12 20:06:49 raspberrypi in.tftpd[3801]: cannot open IPv6 socket, disable IPv6: Address family not supported by protocol
Nov 12 20:06:49 raspberrypi in.tftpd[3801]: Cannot set nonblock flag on socket: Bad file descriptor

Deshalb müssen Sie zuerst die Konfigurationsdatei /etc/default/tftpd-hpa anpassen.

pi@raspberrypi ~ $ sudo vi /etc/default/tftpd-hpa

Suchen Sie hier die TFTP-Optionen, welche standardmäßig wie folgt aussehen.

TFTP_OPTIONS="--secure"

Erweitern Sie diese um die Option --ipv4 und speichern die Konfigurationsdatei ab.

TFTP_OPTIONS="--secure --ipv4"

Jetzt können Sie den tftpd-hpa mit dem folgenden Befehl starten.

pi@raspberrypi ~ $ sudo service tftpd-hpa start

PXE-Server einrichten

In diesem Abschnitt wird der Bootloader für die PXE-Clients bereitgestellt und die Konfigurationsdatei für das Bootmenü erstellt. Des Weiteren wird ein einfacher Booteintrag erstellt, welcher lediglich das Booten von der internen HDD des PXE-Clients ermöglichen soll.

Installieren Sie zuerst das Paket syslinux-common.

pi@raspberrypi ~ $ sudo apt-get install syslinux-common

Anschließend kopieren Sie die benötigten Dateien aus dem Syslinux-Installationsverzeichnis ins TFTP-Hauptverzeichnis.

pi@raspberrypi ~ $ sudo cp /usr/lib/syslinux/chain.c32 /usr/lib/syslinux/menu.c32 /usr/lib/syslinux/vesamenu.c32 /usr/lib/syslinux/pxelinux.0 /srv/tftp/

Erstellen Sie jetzt das Verzeichnis pxelinux.cfg im TFTP-Hauptverzeichnis, in welchem die PXE-Konfigurationsdateien abgelegt werden.

pi@raspberrypi ~ $ sudo mkdir /srv/tftp/pxelinux.cfg

Beim Booten eines Clients über PXE versucht dieser eine Konfigurationsdatei mit seiner MAC-Adresse und einem vorangstellten 01 als Dateinamen zu finden. Zum Beispiel wird bei der MAC-Adresse 00:11:22:33:44:55 nach der Datei 01-00-11-22-33-44-55 gesucht. Existiert diese nicht, wird nach einer Datei mit der hexadezimalen IP-Adresse als Dateinamen gesucht. Bei der beispielhaften IP-Adresse 192.168.10.100 wird also nach der Datei C0A80164 gesucht. Wird auch diese nicht vorgefunden, wird die hexadezimale Schreibweise der IP-Adresse fortlaufend um eine Stelle gekürzt. In diesem Fall wird also der Reihe nach nach den Dateien C0A8016, C0A801, C0A80, C0A8, C0A, C0 und C gesucht. Konnte der PXE-Client noch immer keine Konfigurationsdatei finden, versucht dieser noch die Datei default zu laden bevor er den Vorgang mit einer Fehlermeldung beendet.

Damit alle Clients die gleiche Konfiguration erhalten wird hier nur die Konfigurationsdatei default erstellt.

pi@raspberrypi ~ $ sudo vi /srv/tftp/pxelinux.cfg/default

Fügen Sie in diese Datei die folgenden Zeilen ein. Dadurch werden allgemeine Einstellungen für die Darstellung des PXE-Bootmenüs vorgenommen und ein erster Booteintrag angelegt, welcher das Booten von der internen Festplatte ermöglicht.

default vesamenu.c32
timeout 100
prompt 0
noescape 1

menu title PXE Boot Options

label hdd
  menu label Boot from local hard disk
  menu default
  localboot 0x80

Funktionstest

Nachdem die notwendigen Konfigurationen vorgenommen wurden, verbinden Sie einen PXE-fähigen Client mit Ihrem Netzwerk und starten diesen vom Netzwerk. Der PXE-Client sollte jetzt eine IP-Adresse vom DHCP-Server zugewiesen bekommen und anschließend das PXE-Bootmenü laden und anzeigen.

Sollten Sie Probleme feststellen, überprüfen Sie die Logdatei /var/log/syslog auf relevante Fehlermeldungen.

pi@raspberrypi ~ $ tail -f /var/log/syslog

Funktioniert der PXE-Server soweit, können Sie weitere Bootmenüeinträge erstellen und die dazugehörigen Bootdateien im TFTP-Verzeichnis /srv/tftp/ hinterlegen.


Dieser Eintrag wurde am 16.11.2012 erstellt und zuletzt am 25.09.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_36_1974.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer