Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
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:
Ein TFTP-Server, der das Bootimage für den Client bereithält (tftpd-hpa).
Ein DHCP-Server oder Proxy, der dem Client eine IP-Adresse und den Pfad zu seinem Bootimage zeigt.
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.
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.
dnsmasq (universe [4])
mit apturl
Paketliste zum Kopieren:
sudo apt-get install dnsmasq
sudo aptitude install 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
Auf dem Server wird der TFTP-Server
tftpd-hpa
mit apturl
Paketliste zum Kopieren:
sudo apt-get install tftpd-hpa
sudo aptitude install tftpd-hpa
installiert [1].
Man sollte das "d" am Ende von tftpd beachten - sonst installiert man nicht den Server, sondern den Client!
Der TFTP-Server kann entweder über den Inetd oder beim Systemstart als Server gestartet werden. Je nach Anwendungsfall hat jede Startmethode ihre Vorzüge.
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
Ein Neustart des tftpd-hpa reicht erfahrungsgemäß nicht aus! Erst nach einem kompletten Neustart von Ubuntu funktionieren get/put usw. Siehe auch http://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
Die Installationsroutine von tftpd-hpa schreibt nach /etc/inetd.conf folgenden Eintrag:
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
und enthält damit einen Bug, siehe Bugreport
In einem Editor mit Root-Rechten [3] muss die Zeile deshalb angepasst werden (und ja, einzige Änderung ist udp->udp4):
tftp dgram udp4 wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
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.
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 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
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.
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
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:
Der Client fragt im Netzwerk nach einer IP-Adresse
Ein vorhandener DHCP-Server teilt diese dem Client mit, dazu die Adresse des TFTP-Servers
Der Client bootet vom TFTP-Server das Boot-Image, in diesem Falle das Installations-Image
Es kann jetzt wie mit einer CD-Installation begonnen werden. Wobei das nicht unbedingt so stimmt. Sollte die Installation wegen angeblich fehlender Pakete abbrechen, was dem Autor passiert ist, installiert man am besten erst das Grundsystem, indem man server am Boot-Prompt eingibt. Später kann man dann durch die Installation eines der Meta-Pakete ubuntu-desktop, kubuntu-desktop, etc. zu demselben Zustand kommen wie dem nach einer Standardinstallation, falls gewünscht.
Diese Revision wurde am 13. Oktober 2016 10:57 von akfak_znarf erstellt.