Linux-Distribution

Ubuntu: Installation und Booten übers Netz (PXE)

17.08.2015 von Thorsten Eggeling
Ubuntu muss nicht auf der lokalen Festplatte liegen. Es lässt sich auch über das Netzwerk installieren und zentral administrieren.

PXE steht für Preboot Execution Environment und ist eine Funktion, die in der Firmware des Netzwerkadapters oder der Hauptplatine steckt. Darüber lassen sich Systeme booten, die auf einem Netzwerklaufwerk liegen. Typisches Einsatzgebiet ist die regelmäßige Neuinstallation auf Rechnern in Schulungsräumen. Es ist außerdem möglich, ein komplettes System über das Netzwerk zu laden und PCs ohne eigene Festplatte zu betreiben.

1. Voraussetzungen für PXE

Das Bios beziehungsweise die Netzwerkkarte müssen PXE unterstützen. Rufen Sie das Bios-Setup auf, indem Sie kurz nach dem Einschalten des PCs die Entf-Taste, Esc oder F2 drücken. Die Konfiguration für PXE finden Sie meist unter „Onboard Devices Configuration“, „Boot“ oder „BIOS Features“. Aktivieren Sie zuerst Optionen wie „LAN PXE Boot Option ROM“ und „Ipv4 PXE Support“. Wenn der PC im Uefi-Modus bootet, aktivieren Sie die Bios-Emulation CSM (Compatibility Support Module), die Sie unter Bezeichnungen wie „CSM Support“, „UEFI with CSM“ oder „UEFI and Legacy“ finden.

Aktivieren Sie im Bios eine Option wie „Lan PXE Boot Option ROM“, und konfigurieren Sie den Netzwerkadapter als erstes Bootgerät.

PXE ist zwar auch über Uefi möglich, jedoch nicht mit der von uns in diesem Artikel vorgeschlagenen Konfiguration. Speichern Sie die Änderungen, und rufen Sie das Bios-Setup erneut auf. Setzen Sie den Netzwerkadapter an die erste Stelle in der Liste der Bootgeräte. Bei vielen PCs lässt sich auch ein Bootmenü über Tasten wie Esc, F9, oder F12 aufrufen. Dann können Sie manuell zwischen dem Start von der Festplatte oder über das Netzwerk wählen.

Als System für die Installation und das Booten übers Netzwerk verwenden wir Ubuntu 14.04 LTS und 15.04. Wir gehen davon aus, dass sich in Ihrem Netzwerk bereits ein PC befindet, der unter Ubuntu ab Version 14.04 läuft und den Sie als PXE-Server verwenden wollen. Andere Systeme sind möglich, dazu müssten Sie aber das in diesem Artikel verwendete Bash-Script anpassen.


2. Server für PXE konfigurieren

Der PXE-Server muss immer über die gleiche IP-Nummer erreichbar sein. Eine feste IP-Adresse lässt sich in allen DSL-Routern konfigurieren.

Ein Client-PC findet den PXE-Server im Netzwerk über eine DHCP-Anfrage (Dynamic Host Configuration Protocol). Für DHCP ist im Normalfall der DSL-Router zuständig. Da es nur einen DHCP-Server im Netz geben darf, kommt dnsmasq als Proxy-DHCP-Server zum Einsatz. dnsmasq lässt sich so konfigurieren, dass DHCP-Anfragen an den Router weitergeleitet, aber PXE-Anfragen verarbeitet werden. dnsmasq kann einzelne Dateien ausliefern, die für die Netzwerkinstallation von Ubuntu erforderlich sind (Punkt 3). Sorgen Sie im Router dafür, dass sich die IP-Nummer des Servers nicht ändert. Bei einer Fritzbox rufen Sie die Konfigurationsseite auf und gehen auf „Heimnetz -> Netzwerk“. Sie erhalten die Liste Ihrer Netzwerkgeräte. Klicken Sie bei der IP-Adresse Ihres Linux-Servers auf „Bearbeiten“, und aktivieren Sie „Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen.“

Installation per Script: Damit Sie die Befehle für die Installation nicht eintippen müssen, haben wir ein Installationspaket vorbereitet. Laden Sie es hier herunter, und entpacken Sie die tar.gz-Datei in Ihr Home-Verzeichnis, etwa in den Ordner „pxe“. Schalten Sie das Script mit diesen Zeilen ausführbar:

cd ~/pxe chmod 755 pxe_install.sh

„pxe_install.sh“ legt Konfigurationsdateien nur im eigenen Verzeichnis ab. Nachdem Sie ein System erstellt haben (siehe die Punkte 3 bis 5), rufen Sie folgende Befehlszeile auf, um die Dateien an die richtige Position zu kopieren:

sudo pxe_install.sh copy

Sollten im Zielverzeichnis bereits Dateien gleichen Namens vorhanden sein, tippen Sie in der Regel „z“ ein, um die Dateien zusammenzuführen. Bereits vorhandene Zeilen werden nicht erneut eingefügt. Oder Sie drücken die Enter-Taste und kopieren die Dateien aus dem Verzeichnis „pxe/etc“ beziehungsweise deren Inhalt manuell. Damit ist sichergestellt, dass Dateien unter „/etc“ nicht unbeabsichtigt ersetzt werden. „pxe_install.sh“ ermittelt automatisch, ob die nötigen Programmpakete für eine bestimmte Aufgabe noch nicht vorhanden sind und bietet Ihnen, wenn nötig, deren Installation an.

3. Ubuntu über das Netzwerk installieren

Die Ubuntu-Netzwerkinstallation ermöglicht – anders als die DVD – eine Auswahl zwischen unterschiedlichen Software-Sammlungen.

Für Ubuntu gibt es fertig vorbereitete Netzwerk-Installer. Dabei handelt es sich um kleine Pakete mit der Größe von etwa 25 MB, der Rest der Dateien wird über das Internet nachgeladen. Öffnen Sie „pxe_install.sh in“ einem Editor. Am Anfang finden Sie einen kommentierten Ausschnitt für die Konfiguration. Tragen Sie hinter „dhcprange“ den IP-Bereich für Ihr Netzwerk ein. Wenn Sie diesen nicht kennen, informiert ifconfig auf der Kommandozeile: Die IP-Nummer Ihres PCs steht hinter „inet Adresse“. Lautet diese etwa „192.168.0.27“, gehört in das Script „192.168.0.0“. Die letzte Zahl wird also durch „0“ ersetzt. Ändern Sie bei Bedarf die Pfadangabe hinter „tftpdir“. In diesem Verzeichnis landen die Dateien, die sich später über das Netzwerk booten lassen, sowie die Konfigurationen.

Hinter „netbootnamelist“ stehen die Bezeichnungen der Distributionen für das Menü und bei „netbooturllist“ die Download-Adressen. Das Script ist für Ubuntu 14.04 und 15.04 vorkonfiguriert (32 und 64 Bit).

Speichern Sie die Datei, und führen Sie folgenden Befehl aus:

sudo ./pxe_install.sh netinst

Das Script lädt die Dateien herunter und entpackt sie nach „tmp/installer“ im Installationsverzeichnis. Für jede Distribution gibt es ein eigenes fortlaufend nummeriertes Verzeichnis. Kontrollieren Sie den Inhalt der Datei „~/pxe/etc/dnsmasq.conf“. Diese enthält alle Angaben, die für einen erfolgreichen Start nötig sind. Die Werte für das Netzwerk, Pfade und Menüeinträge sollten denen entsprechen, die Sie im Script konfiguriert haben. Mit

sudo ./pxe_install.sh copy

kopiert das Script „tmp/installer“ nach „/var/lib/tftpboot“ sowie „dnsmasq.conf“ nach „/etc“ und startet dnsmasq neu.

Installation über das Netzwerk: Sie müssen jetzt nur noch den Client-PC über PXE booten. Er findet dann den Linux-Server per DHCP automatisch und zeigt das Menü für die Installation an. Wählen Sie „Netzwerk-Installer“ und dann das gewünschte System. Der Netzwerk-Installer von Ubuntu unterscheidet sich deutlich von dem auf der Standard-Ubuntu-DVD. Es zeigt nur eine einfache grafische Oberfläche, die sich per Tastatur bedienen lässt. Der Vorteil: Sie haben die Wahl zwischen mehreren Installationstypen, beispielsweise „Kubuntu desktop“ oder „Ubuntu desktop“.

4. Ubuntu über ISO-Dateien installieren

Alternativ zum Netzwerk-Installer lassen sich auch ISO-Dateien über das Netzwerk booten. Das entspricht dann in etwa der Installation von DVD. Bereiten Sie dazu „pxe_install.sh“ vor wie in Punkt 2 beschrieben. Passen Sie zusätzlich die Variablen unter „Konfiguration für bootinst und addiso“ an. Starten Sie dann diesen Befehl:

sudo ./pxe_install.sh addiso Datei.iso

Für „Datei.iso“ setzen Sie den kompletten Pfad zur ISO-Datei ein. Das Script erstellt die Dateien für die Bootumgebung unter „tmp/installer/“ und die Konfigurationsdateien für dnsmasq sowie den NFS-Server unter config. Das Live System aus der ISO-Datei findet seinen Platz unter „/netboot“. Mit folgender Zeile kopieren Sie die Dateien nach „/var/lib/tftpboot“ und „/etc“:

sudo ./pxe_install.sh copy

Sie können das Script auch mehrmals mit verschiedenen ISO-Dateien aufrufen und zusammen mit den Netzwerk-Installern verwenden (Punkt 3).

Wenn der Ordner „tmp/installer/“ bereits vorhanden ist, integriert das Script die zugehörigen Menüeinträge automatisch.

5. Ubuntu über das Netzwerk starten

Das Script enthält am Anfang einen Abschnitt für die Konfiguration. Ändern Sie die IP-Adressen entsprechend Ihrer Netzwerkkonfiguration.

Öffnen Sie „ pxe_install.sh“ in einem Editor, und passen Sie die IP-Adressen und Pfade unterhalb von „Konfiguration für bootinst und addiso“ an. Die Angabe hinter „ubuntu=“ bestimmt die Ubuntu-Version. „trusty“ steht für Ubuntu 14.04 TLS und „vivid“ für 15.04 LTS. Darunter folgt mit „arch=“ die Architektur: „i386“ (32 Bit) oder „amd64“ (64 Bit). Hinter „desktop=“ tragen Sie ein, welche Oberfläche Sie verwenden wollen, etwa „xubuntu-desktop“ für ein System mit Xfxe4. Das Script enthält im Kommentar weitere Beispiele. Hinter „username=“ tragen Sie den gewünschten Benutzernamen für das neue System ein.

Wie das System später arbeitet, legen Sie mit „UseAufs=1“ fest. Das Script erstellt dann zwei NFS-Freigaben. Eine ist schreibgeschützt und nimmt das Ubuntu-System auf, die andere enthält die Konfiguration für die Clients. Jeder PC erhält einen eigenen Ordner mit der eindeutigen ID seines Netzwerkadapters als Bezeichnung (MAC-Adresse). Hier landen dann neue Dateien beispielsweise aus dem Home-Verzeichnis. Änderungen im Basissystem sind vom Client aus nicht möglich. Diese erfolgen bei Bedarf auf dem PXE-Server mit sudo ./pxe_install.sh softinst. Wenn Sie das nicht wünschen, tragen Sie hinter „UseAufs=“ eine „0“ ein. Dann dürfen Sie das System aber immer nur auf einem Rechner starten. Sonst gibt es wegen der gleichlautenden Host-Namen und gleichzeitiger Schreibzugriffe Konflikte. Starten Sie das Bash-Script mit der Zeile

sudo ./pxe_install.sh bootinst

Das System wird unter „/netboot/root/“ erstellt. Sie werden bei der Installation nach dem Ziel für Grub2 gefragt. Wählen Sie hier nichts aus, bestätigen Sie mit „OK“ und danach mit „Yes“. Sie müssen außerdem eine Zeitzone einstellen und das Passwort für den im Script konfigurierten Benutzer vergeben. Mit folgender Zeile kopieren Sie abschließend die Konfigurationsdateien nach „/etc“:

sudo ./pxe_install.sh copy

Starten Sie das System über das Netzwerk auf einem Client-PC, und fahren Sie es wieder herunter. Kopieren Sie die Dateien „hostname“ und „hosts“ von „pxe/config“ nach „/netboot/config/MAC/etc“. „MAC“ ersetzen Sie durch die MAC-Adresse des jeweiligen Clients. Ändern Sie in den Dateien jeweils „IhrHostNameHier“ auf den gewünschten Rechnernamen. Wenn Sie „UseAufs=0“ verwendet haben, kopieren Sie beide Dateien beispielsweise nach „/netboot/root/trusty/etc“.

Bandbreite sparen mit Apt-Cacher-ng

Wenn Sie die Netzwerk-Installer häufiger verwenden, empfiehlt sich die Installation von Apt-Cacher-ng auf dem Server. Eine Installationsanleitung finden Sie hier. Im Netzwerk-Installer wählen Sie für den Spiegel-Server „Deutschland“ und tippen danach unter „HTTP-Proxy-Daten“ Adresse und Port des Apt-Cacher-ng-Servers ein, etwa „http://192.168.0.12:3142“. Beim erneuten Abruf eines Pakets wird dieses dann aus dem Cache im eigenen Netzwerk geladen und nicht über das Internet. Apt-Cacher-ng ist auch bei der Bereitstellung bootfähiger Systeme über das Netz nützlich (-> Punkt 5). Passen Sie im Script „pxe_install.sh“ den Abschnitt „Apt-Cacher-ng verwenden“ für Ihr Netzwerk an.

(PC-Welt/ad)