dnsmasq - UEFI - PXE Boot

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
MKmaddin
Beiträge: 7
Registriert: 24.11.2015 17:48:20

dnsmasq - UEFI - PXE Boot

Beitrag von MKmaddin » 17.01.2018 21:03:36

Hallo Zusammen,

ich habe einen Debian 9.3 Server, welcher mithilfe von dnsmasq (version 2.75) der den PXE-Dienst in meinem Netzwerk zur Verfügung stellt.
Für die TFTP-Freigabe nutze ich tftpd-hpa (version 5.2).
Als Bootloader nutze ich syslinux aus dem Paket syslinux-efi (version 3:6.03).
In meiner Umgebung soll sowohl für Legacy, als auch UEFI-Geräte PXE zur Verfügung stehen.
dnsmasq ist über folgende Datei (in /etc/dnsmasq.d/) konfiguriert: pastebin/?mode=view&s=40136
Außerdem wurde in der Datei /etc/dnsmasq.conf die folgenden Zeilen auskommentiert (anschließend dnsmasq neu gestartet):
log-queries
log-dhcp

Legacy PXE-Boot funktioniert ohne Probleme.
Mit dem UEFI-Boot habe ich folgendes Problem:

Eine KVM libvirt virtuelle Maschine (über Bridged Network) mit OVMF bootet ohne Probleme.
Die zugehörige dnsmasq journalausgabe kann hier gefunden werden: pastebin/?mode=view&s=40137

Ein DELL Latitude E7440 (secureboot deaktiviert) zeigt folgende Ausgabe und bricht anschließend ab:

Code: Alles auswählen

>>Checking Media Presence....
>>Start PXE over IPv4.
	Station IP address is 192.168.13.24
	PXE from faiserver - press esc to abort(3..1)
PXE-E21: Remote boot cancelled.
Dieses Verhalten lässt sich auch mit weiteren DELL-Geräten nachstellen.
Von einem Windows WDS Server (anderes Netzwerk) starten die Geräte auch korrekt über UEFI-Boot.
Ich habe aus meiner sicht also BIOS-Einstellungen am Gerät ausgeschlossen.
Die zugehörige dnsmasq journalausgabe kann hier gefunden werden: pastebin/?mode=view&s=40138

Eine Hyper-V Maschine (Generation 2) zeigt folgende Ausgabe und startet anschließend neu:

Code: Alles auswählen

PXE Network Boot using IPv4 ( ESC to cancel)
Performing DHCP Negotiation........
	Station IP address is 192.168.13.44
	Server IP address is 192.168.13.10
	NBP filename is fai/syslinux.efi
	Downloading NBP file...
	Successfully downloaded NBP file.
Getting cached packet
My IP is 192.168.13.44
Die zugehörige dnsmasq journalausgabe kann hier gefunden werden: pastebin/?mode=view&s=40139

Vielen Dank für jede Art von Hilfe :)

Ich würde auch nicht auf eine Lösung bestehen, welche auf syslinux-efi basiert.
Die anderen Komponenten sind für mich allerdings zwingend.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: dnsmasq - UEFI - PXE Boot

Beitrag von rendegast » 27.01.2018 13:06:44

push
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
DynaBlaster
Beiträge: 958
Registriert: 25.03.2004 18:18:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DF0://dynablaster.adf

Re: dnsmasq - UEFI - PXE Boot

Beitrag von DynaBlaster » 29.01.2018 21:15:20

Hab das jetzt mal kurz gegooglet und habe das hier gefunden: https://www.ibm.com/support/home/docdis ... gr-5083034

Laufen DHCP- und TFTP-Server auf dem gleichen Host? Im verlinkten IBM-Beitrag ist die Rede von einem Bug bzw. nicht korektem Verhalten des UEFI-BIOS. Das würde zumindest erklären, warum das Dell-Gerät vom WDS via PXE und UEFI bootet und bei deinem Setup nicht. Zumindest wenn man davon ausgeh, das der Windows-WDS-Server sowohlt tftpd als auch dhcpd bereitstellt

MKmaddin
Beiträge: 7
Registriert: 24.11.2015 17:48:20

Re: dnsmasq - UEFI - PXE Boot

Beitrag von MKmaddin » 03.04.2018 19:25:35

Hallo zusammen,

entschludigt zunächst die späte Antwort.
(In den letzten beiden Monaten hatten Privat und Beruflich andere Punkte priorität)

Während des vergangenen Wochenendes konnte ich jedoch durch viele Tests und lesen verschidener Foren und Maillisten zu einem positiven Ergebnis gelangen.
-> Der PXE-Boot via UEFI ist funktionsfähig :)

Hier meine Fehler & Lösungen:

1. dnsmasq konfiguration - in der option pxe-service hatte ich die falsche CSA angegeben.
Diese ist für UEFI Geräte natürlich nicht X86PC, sondern X86-64_EFI. (komplette Liste der CSA's auf der DNSMASQ manpage: http://www.thekelleys.org.uk/dnsmasq/do ... q-man.html)
Ich konnte leider nur Arch:00007 & Arch:00009 testen. Ein Gerät mit Arch:00006 stand mir nicht zur Verfügung. (eventuell ist hier die CSA also nicht korrekt).
Meine dnsmasq config für Legacy & UEFI pxe-boot also hier ("meinserver" ist dabei der PXE server hostname, 192.168.1.250 die PXE server IP) :
pastebin/?mode=view&s=40249

2. syslinux pxe files
Nach oben genannter Änderung blieben meine Geräte bei der Meldung "Getting cached packet" und "My IP is 192.168.1.1" hängen.
Wie sich herausstellte handelt es sich dabei um einen Bug im aktuellen syslinux 6.03.
Debian bietet die neue Version 6.04-pre1 derzeit nur im "Experimental" repo an.
ich habe mir deshalb die entsprechenden Files direkt von kernel.org heruntergeladen: https://mirrors.edge.kernel.org/pub/lin ... ting/6.04/
Aus einem der Archive wurden folgende Files benötigt:

Code: Alles auswählen

efi64/efi/syslinux.efi -> wurde umbenannt in bootx64.efi
efi32/efi/syslinux.efi -> wurde umbenannt in bootia32.efi
efi64/com32/elflink/ldlinux/ldlinux.e64
efi32/com32/elflink/ldlinux/ldlinux.e32
Die genannten Files wurden dann in das in der dnsmasq config definierte Verzeichnis gelegt.

Offen (aber off-topic) ist nun für mich noch die Unterscheidung von legacy boot amd64 und i368, da ich hier einen unterschiedlichen root-path & anderen Kernel benötige.
Weiterhin arbeite ich derzeit daran mein Raspberry Pi 2B (armhf / ARM32_EFI) via U-Boot und mein Raspberry Pi 3 (ARM64_EFI) auch in der pxe-boot config funktionsfähig zu bekommen :)
(Für hinweise bin ich jederzeit dankbar)

Antworten