Boot & Installationgilt für Debian 12/13, dnsmasq, UEFI
Wie starte ich Rechner per PXE über das Netzwerk?
Rechner ohne USB-Stick starten: Ein Laptop soll neu installiert werden, ein PC braucht ein Rettungssystem, und im Netz steht ohnehin ein kleiner Server oder Raspberry Pi. PXE kann das, aber der DHCP-Server sitzt in der FRITZ!Box, und die kennt keine Bootoptionen. Wie baue ich trotzdem einen Netzwerkboot auf?
Lösung
Kurz: Mit dnsmasq als Proxy-DHCP. Die FRITZ!Box vergibt weiter die Adressen, dnsmasq ergänzt nur die Bootinformation und liefert die Startdatei per TFTP aus. Als Bootmenü eignet sich netboot.xyz, das Installer und Rettungssysteme direkt aus dem Internet lädt.
Wie PXE abläuft
- Der Rechner startet von der Netzwerkkarte und fragt per DHCP nach einer Adresse.
- Die FRITZ!Box antwortet mit der Adresse, dnsmasq antwortet parallel mit der Bootinformation: welcher Server, welche Datei.
- Der Rechner lädt die Startdatei per TFTP und führt sie aus. Bei netboot.xyz erscheint danach ein Menü.
dnsmasq installieren
sudo apt install dnsmasq
sudo mkdir -p /srv/tftp
sudo wget -O /srv/tftp/netboot.xyz.efi https://boot.netboot.xyz/ipxe/netboot.xyz.efi
Konfiguration
Die Datei /etc/dnsmasq.d/pxe.conf anlegen. Debian liest alle Dateien in diesem Ordner
automatisch ein, dafür steht am Ende der /etc/dnsmasq.conf schon die passende
conf-dir-Zeile. Die Adresse in dhcp-range muss zum eigenen Netz passen, bei der
FRITZ!Box im Auslieferungszustand ist das 192.168.178.0:
port=0
dhcp-range=192.168.178.0,proxy
enable-tftp
tftp-root=/srv/tftp
pxe-service=x86-64_EFI,"netboot.xyz",netboot.xyz.efi
port=0 schaltet den DNS-Teil von dnsmasq ab, er wird hier nicht gebraucht.
proxy sorgt dafür, dass dnsmasq keine Adressen vergibt und der FRITZ!Box nicht in die Quere
kommt. Danach den Dienst neu starten:
sudo systemctl restart dnsmasq
sudo journalctl -u dnsmasq -f
Die zweite Zeile zeigt das Protokoll live. Startet jetzt ein Rechner per Netzwerk, erscheinen dort die Anfragen und die ausgelieferte Datei.
Gibt es für einen Rechnertyp nur einen passenden Eintrag, zeigt dnsmasq kein eigenes Auswahlmenü, sondern startet die Datei sofort. Das Menü, das danach erscheint, kommt von netboot.xyz.
Läuft auf dem Server eine Firewall, müssen eingehend die UDP-Ports 67 (DHCP), 69 (TFTP) und 4011
(PXE-Anfragen, vor allem von UEFI-Rechnern) offen sein. Mit ufw:
sudo ufw allow from 192.168.178.0/24 to any port 67,69,4011 proto udp.
Rechner per Netzwerk starten
Im UEFI des Zielrechners den Netzwerkboot einschalten, oft als „PXE Boot“, „Network Stack“ oder „IPv4 PXE“ bezeichnet. Dann beim Einschalten das Bootmenü aufrufen und den Netzwerkadapter wählen. Das Zielgerät braucht ein Netzwerkkabel: Die Firmware kann vor dem Start keine WLAN-Verbindung aufbauen, PXE über WLAN ist deshalb im Regelfall nicht möglich.
Nachträge
Was ist mit älteren Rechnern ohne UEFI?
Rechner im alten BIOS-Modus brauchen eine andere Startdatei. netboot.xyz bietet dafür die Variante mit der
Endung .kpxe:
sudo wget -O /srv/tftp/netboot.xyz.kpxe https://boot.netboot.xyz/ipxe/netboot.xyz.kpxe
Dazu kommt in der pxe.conf eine zweite Zeile für den Typ x86PC:
pxe-service=x86PC,"netboot.xyz (BIOS)",netboot.xyz.kpxe
dnsmasq zeigt jedem Rechner nur den Eintrag, der zu seinem Typ passt. An den Dateinamen hängt dnsmasq
nichts an, eine Endung wie .0 muss man nicht ergänzen.
Was ist mit Secure Boot?
Mit eingeschaltetem Secure Boot lehnt die Firmware die normale netboot.xyz.efi ab, weil sie nicht
mit einem von Microsoft anerkannten Schlüssel signiert ist. netboot.xyz bietet dafür eigene Secure-Boot-Abbilder
mit einem signierten Zwischenstarter (Shim) an. Die vollständige Installation unter Secure Boot klappt damit
derzeit aber nur für Debian, Devuan und Kali. Für alles andere Secure Boot für den Netzwerkstart kurz
abschalten.
Warum steht in der Anleitung von netboot.xyz etwas anderes?
netboot.xyz beschreibt dnsmasq als vollständigen DHCP-Server mit der Zeile dhcp-boot. Das passt
für Netze, in denen dnsmasq die Adressen selbst vergibt. Hier vergibt die FRITZ!Box die Adressen, deshalb
läuft dnsmasq im Proxy-Modus mit pxe-service, wie es die dnsmasq-Anleitung beschreibt. Beide
Wege funktionieren, gehören aber zu unterschiedlichen Aufbauten.
Warum nicht einfach einen zweiten DHCP-Server?
Zwei DHCP-Server, die beide Adressen vergeben, streiten sich im Netz. Je nachdem, wer schneller antwortet, bekommen Geräte falsche Adressen oder gar keine Verbindung. Der Proxy-Modus umgeht das: dnsmasq antwortet nur Rechnern, die per PXE starten, und vergibt selbst keine Adressen.
Läuft das auf einem Raspberry Pi?
Ja. dnsmasq und TFTP brauchen kaum Leistung, ein Raspberry Pi mit Netzwerkkabel reicht als PXE-Server. Er sollte eine feste IP-Adresse haben, damit die Bootinformation immer auf denselben Server zeigt.
Kann ich statt netboot.xyz eigene Systeme anbieten?
Ja, dann liegen die Startdateien eines eigenen Bootloaders wie GRUB oder iPXE im TFTP-Ordner, und ein eigenes Menü verweist auf Kernel und Installationsdateien. Das ist deutlich mehr Arbeit. netboot.xyz ist der schnellste Weg, weil es die aktuellen Installer der großen Distributionen selbst nachlädt.