ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

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:

Ubuntu kann wie auch Debian übers Netzwerk installiert werden. Das ist 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 ein Computer 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, 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 oder mit Hilfe von apt-proxy. Das beschleunigt die Installation um einiges.

TFTP-Server einrichten

Auf dem Server wird der TFTP-Server

  • tftpd-hpa (main)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install tftpd-hpa 

sudo aptitude install 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 entweder über den Inetd oder beim Systemstart als Server gestartet werden. Je nach Anwendungsfall hat jede Startmethode ihre Vorzüge.

Start über Inetd

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 {en}

In einem Editor mit Root-Rechten [3] muß 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

Start als Alleinstehender Server

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 restart tftpd-hpa 

Achtung!

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 folgenden Eintrag noch mit # auskommentiert werden:

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

Bootimage vorbereiten

Im Verzeichnis /var/lib/tftpboot wird das Boot-Image abgelegt. Dazu ist das Archiv für das entsprechende Release herunterzuladen: Wiki/Icons/pci.png

Bootimages
Ubuntu Version i386 amd64
12.10 Quantal Quetzal netboot.tar.gz {dl} netboot.tar.gz {dl}
12.04 Precise Pangolin (LTS) netboot.tar.gz {dl} netboot.tar.gz {dl}
11.10 Oneiric Ocelot netboot.tar.gz {dl} netboot.tar.gz {dl}
11.04 Natty Narwhal netboot.tar.gz {dl} netboot.tar.gz {dl}
10.04 Lucid Lynx (LTS) netboot.tar.gz {dl} netboot.tar.gz {dl}
8.04 Hardy Heron (LTS) netboot.tar.gz {dl} netboot.tar.gz {dl}

Im Terminal [2] wird das Archiv in das Verzeichnis entpackt:

sudo tar xvzf netboot.tar.gz -C /var/lib/tftpboot/   # Entpacken
sudo chown -R nobody:nogroup /var/lib/tftpboot         # Besitzer festlegen 

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.

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 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.

PXE-Boot

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

ubuntuusers.local › WikiPXE-Installation