PXE-Installation

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Einen Editor öffnen

  4. Paketquellen freischalten

Inhaltsverzeichnis
  1. DHCP-Proxy mit TFTP-Server
  2. DHCP-Server mit TFTP-Server
    1. TFTP-Server einrichten
    2. Vorbereiten des DHCP-Servers
  3. Bootimage vorbereiten
  4. Vorbereitungen der Installation am Client
  5. PXE-Boot

Ubuntu kann - wie auch Debian - über ein Netzwerk installiert werden. Das ist z.B. hilfreich, wenn der Computer nicht über ein Wechsellaufwerk verfügt. Dazu muss der Computer über PXE booten können.

Das eigene Netzwerk muss auch für diese Installationsmethode vorbereitet sein. Es sollte jeweils ein System zur Verfügung stehen, auf dem folgende Dienste laufen:

Optional aber sinnvoll ist es, die Distribution auf dem Server vorzuhalten, entweder als Spiegel-Server für große Netzwerke oder als Proxy/Catcher für kleine und Heimnetzwerke. Dies beschleunigt die Installation um einiges.

Nun gibt es zwei Möglichkeiten:

Entweder eine Kombination aus einen DHCP-Server und einem TFTP-Server, wobei der DHCP-Server der meisten Router nicht ausreichend ist.

Oder (um den DHCP-Server des Routers mit den erforderlichen Informationen zu ergänzen) ein DHCP-Proxy mit TFTP-Server.

DHCP-Proxy mit TFTP-Server

Weil viele Leute die Annehmlichkeiten eines DHCP-Servers auf ihrem Router wahrnehmen und diese meist nicht die gewünschten Anpassungen unterstützen, ist hier ein DHCP-Proxy vonnöten, der dem PXE-Clienten vermittelt, wo sich der PXE-Server befindet.

Hierfür ist der DHCP-Server Dnsmasq das Mittel der Wahl, da er als DHCP-Proxy agieren kann und noch gleichzeitig einen TFTP-Server eingebaut hat.

Paketliste zum Kopieren:

sudo apt-get install dnsmasq 

Oder mit apturl installieren, Link: apt://dnsmasq

Die Standardkonfiguration in /etc/dnsmasq.conf sollte als erstes gelöscht werden, da sich diese auf einen DHCP-Server bezieht.

Dann müssen folgende Zeilen in die nun leere Datei eingefügt werden.

dhcp-range=192.168.178.0,proxy                   # Durch das eingene Netzwerk ersetzen.
dhcp-boot=pxelinux.0,192.168.178.2,192.168.178.0 # Durch die IP-Adresse des TFTP-Servers und des Netzwerks ersetzen.

pxe-service=x86PC,"Netzwerk Boot",pxelinux

enable-tftp
tftp-root=/var/lib/tftpboot 

Weiter geht es dann mit diesem Abschnitt

DHCP-Server mit TFTP-Server

TFTP-Server einrichten

Auf dem Server wird der TFTP-Server

Paketliste zum Kopieren:

sudo apt-get install tftpd-hpa 

Oder mit apturl installieren, Link: apt://tftpd-hpa

installiert [1].

Hinweis:

Man sollte das "d" am Ende von tftpd beachten - sonst installiert man nicht den Server, sondern den Client!

Der TFTP-Server kann beim Systemstart als Server gestartet werden.

Start als Alleinstehender Server

Hinweis:

In Ubuntu 14.04 ist dies der Standard und somit kann dieser Schritt übersprungen werden.

Dazu ist zuerst die Datei /etc/default/tftpd-hpa zu bearbeiten (Editor mit Root-Rechten, [3]).

#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

Die Option RUN_DAEMON="yes" macht es zum einen erst möglich, dass der TFTP-Server manuell wie im folgenden Schritt gestartet werden kann und außerdem, dass der TFTP-Server beim Systemstart mitstartet.

Im Terminal [2] sorgt

sudo /etc/init.d/tftpd-hpa start 

dafür, dass der TFTP-Server gestartet wird.

Ab 10.04 sieht es dank "event-based booting" etwas anders aus:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -s"

bzw. Neustart mit:

sudo service tftpd-hpa restart 

Achtung!

Ein Neustart des tftpd-hpa reicht erfahrungsgemäß nicht aus! Erst nach einem kompletten Neustart von Ubuntu funktionieren get/put usw. Siehe auch https://debianforum.de/forum/viewtopic.php?t=70492 🇩🇪.

In /etc/inetd.conf sollte der folgende Eintrag noch mit # auskommentiert werden:

tftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

Vorbereiten des DHCP-Servers

Der DHCP-Server verteilt an den Client die IP-Adressen und die Information, von wo der Client das Bootimage abholen kann. Von den folgenden Beispielen kann einer genutzt werden, um diese Aufgabe zu übernehmen.

DHCPD3

Da insbesondere die DNS-Fähigkeiten von dnsmasq für die Netzwerkinstallation nicht benötigt werden, ist der DHCP-Server des ISC[1] die erste Wahl. In der Config-Datei des DHCPD3 /etc/dhcp3/dhcpd.conf sind diese Parameter einzufügen, die Adresse des TFTP-Servers(next-server) und der Pfad zum Boot-Image(filename) (Editor mit Root-Rechten, [3]):

  next-server 192.168.1.2;
  filename "/pxelinux.0";

Eine praktisch alles enthaltende Beispielkonfiguration ist hier zu finden. Im Normalfall müssen nur die Werte angepasst werden und die beiden Zeilen aus dem oberen grauen Kasten angefügt werden.

Dnsmasq

Dnsmasq ist ein kleiner DNS- und DHCP-Server. Die grundlegende Konfiguration wird in einem Extra-Artikel beschrieben. Benötigt wird in diesem Fall nur die Konfiguration als DHCP-Server. Für die TFTP-Optionen sind diese Parameter in der /etc/dnsmasq.conf relevant:

  • Ist der dnsmasq auf der gleichen Maschine wie der TFTP-Server, ist dieser Parameter anzugeben:

dhcp-boot=/pxelinux.0,0.0.0.0
  • Läuft der TFTP-Server auf einer anderen Maschine, sieht es so aus (Pfad zum Bootimage,TFTP-Hostname,IP-Adresse des TFTP-Servers):

dhcp-boot=/pxelinux.0,pos,192.168.1.11

Hinweis:

In der Standardeinstellung vergibt Dnsmasq IPs im Bereich von 192.168.0.xxx bis 192.168.0.255. Der Rechner auf dem Dnsmasq läuft, muss ebenfalls eine IP in diesem Bereich haben, sonst kann der Client ihn nicht finden. Die IP des Rechners lässt sich über den Network-Manager bzw. über interfaces einstellen.

Wiki/Icons/pci.png

Bootimage vorbereiten

Im Verzeichnis /var/lib/tftpboot wird das Boot-Image abgelegt. Dazu ist das Archiv für das entsprechende Release herunterzuladen (Quellen sind im Artikel Downloads/Netzwerkinstallation enthalten). Anschließend wird das Archiv im Terminal [2] in das folgende Verzeichnis entpackt:

sudo tar xvzf netboot.tar.gz -C /var/lib/tftpboot/     ## Entpacken

sudo chown -R nobody:nogroup /var/lib/tftpboot         ## Besitzer festlegen 

Nach jeder größeren Änderung muss der TFTP-Server neugestartet werden, da sonst die neue Konfiguration nicht erkannt wird!

sudo service dnsmasq restart
# oder
sudo service tftpd-hpa restart 

Vorbereitungen der Installation am Client

Nun ist im BIOS des Clients die Option "Network Boot" zu aktivieren. Die Bezeichnung dieser Option kann unterschiedlich sein.

Es gibt jedoch auch noch eine weitere Möglichkeit. Viele neuere BIOS haben nicht nur eine spezielle Taste um ins BIOS zu gelangen Entf oder F2 sondern noch eine weitere um das Bootmedium auszuwählen (bei Dell und Fujitsu F12 ). Bei dieser Methode wird die Wahl des Bootmediums, in diesem Fall die Netzwerkkarte, nur für diesen einen Bootvorgang gewählt, somit entfällt ein erneutes Einstellen der Festplatte als primäres Bootmedium nach der Installation.

Wenn der Client danach neu bootet, passiert Folgendes:

PXE-Boot

Information, wie man mehrere Betriebssysteme laden kann und wie man einen Rechner unter Ubuntu über PXE bootet (ohne Installation), findet man im Artikel PXE-Boot.