Good to Know Database

Boot & Installationgilt für Debian 12, 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?

Von 4 Min. Lesezeit

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

  1. Der Rechner startet von der Netzwerkkarte und fragt per DHCP nach einer Adresse.
  2. Die FRITZ!Box antwortet mit der Adresse, dnsmasq antwortet parallel mit der Bootinformation: welcher Server, welche Datei.
  3. 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.

Quellen