Workshop: PXE-Boot mit Linux

Fernzünder

26. September 2007, 11:22 Uhr | Andreas Stolzenberger

Mit einem passenden PXE-Boot-Server installieren Administratoren Linux-Server und -Clients automatisiert direkt über das LAN, ohne CDs und auf Wunsch auch ohne Interaktion eines Benutzers.

Das grafische Tool »redhat-config-kickstart« listet alle Konfigurations-optionen einer Linux-Installation auf und sichert diese in einer Datei. Später dient die Datei zur unbeaufsichtigten Maschineninstallation.

DHCP-Konfiguration

Die Konfiguration des DHCP-Servers steht in der Datei /etc/dhcp.conf. Dort legen Sie zunächst die globalen Einstellungen des DHCP-Servers fest und geben dann einen IP-Adressbereich für die automatische IP-Vergabe an. In unserem Test-Setup arbeitet der PXE-Server mit dem Namen »srv01.nwc6.local« auf der statischen IP-Adresse 192.168.6.1. Den DNS-Dienst übernimmt die Firewall auf 192.168.6.250, die zugleich als Default-Gateway auftritt:

option domain-name-servers192.168.6.250;

option routers 192.168.6.250;

option domain-name»nwc6.local«;

option broadcast-address 192.168.6.255;

option subnet-mask255.255.255.0;

Da unser PXE-Server zugleich als CIFS/SMB-Dateiserver arbeitet, listet ihn die DHCP-Konfiguration als NetBIOS-Nameserver.

option netbios-name-servers 192.168.6.1;

Das Netzwerk arbeitet ohne dynamische DNS-Updates. Diese Funktion müssen Sie entweder komplett konfigurieren oder explizit ausschalten, sonst startet der DHCP-Server nicht.

ddns-update-style none;

Nach den globalen Optionen folgt die Definition des DHCP-Adressegments. Hier stehen der zu verwendende Adressbereich und der Name der PXE-Bootdatei. Der Adressbereich ist mit dem Parameter »dynamic-bootp« versehen, der die Remote-Boot-Funktion aktiviert.

# nwc6.local

subnet 192.168.6.0 netmask255.255.255.0 {

ddns-updates off;

filename »pxelinux.0«;

range dynamic-bootp192.168.6.100192.168.6.199;

}

Möchten Sie einen DNS-Server auf dem gleichen Rechner verwenden und dynamische Updates zulassen, gehen Sie wie folgt vor: Installieren und konfigurieren Sie den Bind-9-Nameserver mit einer Primary-Forward-Zone für Ihr Adresssegment. Die Bind-9-Installation generiert dabei auch eine Schlüsseldatei für dynamische Updates. Nur wenn DHCP- und DNS-Server den gleichen Schlüssel einsetzen, nimmt der DNS-Server die Updates an. Aktivieren Sie in der Forward-Zone des DNS die Funktion für dynamische Updates, und hinterlegen Sie dort den Schlüssel. Die gleichen Schritte nehmen Sie beim DHCP-Server im zugehörigen Subnet vor. Wie die exakten Konfigurations-Parameter dafür lauten, finden Sie in den Man-Pages zu dhcp.conf und named sowie in den Howtos. Starten Sie nach Abschluss der Konfiguration den Dienst neu:

/etc/init.d/dhcp restart

Achten Sie darauf, dass Sie im LAN-Segment nur einen DHCP-Server verwenden, sonst kommt es zu Problemen.

TFTP-Server

Der TFTP-Server startet über den Xinet-Daemon. Die Installation des TFTP-Dienstes generiert ein Verzeichnis /tftpboot, das die Boot- und Konfigurationsdateien für Clients aufnimmt. Um den Dienst zu aktivieren, gehen Sie in das Verzeichnis /etc/xinetd.d. Dort liegen die Grundkonfigurationsdateien aller Services, die xinetd verwaltet. Öffnen Sie die Datei tftp mit einem Editor und ändern die Zeile

disable = yes

auf

disable = no

Anschließend starten Sie den xinetd-Prozess neu:

/etc/init.d/xinetd restart

Sollte Sie das /tftpboot-Verzeichnis direkt im Root ihres Systems zu sehr stören, können Sie es auch in ein anderes Unterverzeichnis verschieben und in /etc/xinetd.d/tftp entsprechend die Verzeichniszeile

server_args = -s /tftpboot

ändern.

Anschließend benötigen Sie den passenden Installations-Kernel und den PXE-Bootloader. Installieren Sie zunächst das syslinux-Paket, falls es sich nicht bereits auf dem Rechner befindet. Kopieren Sie den Bootloader aus dem Syslinux-Verzeichnis in das Boot-Verzeichnis

cp /usr/lib/syslinux/pxlinux.0 /tftpboot/

Legen Sie dann die erste CD der Linux-Distribution ein, die Sie über PXE anbieten möchten, und mounten Sie diese. Redhat legt im CD-Verzeichnis /images/pxeboot einen PXE-tauglichen Installationskernel mit passender Initial-Ramdisk ab. Kopieren Sie beide Dateien vmlinuz und initrd.img in das /tftpboot-Verzeichnis.

Im nächsten Schritt erzeugen Sie die Konfigurationsdatei des Bootloaders. Legen Sie zunächst das Verzeichnis /tftpboot/pxelinux.cfg an. Dort sucht der Loader später nach gültigen Konfigurationsdateien. In diesem Verzeichnis erstellen Sie eine Datei namens default mit folgendem Inhalt:

default install

prompt 1

timeout 600

display pxeboot.msg

Diese Parameter weisen den Bootloader an, auf dem per PXE startenden Client zunächst den Inhalt der Textdatei /tftpboot/pxeboot.msg anzuzeigen. In dieser Datei sollten Sie dokumentieren, welche Optionen zur Verfügung stehen. Danach wartet pxelinux 60 Sekunden auf eine Benutzereingabe. Drückt der Anwender einfach <ENTER>, gibt »install« ein oder tut einfach 60 Sekunden lang gar nichts, veranlasst es den Loader, die Aktion »install« auszuführen, die später in der Konfigurationsdatei genau beschrieben wird:

label install

kernel vmlinuz

append initrd=initrd.img

Mit dem Label-Segment gibt der Anwender die verschiedenen Aktionen vor, die beim PXE-Boot zur Verfügung stehen. »Install« lädt einfach den im /tftboot hinterlegten Kernel und die passende initrd.img. Bei Fedora Core und Redhat 9 läuft dann auf dem Client die interaktive Installation an. Zudem können Sie folgende Aktion in default eintragen:

label local

localboot 0

Tippt der Anwender am Prompt das Kommando »local« ein, versucht pxeboot den Client von der lokalen Platte aus zu starten und bricht den LAN-Boot-Prozess ab.

Weitere Aktionen fügen Sie später hinzu, wenn Sie Kickstart-Installationen verwenden wollen.

NFS-Server

Für die eigentliche Linux-Installation über das LAN muss der Client Zugriff auf die Distribution erhalten. Dazu kopieren Sie den Inhalt aller Distributions-CDs in ein Verzeichnis des PXE-Servers und geben dieses über NFS frei. Für den Workshop benutzen wir die Fedora-Core-1-Distribution und kopieren alle drei CDs in das Verzeichnis /export/fc1. Übergehen Sie dabei die Warnmeldungen des cp-Kommandos, wenn es die TRANS.TBL-Dateien überschreiben möchte, diese Dateien werden nicht benötigt.

Anschließend legen Sie eine Read-only-Freigabe des Verzeichnisses für alle Maschinen an. Editieren Sie dazu die Datei /etc/exports wie folgt:

/export/fc1 *(sync,ro,no_root_squash)

Danach starten Sie den NFS-Server neu

/etc/init.d/nfs restart

Jetzt können Sie bereits einen Client über PXE starten und die Option »Install« auswählen.

Der Client wird den Kernel laden und die Installation von Fedora-Core-1 beginnen. Nach dem Laden aller Treiber fragt das Installationsprogramm nach der Dateiquelle. Hier wählen Sie »NFS« aus und geben im folgenden Dialog die IP-Adresse des PXE-Boot-Servers und das NFS-Verzeichnis /export/fc1 an.

Steht die Verbindung, startet die Linux-Installation das Redhat-Setup-Tool Anaconda, mit dem Sie dann interaktiv den Linux-PC nach Ihren Anforderungen konfigurieren und einrichten können.

Kickstart

Redhat-Distributionen unterstützen eine automatisierte Installation. Dazu gibt es eine Kickstart-Konfigurationsdatei. Diese enthält alle Optionen, die Sie normalerweise während einer interaktiven Anaconda-Installation eingeben. Das beginnt bei der Plattenpartitionierung und geht über die Paketauswahl bis hin zur Konfiguration des X-Servers und des Admin-Passworts. Die Datei übergeben Sie bei der Installation einfach als Kernel-Parameter, und Anaconda führt die Installation ohne Benutzereingabe durch. Redhat 9 und den Fedora-Core-Distributionen liegt ein grafisches Tool bei, das sehr einfach eine Kickstart-Datei erstellt. Starten Sie dazu X mit oder ohne Gnome auf ihrem PXE-Server und führen Sie das Programm redhat-config-kickstart aus. Das Programm läuft auch auf einem PC-X-Server auf einem Windows- oder Linux-Client im Netzwerk, falls ihr PXE-Server ohne X arbeitet. Das Tool führt alle zu konfigurierenden Punkte nacheinander auf. Am Ende sichert es eine .cfg-Datei. Sie können mehrere verschiedene dieser Dateien anlegen und als Aktion im PXE-Bootloader angeben. Wichtig ist hierbei nur, dass Sie als Installationsmedium stets den NFS-Server und die zuvor angelegten Freigaben angeben. Für den Workshop generieren wir zwei Kickstart-Dateien, eine für Linux-Server ks-server.cfg und eine für Linux-Clients ks-client.cfg.

Die fertigen Kickstart-Konfigurationsdateien legen Sie unter /export/fc1 ab. Dann passen Sie /tftpboot/pxelinux.cfg/default entsprechend an:

label kickclient

kernel vmlinuz

append initrd=initrd.imgks=nfs:192.168.6.1:/export/fc1/ks-client.cfg

label kickserver

kernel vmlinuz

append initrd=initrd.img ks=nfs:192.168.6.1:/export/fc1/ks-server.cfg

Zudem sollten Sie diese Aktionen in /tftpboot/pxeboot.msg entsprechend dokumentieren. Starten Sie nun einen Client über PXE, können Sie neben der interaktiven Konfiguration eine der vorgefertigten Kickstart-Installationen wählen. Beachten Sie dabei aber, dass Kickstart ohne weitere Rückfrage die Platte ihres Clients partitioniert und formatiert.

Mehrere Linux-Versionen

Natürlich können Sie ihren PXE-Boot-Server weiter ausbauen, so dass er verschiedene Linux-Versionen zur Installation anbietet. Dazu legen Sie einfach mehrere über NFS freigegebene Verzeichnisse mit den jeweiligen Distributions-Dateien an. Zudem hinterlegen Sie die Kernel der verschiedenen Linux-Versionen unter verschiedenen Namen in /tftpboot ab und passen die Datei /tftpboot/pxelinux.cfg/default entsprechend an.

Möchten Sie beispielsweise neben Fedora-Core-1 auch die Netzwerkinstallation der neuen Version Fedora-Core-2 ermöglichen, gehen Sie wie folgt vor:

Kopieren Sie alle vier CDs der Distribution in das Verzeichnis /export/fc2 ihres PXE-Servers, und geben Sie das Verzeichnis wie beschrieben über NFS im Netz-werk frei. Kopieren Sie aus /export/fc2/images/pxeboot den Kernel und die Initiale-Ramdisk mit geänderten Namen in das /tftpboot-Verzeichnis.

cp /export/fc2/images/pxeboot/vmlinuz/tftpboot/vmlinuz-fc2

cp /export/fc2/images/pxeboot/initrd.img/tftpboot/initrd-fc2.img

Jetzt brauchen Sie nur noch die PXE-Konfigurationsdatei unter /tftpboot/pxelinux.cfg/default entsprechend anzupassen, und Sie können über das LAN auf Wunsch FC1 oder FC2 starten. Zudem lassen sich verschiedenste Klickstart-Konfigurationen für beide Systeme hinterlegen.

Neben Systeminstallationen können Sie auch Rescue-Systeme auf ihrem PXE-Server hinterlegen, so dass PCs mit Startproblemen über das LAN hochfahren.

Das PXE-Boot-Verfahren lässt sich nicht nur für die System-Installation verwenden. Mit der passenen Konfiguration starten Sie Diskless-Clients und -Server über das LAN. Den Zugriff auf das Root-Dateisystem erhalten diese Maschinen dann über NFS-Freigaben. Auch lässt sich PXE dazu verwenden, Server aufzusetzen, die ihre Platten über ein iSCSI-SAN ansprechen. Der PXE-Boot erspart dabei den teuren iSCSI-Adapter. Vom PXE-Server kann die Maschine einen Kernel mit dem Software-iSCSI-Initiator laden und im weiteren Verlauf der Startphase die Root-Platte über iSCSI mounten. [ ast ]


Jetzt kostenfreie Newsletter bestellen!

Matchmaker+