Linux-Installation mit PXE

Vorwort

Ich persönlich verachte ja optische Medien, einmal gebrannt nur lesbar (außer man hat eine DVD-RAM, die bei weitem nicht alle Laufwerke lesen können) und auch langsam (rein ins Laufwerk, hoffen, dass das blöde Ding los läuft etc.) und meist nutzt man den Speicher auch nicht voll aus. Da installiere ich meine Systeme lieber vom USB-Stick oder noch besser: über das Netzwerk mit PXE. Genau diese Installationsmethode beschreibt dieses HowTo ausführlich, wer mehr als einen Rechner zu Hause stehen hat (ein klappriger P3 reicht vollkommen aus um als PXE-Server zu dienen) und über einen Router/Switch verfügt (hat auch so ziemlich jedes Modem heutzutage schon an Bord) den könnte dieser Artikel durchaus interessieren ;-) Doch genug der Worte, lassen wir Taten folgen!

System

Die verwendeten Testsysteme wären:

  • Ubuntu 9.04 amd64 als Server (DHCP, DNS & TFTP)
  • Ubuntu 9.04 amd64 als Boot-Image (Setup)

Als großer Fan von x64 habe ich es natürlich mit diesen Varianten getestet, natürlich funktioniert es auch mit x86 aka 32-Bit ;-)

Images

Die Boot-Images lädt man sich je nach Verfügbarkeit von den Herstellerseiten herunter, in diesem Fall die Ubuntu netboot-Images. Gespeichert werden diese in einem Verzeichnis, auf das der TFTP-Server verweisen wird (z.B. /var/lib/tftpboot).

wget http://de.archive.ubuntu.com/ubuntu/dists/jaunty/main/installer-amd64/current/images/netboot/netboot.tar.gz
sudo tar -xvzf netboot.tar.gz -C /var/lib/tftpboot/
sudo chown -R nobody:nogroup /var/lib/tftpboot

Installation

Server

Für den Server würden wir (theoretisch) mehrere verschiedene Dienste benötigen:

  • DHCP
  • DNS
  • TFTP

Alle diese Aufgaben kann allerdings ein einziges Programm übernehmen: dnsmasq. Es wird lediglich das Paket dnsmasq (Ubuntu/Debian) benötigt.

Konfiguration

Die /etc/dnsmasq.conf ist bereits mit vielen ausführlichen und hilfreichen Kommentaren bestückt, ich werde allerdings nur die für PXE benötigten Direktiven benutzen:

# Adressbereich des DHCP-Servers
dhcp-range=192.168.1.50,192.168.1.150,12h
# Schicke das Default-Gateway mit
# In diesem Fall habe ich die Adresse meines Routers mitgegeben
# da auf mein Server die DNS-Forward Funktion nicht aktiviert ist
dhcp-option=3,192.168.1.1
# Adresse des DNS-Servers
# Hier habe ich die IP von OpenDNS benutzt
dhcp-option=6,208.67.222.222
# Name und Ort (IP) des Boot-Images
dhcp-boot=/pxelinux.0,0.0.0.0
# Aktiviere dnsmasq's TFTP-Server
enable-tftp
# Setze root-Verzeichnis für den TFTP-Server
tftp-root=/var/lib/tftpboot/

Abschließend einfach den Dienst neu starten:

sudo /etc/init.d/dnsmasq restart

Client(s)

Auf den Clients muss im BIOS die Option zum Booten über LAN aktiviert werden, diese Richtlinien unterscheiden sich jedoch von Hersteller zu Hersteller. Wenn man dies erfolgreich eingestellt hat, sollte man beim Bootstrap ähnliches zu Gesicht bekommen:

BIOS der Netzwerkkarte fordert IP-Adresse an

Ubuntu Installer wird über TFTP auf den Client geladen

Quellen

Kommentare