PXElinux 6.04-pre1/iPXE 1.20.1 – PXE&TFTP&DHCP Server einrichten

Möchten Sie von Ihrem Synology NAS, über das Netzwerk, Linux-Live-Systeme oder sogar Windows Installationen starten können? Dann ist diese Anleitung genau das Richtige für Sie.

Das ganze Thema ist sehr vielfältig. Die Möglichkeiten sind es auch. Man kann so ziemlich alles in einer solchen Umgebung durchführen. Häufige Fälle wären zum Beispiel das Zurücksetzen des Passworts mit der DaRT Software von Microsoft oder ein Virenscan des Rechners ohne diesen überhaupt ins Hauptsystem gebootet zu haben. Auch könnte man in solchen Umgebungen Backupsoftware starten, um den geliebten PC und dessen persönliche Dateien zu sichern oder diese wiederherzustellen.

Updateinfo – 19.12.2020:

Diese Anleitung bezieht sich nur auf die Konfiguration des TFTP&DHCP&PXE Servers und das Aufspielen und Konfigurieren der PXElinux 6.04-pre1 Version und iPXE 1.20.1 Version auf diesem.

Verwendete Programme/Server:

DHCP Server = Dnsmasq
TFTP Server = Open TFTP Server

PXE-Umgebung:

BIOS Clients = Laden den PXELinux Bootloader
UEFI32 Clients = Laden das iPXE 32 Skript
UEFI64 Clients = Laden das iPXE 64 Skript

Den i386 und i386-efi Modus konnte ich nicht testen. Ich habe nämlich keine uralt Hardware mehr und auch keine spezielleren i386-efi Geräte.

Neuen gemeinsamen Ordner erstellen

Zuallererst melden Sie sich auf Ihrer Synology NAS an. Dort erstellen Sie einen neuen Gemeinsamen Ordner mit beispielsweise dem Namen: “PXE-Umgebung“. Wie Sie diesen nennen ist natürlich Ihnen überlassen.

NFS-Berechtigung für den gemeinsamen Ordner erstellen

Wenn Sie später einmal vorhaben sollten Linux-Live-Images laden zu können, so klicken Sie bei dem eben erstellten gemeinsamen Ordner bitte auf Bearbeiten und klicken dann auf das Register NFS-Berechtigungen und erstellen eine Neue Regel.

Synology Gemeinsamer Ordner NFS-Regel
Synology Gemeinsamer Ordner NFS-Regel

Bei Hostname oder IP kommt die Netzwerk-ID Ihres Netzwerkes hinein.

Wie genau nun Ihre Netzwerk-ID lautet, kann ich nicht sagen. Schauen Sie einfach selbst nach.

Wenn Sie allerdings im /24 Netz sind = Subnetzmaske: 255.255.255.0, dann können Sie wie ich die 0 am Ende der Adresse benutzen!

Die Subnetz Präfix darf natürlich nicht fehlen! Hiermit ist das /24 gemeint und besagt, das der Netzanteil 24 Bit lang ist.

Bringen Sie bitte in Erfahrung, welches Netz Sie verwenden. Sollten Sie diesem Punkt falsch eintragen, so wird es Ihnen später nicht möglich sein, Linux-Live-Systeme zu starten!

Wenn Sie dann alles wie auf dem Bild eingetragen haben – außer der IP natürlich -, dann sollte das Ganze so aussehen:

Synology Gemeinsamer Ordner NFS-Berechtigungen
Synology Gemeinsamer Ordner NFS-Berechtigungen

NFS Mount-Pfad merken!

Auf diesem Bild sehen Sie unten noch den Mount-Pfad.

In meinem Beispiel: /volume1/PXE-Umgebung

Diese Angabe ist äußerst wichtig, da Sie diese später noch einmal brauchen werden. Also nicht vergessen. Bei Ihnen kann es durchaus der Fall sein, dass dort eventuell nicht volume1 steht, sondern vielleicht volume2 oder ähnlich. Das ist nicht schlimm und sagt lediglich nur aus, auf welchem Volume sich der gemeinsame Ordner befindet.

TFTP Server konfigurieren

Klicken Sie im DSM auf Systemsteuerung und dann Dateidienste. Sie werden dort das Register TFTP finden. Aktivieren Sie dort den TFTP-Dienst und wählen den gemeinsamen Ordner aus, den Sie gerade eben erstellt haben. Anschließend klicken Sie auf Erweiterte Einstellungen. Dort können Sie noch, wenn Sie das wünschen, die Protokollierung aktivieren oder einen erlaubten IP-Bereich wählen. Die TFTP-Rechte sollten auf auf das Lesen beschränkt werden. Wir wollen ja auch nicht mehr. Lesen reicht vollkommen aus.

Synology TFTP-Servereinstellungen
Synology TFTP-Servereinstellungen

DHCP Server einrichten

Vorwort
Es ist nicht ratsam mehrere DHCP Server in einem Subnetz zu betreiben. Da die Mehrheit meiner Erfahrung nach allerdings den DHCP Server des Routers verwendet, muss ich dazu sagen, dass dieser bei dem Router deaktiviert werden muss. Ja, dass muss und sollte auch. Es kann zwar sein, dass es auch mit 2 DHCP Servern funktioniert, aber es ist dennoch davon abzuraten. Es gibt auch keine Gründe sich zu sträuben den DHCP Server des Routers zu deaktivieren, denn diese sind meistens total vereinfacht und so gut wie nicht konfigurierbar. Sie tun Ihrer Netzwerkumgebung einen Gefallen damit den DHCP Server der Synology zu verwenden. Natürlich bekommen Ihre Handys nach der Umstellung auch noch DHCP Leases, eben nur nicht mehr über den Router selbst, sondern der Synology.

Als kleine Randinformation für alle FritzBox-Nutzer:

Auch wenn der DHCP Server im Router für das Heim-Netz deaktiviert wurde, so läuft dennoch einer weiterhin für das LAN&WLAN Gast-Netz! Vorausgesetzt natürlich dass Sie die Gastfunktionen der FritzBox auch aktiviert haben. Da dieser DHCP Server in einem völlig anderen Subnetz agiert, ist dieser kein Problem für diese Anleitung!

ProxyDHCP Server:

Es gibt zwar noch sogenannte ProxyDHCP Server, aber das müsste auch wieder eine ganze Ecke anders eingestellt werden. Daher verzichte ich in dieser Anleitung auch komplett darauf. Eventuell werde ich noch eine für solche Fälle verfassen.

Weiter im Text:

In der Systemsteuerung klicken Sie nun auf DHCP Server und wählen als Erstes mal den LAN Port aus, den Sie dafür verwenden wollen. Manche Synology Geräte besitzen mehr als einen LAN Port und daher muss das angesprochen werden. Markieren Sie diesen und klicken auf Bearbeiten. Fertig eingerichtet sieht das in meiner Umgebung dann so aus:

Synology DHCP-Servereinstellungen
Synology DHCP-Servereinstellungen

Meine Netzwerk-ID ist 192.168.1.0/24
Mein Router (FritzBox) ist 192.168.1.254
Das DHCP Range geht von 192.168.1.100-192.168.1.200

So, ganz wichtig, Ihr solltet nach Möglichkeit der Diskstation eine feste IP zuweisen! In meinem Fall ist die feste IP: 192.168.1.2.

Sollte das bei Euch nicht der Fall sein, so navigiert in der Systemsteuerung zu Netzwerk und dann Netzwerkschnittstelle und wählt die aktive Verbindung der DS aus und klickt dann auf Bearbeiten.

Synology LAN Port IP-Einstellungen
Synology LAN Port IP-Einstellungen

DNS und Gateway ist für gewöhnlich Eure Router IP. Solltet Ihr keinen eigenen DNS Server erstellt haben, so könnt Ihr die Eures Routers eintragen. So, bevor wir später dann auch noch den PXE-Dienst einschalten werden, werden wir erst einmal das Grundgerüst des PXE-Servers schaffen.

Syslinux 6.04 herunterladen und Ordner und Konfigurationsdateien erstellen

Laden Sie sich die aktuellste Syslinux Version herunter.

https://www.kernel.org/pub/linux/utils/boot/syslinux/Testing/6.04/syslinux-6.04-pre1.zip

Entpacken Sie diese danach an einem beliebigen Ort auf Ihrem Rechner.

Bevor wir nun hingehen und die Dateien in den Gemeinsamen Ordner kopieren, ladet mein TFTP Root Paket herunter und entpackt dieses in euren gemeinsamen Ordner, den Ihr ganz am Anfang erstellt hattet. Der gemeinsame Ordner ist zugleich auch Euer TFTP Root – nicht vergessen.

Ich gebe euch ein ansehnliches Menü für jeden Eintrag! Natürlich sind dort keine Einträge vorhanden um Windows oder Linux Systeme zu starten. Die Datei würde einfach zu groß um das hier im Artikel halbwegs ansehnlich zu demonstrieren. Es geht schlichtweg erst einmal darum, dass Sie das Ganze starten könnten! Wenn dann alles funktioniert, können Sie diese Dateien nach Ihrem Belieben editieren!

TFTP Root

TFTP Root Verzeichnisse
TFTP Root Verzeichnisse

Jetzt wird es etwas kniffelig! Jetzt muss Euer extrahiertes Syslinux herhalten. 🙂

Kopiert nun folgende Dateien ALLE in den PC-BIOS Ordner:

Syslinux6.04/bios/com32/chain/chain.c32
Syslinux6.04/bios/com32/cmenu/libmenu/libmenu.c32
Syslinux6.04/bios/com32/gpllib/libgpl.c32
Syslinux6.04/bios/com32/hdt/hdt.c32
Syslinux6.04/bios/com32/lib/libcom32.c32
Syslinux6.04/bios/com32/libutil/libutil.c32
Syslinux6.04/bios/com32/menu/menu.c32
Syslinux6.04/bios/com32/menu/vesamenu.c32
Syslinux6.04/bios/com32/modules/ifcpu64.c32
Syslinux6.04/bios/com32/modules/kbdmap.c32
Syslinux6.04/bios/com32/modules/linux.c32
Syslinux6.04/bios/com32/modules/poweroff.c32
Syslinux6.04/bios/com32/modules/reboot.c32

Des Weiteren werden wir nun noch folgende Dateien direkt in das TFTP Root Verzeichnis kopieren:

Syslinux6.04/bios/memdisk/memdisk

BIOS Bootloader!

Syslinux6.04/bios/core/pxelinux.0
Syslinux6.04/bios/com32/elflink/ldlinux/ldlinux.c32

Anpassen der iPXE Konfiguration

Suchen Sie nun folgende Dinge in der pxeEFI32.ipxe.cfg und  pxeEFI64.ipxe.cfg:

set nfs-server SERVER_IP
set nfs-root /YOUR_PATH/

Tragen Sie bei nfs-server die Synology-DS IP ein. Bei nfs-root kommt der komplette Mount-Pfad hin.

In dem von mir veröffentlichten Beispiel wäre der Pfad: /volume1/PXE-Umgebung/

Falls Sie bereits einen HTTP Server eingerichtet haben, der ebenso ins TFTP Root Verzeichnis zeigt, dann tragen Sie bei

set http-server SERVER_IP

die IP ein.

Wichtige Anmerkung zum Ändern der Hintergrundbilder

Die Hintergrundbilder könnt Ihr natürlich gegen Eure austauschen.

BIOS Modus Hintergrundbild:

Hier ist darauf zu achten, dass im BIOS Modus nur Bilder verwendet werden, die in einer 640×480 Pixel Auflösung vorhanden sind und als JPG-Datei vorliegen.

EFI32 & EFI64 Modus Hintergrundbild:

Für den EFI32 & EFI64 Modus ist es ratsam, PNG Bilder in einer maximalen Auflösung von 1024×768 Pixel zu verwenden. Halten Sie sich unbedingt an das 4:3 Format! Außerdem darf die Farbtiefe nicht mehr als 24 BPP (Bits Per Pixel) betragen. In solchen Fällen bleibt der Hintergrund nämlich schwarz! Wenn Sie nicht wissen, wie Sie die Farbtiefe reduzieren können; hier ein In­si­der­tipp:

Öffnen Sie das Bild einfach mit mspaint und lassen es erneut speichern. Et voila. Schon passt’s.

Verwenden Sie keine Bilder, die kein richtiges 4:3 Format darstellen.
Das führt unter Umständen zu sehr extremen Grafik- und Menüfehlern.

Wichtige Anmerkung zum iPXE EFI32 & EFI64 Modus

Das iPXE EFI Menü funktioniert prinzipiell. Leider gibt es noch so einige Einschränkungen im Vergleich zu dem alten BIOS/Legacy Modus.

Memdisk ist zum Beispiel ein reines BIOS Tool. Dieses funktioniert im iPXE EFI Modus natürlich nicht und noch viele weitere Funktionen gehen auch nicht mehr. In einer UEFI Umgebung müssen Sie dann das Programm wimboot verwenden oder von da aus einfach den Windows-Boot-Manager aufrufen, um WIM-Dateien oder ähnlich laden zu können. ISO-Dateien könnten Sie damit aber nicht laden!

So sollte das dann nachher im BIOS Legacy Modus aussehen (Nur ein Beispiel, damit es motivierend bleibt):

PXELinux Legacy Menü
PXELinux Legacy Menü

Hier das gleiche nochmal für den UEFI Modus:

iPXE UEFI Menü

PXE Dienst aktivieren

Melden Sie sich erneut bei Ihrer Synology an und gehen Sie wieder in die Systemsteuerung, dann auf DHCP Server und nun im Reiter PXE aktivieren Sie den PXE Dienst. Wählen Sie außerdem bei Bootloader die Datei: pxelinux.0

DHCP Server (Dnsmasq) via SSH-Verbindung editieren um die Multi-Arch Erkennung zu aktivieren

Kommen wir nun zu einem der wichtigsten Schritte überhaupt.

Damit Sie die nötigen Änderungen vornehmen können, muss der SSH Dienst eingeschaltet sein unter:

Systemsteuerung => Terminal => SSH Dienst aktivieren und Sie müssen ein fähiges SSH Programm besitzen. Laden Sie sich einfach Putty aus dem Internet herunter.

Melden Sie sich mit Putty über SSH auf Ihrer Synology an. Der zu verwendende Benutzername ist admin und nicht root. Sie können sich nämlich nicht direkt als root Nutzer einloggen! Über sudo -i könnten Sie dann nachher wechseln. Müssen Sie aber nicht!

Wenn Ihr eingeloggt seid, dann tippt folgendes ein:

cd /etc/dhcpd/
sudo vi dhcpd-pxe.conf

Sie werden nun erneut nach dem Passwort gefragt! Nach dem eingeben erscheint der Inhalt der Datei!

Es sollten dort 2 Zeilen existieren. Diese löschen wir erst einmal.

Tippen Sie dafür folgendes ein:
:0,2d und mit ENTER bestätigen. Danach ist die Datei leer!

Der unten stehende Code muss in diese Datei eingefügt werden. Allerdings müssen Sie die IP Adresse noch ändern. In meinem Beispiel steht überall 192.168.1.2. Dort gehört die Synology NAS IP rein.

# PXEClient Codes
dhcp-vendorclass=BIOS,PXEClient:Arch:00000
dhcp-vendorclass=UEFI32,PXEClient:Arch:00006
dhcp-vendorclass=UEFI,PXEClient:Arch:00007
dhcp-vendorclass=UEFI64,PXEClient:Arch:00009

# In der Standardkonfiguration wird PXELinux für BIOS/Legacy Clients verteilt!
# Für UEFI & UEFI64 Clients wird die iPXE Firmware verwendet!
# Sie können auch alles über iPXE laufen lassen, müssen aber stets darauf achten,
# dass immer nur ein Eintrag pro Modus aktiv ist!
# Durch das setzen der Raute vor den Zeilen können Sie die Zeilen deaktivieren.

# PXE Boot Abschnitt

# Beispiel Eintrag und Erklärung
# Boot-Tag, Boot-Dateiname, Server Name (DNS), Server IP Addresse
# dhcp-boot=tag:BIOS,pxelinux.0,192.168.1.2,192.168.1.2
# Boot-Tag, DHCP-Option 209, Pfad zur Syslinux-Konfigurationsdatei
# dhcp-option-force=tag:BIOS,209,pxelinux.cfg/default_BIOS

# BIOS/Legacy Modus
# PXELinux / Syslinux
dhcp-boot=tag:BIOS,pxelinux.0,192.168.1.2,192.168.1.2
dhcp-option-force=tag:BIOS,209,pxelinux.cfg/default_BIOS

# UEFI32 Modus
# dhcp-boot=tag:UEFI32,bootia32.efi,192.168.1.2,192.168.1.2

# UEFI Modus
# Standard für UEFI Rechner
# dhcp-boot=tag:UEFI,bootx64.efi,192.168.1.2,192.168.1.2

# UEFI64 Modus
# dhcp-boot=tag:UEFI64,bootx64.efi,192.168.1.2,192.168.1.2

# iPXE Abschnitt
# Alle aktivierten Einträge verwenden die iPXE Firmware

dhcp-match=set:iPXE,175 # iPXE sends a 175 option.

# Die erste Zeile ist stets die Firmware!
# Die zweite Zeile ist der eigentliche Bootloader!

# BIOS/Legacy Modus
# dhcp-boot=tag:!iPXE,tag:BIOS,undionly.kpxe,192.168.1.2,192.168.1.2
# dhcp-boot=tag:BIOS,tag:iPXE,pxelinux.kpxe,192.168.1.2,192.168.1.2

# UEFI32 Modus
dhcp-boot=tag:!iPXE,tag:UEFI32,iPXE32.efi,192.168.1.2,192.168.1.2
dhcp-boot=tag:UEFI32,tag:iPXE,pxeEFI32.ipxe,192.168.1.2,192.168.1.2

# UEFI Modus
# Standard für UEFI Rechner
dhcp-boot=tag:!iPXE,tag:UEFI,iPXE64.efi,192.168.1.2,192.168.1.2
dhcp-boot=tag:UEFI,tag:iPXE,pxeEFI64.ipxe,192.168.1.2,192.168.1.2

# UEFI64 Modus
dhcp-boot=tag:!iPXE,tag:UEFI64,iPXE64.efi,192.168.1.2,192.168.1.2
dhcp-boot=tag:UEFI64,tag:iPXE,pxeEFI64.ipxe,192.168.1.2,192.168.1.2

Wenn Sie das getan haben, dann kopieren Sie den ganzen Code in den Zwischenspeicher und widmen sich wieder Putty. Immer noch im Editor drücken Sie nun EINMAL die Einfügen Taste auf Ihrer Tastatur. Vergewissern Sie sich, dass der Cursor ganz oben links ist. Drücken Sie nun einmal die rechte Maustaste. Der ganze Code sollte nun in der Datei stehen. Als Nächstes müssen wir die Änderung noch speichern.

Drücken Sie dafür einmal die ESC Taste. Danach schreiben Sie folgendes:

:w und mit ENTER bestätigen. Die Meldung erscheint, dass der Inhalt gespeichert wurde!
:q und mit ENTER bestätigen. Sie verlassen den Editor!

Anmerkung bei Verwendung eines anderen DHCP Servers!

Wenn Sie den DHCP Server der Synology verwenden, können sie diesen Abschnitt komplett bis zum Punkt: “DHCP Server neu starten”, überspringen!

Dadurch das der DHCP Server der Synology die IP-Adressen vergibt, ist dieser auch der Entscheidungsträger welche Dateien und Konfigurationen übermittelt werden. Dadurch können Sie sowohl Legacy, als auch UEFI Systeme problemlos starten ohne vorher die Server umstellen zu müssen (Bootloader o.ä.).

DHCP Konfiguration Optimal
DHCP Konfiguration Optimal

Wenn Sie natürlich einen anderen DHCP Server verwenden (Einen des Routers beispielsweise), dann müssen Sie natürlich auch dafür sorge tragen, dass dem Client auch die notwendigen Konfigurationsdateien übermittelt werden! Bei den normalen Routern haben Sie aber das Problem, dass Sie so tief in das System gar nicht eintauchen können, um solche Modifikationen zu tätigen. Bei einer Fritzbox 7490 zum Beispiel, können Sie ja nicht einmal DHCP Optionen angeben…. Ähnlich düster sieht es da auch bei den Speedports der Telekom aus.

Selbst wenn Sie einen Router besitzen der die Angabe eines TFTP / PXE Servers zulässt haben Sie immer noch das Problem, dass Sie diesen nicht so einstellen könnten, dass er anhand der PXEClient Codes automatisch die verschiedenen Bootloader sendet. Ich habe bis jetzt noch bei KEINEM Router gesehen, dass ich je nach Client Architektur, 3 verschiedene Angaben machen konnte.

Genau das wäre aber äußerst sinnvoll. Denn dadurch würde man sich das Editieren in der Shell nämlich sparen können.

Das Resultat wäre also immer das:

DHCP Konfiguration Suboptimal
DHCP Konfiguration Suboptimal

Sie müssen sich also hier entscheiden: Welchen Bootloader will ich denn angeben?

Dieser ist statisch! Denn automatisch kann hier nicht ermittelt werden in welchem Modus der Client gebootet ist. Das hat dann zur Folge, dass Sie entweder im falschen Modus sind, wenn beispielsweise der Legacy Bootloader im Netz übermittelt wird, aber der Client im UEFI Modus gestartet ist oder beide Teile übereinstimmen (Bootloader und Clientsystem), aber die default Datei nicht gefunden werden kann, da eben der Konfigurationspart nicht beim DHCP Server eingestellt wurde.

Dann erhalten Sie die Meldung: “Cant locate configuration file“.

Außerdem müssten Sie hier auch immer manuell umschalten, welcher Bootloader denn gestartet werden soll. Dazu müssen Sie natürlich jedes Mal die Einstellungen beim TFTP Server ändern.

Von mir erfolgreich getestete andere DHCP/TFTP/PXE Server:

  • Tiny PXE Server
  • Windows DHCP Server

Diese können alle so eingestellt werden, dass Sie dasselbe erreichen können wie hier in der Anleitung beschrieben ist. Womöglich kann das auch noch bei anderen DHCP Servern eingestellt werden, ich habe aber logischerweise nicht alle auf der Welt erhältlichen ausprobiert! Klar! 😀

DHCP Server neu starten

Damit unsere Änderungen auch angenommen werden, muss der DHCP Server einmal neu gestartet werden. Gehen Sie dafür im DSM auf Systemsteuerung und dann DHCP Server und klicken dort einmal auf DHCP deaktivieren und im Anschluss nochmals auf aktivieren.

Der Test!

iPXE EFI32 & EFI64 Boot Test:
Der EFI64 Boot kann fehlschlagen, wenn Sie auf Ihrem System Secure Boot aktiviert haben. Die iPXE EFI Loader sind nicht signiert und somit verweigert der Secure Boot den Start dieser Dateien. Dieses Problem gibt es auch bei sehr vielen Linux-Live-Systemen. Um diesem Umstand entgegen zu wirken deaktivieren Sie einfach den Secure Boot.

Booten Sie nun Ihren Rechner über Netzwerk und überzeugen Sie sich davon, ob alles soweit geklappt hat. Es ist dabei egal, ob Sie das mit einem BIOS- oder UEFI Rechner machen. Es funktioniert beides durch unsere tatkräftige Arbeit. Wenn alles funktioniert gratuliere Ich ihnen, dass Sie solange durchgehalten haben!

Nun sollte der nächste Schritt vor Veränderungen ein kleines Backup sein, damit Sie durch Anpassungen nichts zerstören.

Erweitern Sie jetzt nach belieben Ihre Konfigurationsdateien.

Problembewältigung / langsame Datenübertragung

https://www.german-syslinux-blog.de/pxe-boot-langsame-datenuebertragung/

Schlusswort

Ich werde noch Anleitungen verfassen wie man WinPEs bootet, um Windows zu installieren oder Linux-Live-Systeme aus dieser Umgebung heraus zu starten.

So könnte das, wenn Sie das erweitert haben, aussehen:

Ein voll gepacktes Menü mit etlichen Submenüs:

PXELinux Legacy Menü

Den Windows-Boot-Manager aus Syslinux heraus starten:

PXELinux Legacy Menü

Das Besondere hierbei ist, dass aus dem PXElinux heraus der Windows-Boot-Manager gestartet werden kann. Somit ist es auch ein leichtes WIM oder VHDX Images zu laden. Im UEFI Modus können Sie dies mittels iPXE erreichen.

Windows-Boot-Manager Auswahlmenü
Windows-Boot-Manager Auswahlmenü

Linux-Live-Systeme aus dem Netzwerk starten:

PXELinux Legacy Menü

Backup&Recovery Software starten:

PXELinux Legacy Menü

Hardwaretools zur Fehlerüberprüfung wie beispielsweise Memtest86+:

PXELinux Legacy Menü

Ein einziges WinPE starten, um alle Windows Versionen installieren zu können:

WinPE Bootscreen mit Auswahlmenü
WinPE Bootscreen mit Auswahlmenü

Das Auswahlmenü lebe hoch:

iPXE UEFI Umgebung:

iPXE UEFI Menü

Aufgrund der neuen veränderten Anleitung und der Verwendung von iPXE im UEFI Modus, habe ich alle alten Kommentare gelöscht, die sich auf die Syslinux EFI Versionen bezogen oder auf alte Konfigurationen, die so gar nicht mehr in der Anleitung stehen. Ich will die Leute nicht unnötig verwirren. Stehengeblieben sind also nur noch gültige Einträge, die auch einen Bezug zu der jetzigen Anleitung haben. Nicht traurig sein, sollte eines Ihrer Kommentare der radikalen Schere zum Opfer gefallen sein 🙂

Zum Anfang!

64 Antworten auf „PXElinux 6.04-pre1/iPXE 1.20.1 – PXE&TFTP&DHCP Server einrichten“

  1. Diese Anleitung ist wirklich klasse! Das hast du dir aber echt viel Mühe gegeben und das sauber ausgearbeitet. Danke 🙂

    Lässt sich das auch auf einem Windows Server nutzen? Also nicht auf dem NAS sondern einem WDS Server mit einem weiteren Windows Server für DHCP im selben Subnetz.

  2. Hallo ich bin die Anleitung durchgegangen stolpere aber über folgenden Punkt. Ich habe einen RS819.
    Ich kann den DHCP Server nicht neustarten ohne das ich vorher PXE abgeschaltet habe. Wenn ich den neustarte wenn PXE aktiviert bleibt, dann funktioniert der DHCP nicht. Er verteilt keine IP´s und wenn ich in den Einstellungen rein will kommt “Operation fehlgeschlagen”. Wenn ich PXE deaktiviere kann ich den den DHCP starten aber dann sind ja die gemachten einstellungen in der config wieder weg. Jemand ne Idee? 🙂

    1. Beim Bearbeiten der dhcp-pxe.conf muss dann ein Fehler passiert sein. Gucke einfach mal nach, ob jede Zeile so aussieht wie die in der Anleitung veröffentlichten. Außer der IP Adressen natürlich.

  3. Muss mich nochmal melden. Ich will das über UEFI Clonezilla geladen wird. habe dazu eine aktuelle Clonezilla Version geladen und unter Images einen “clonezilla” Ordner erstellt welcher folgende Dateien enthält(aus der AMD64 zip von der Clonezilla seite):
    filesystem.squashfs
    initrd.img
    vmlinuz

    dann habe ich in der pxeEFI64.ipxe.menu einen Menüpunkt angelegt welcher folgendes ausführt:

    :clonezilla
    kernel tftp://192.168.5.2/images/clonezilla/vmlinuz initrd=images/clonezilla/initrd.img fetch=tftp://192.168.5.2/images/clonezilla/filesystem.squashfs boot=live config noswap edd=on nomodeset noprompt nosplash locales=de_DE.UTF-8 keyboard-layouts=de ocs_prerun=”dhclient” ocs_live_run=”/usr/sbin/ocs-sr -um beginner -q2 -j2 -z1p -sc -p poweroff ask_user” ocs_live_extra_param=”” ocs_repository=”smb://clonezilla:guest@192.168.5.2/ab-Images/” ocs_live_batch=no ocs_netlink_timeout=5
    initrd tftp://192.168.5.2/images/clonezilla/initrd.img
    boot || goto failed
    goto start

    es werden beide Dateien geladen aber dann kommt die Meldung:
    EFI stub: ERROR Failed to open file: images/clonezilla/initrd.img
    Coult not boot: Error 0x7f04828e (http://ipxe.org/7f04828e)
    Der Start ist fehlgeschlagen
    Schreibe ‘exit’ um wieder ins Menue zu gelangen

    im Legacy Modus funktioniert das ganze super
    ab in der dafult_BIOS folgendes eingetragen:
    LABEL clonezilla
    MENU LABEL – Clonezilla
    KERNEL images/clonezilla/vmlinuz
    APPEND initrd=images/clonezilla/initrd.img fetch=tftp://192.168.5.2/images/clonezilla/filesystem.squashfs boot=live config noswap edd=on nomodeset noprompt nosplash locales=de_DE.UTF-8 keyboard-layouts=de ocs_prerun=”dhclient” ocs_live_run=”/usr/sbin/ocs-sr -q2 -j2 -z1p -sc -p poweroff ask_user” ocs_live_extra_param=”” ocs_repository=”smb://clonezilla:clonezilla@192.168.5.2/abImages/” ocs_live_batch=no ocs_netlink_timeout=5

    Das geht super. Warum funktioniert das im UEFI modus nicht? Hast du nen Tip? 🙂

  4. Hallo Stefan, ich bin deiner Anleitung mit ein paar kleinen Abweichungen gefolgt.
    An folgenden Punkten weiche ich ab
    – im Ordner pxelinux.cfg habe ich die Datei “default_BIOS” umbenannt nach “default” (hab ich umbenannt da ich sonst gar nicht bis hierhin gekommen wäre, in den Logs sah ich wie immer versucht wurde die “default” zu holen aus dem Ordner, dort ist alllerdings “nur” die “default_Bios” gewesen, nach dem Umbenennen ging es dann weiter
    – ich verwende dnsmasq als DHCP-Proxy und als TFTP-Server (erkennbar an den Anpassungen der unten aufgeführten dnsmasq.conf,) als DNS und DHCP agiert weiter mein Router
    – weitere Änderung ist in der dnsmasq.conf

    pxe-service=x86PC,"Netzwerk Boot",pxelinux

    wenn ich die Zeile nicht setze komme ich weder über Bios noch über Legacy ins jeweilige Menü
    Wenn ich einen PC mit Bios starte, komme ich ganz normal bis zum PXELinux Legacy Menü. Wenn ich allerdings einen PC mit UEFI starte, passiert folgendes->

    Server IP address is 192.168.10.36
    NBP filename is IPXE64.efi
    NBP filesize is 1013216 Bytes
    Downloading NBP file...
    
    NBP file downloaded succesfully.
    iPXE initialising devices...ok
    
    
    iPXE 1.20.1+  (g47098)  -- Open Source Network Boot Firmware -- http://ipxe.org
    Features: DNS HTTP iSCSI TFTP SRP AoE EFI Menu
    
    net0:  ab:cd:ef:gh:ij:kl using SNP on SNP-0x3faXXXX (open)
       [Link:up, TX:0 TXE:0 RX:0 RXE:0]
    Configuring (net0 ab:cd:ef:gh:ij:kl)... ok
    net0: 192.168.10.128/255.255.255.0 gw 192.168.10.1
    net0: abcd::efgh:ijkl:mnop:qrst:/64
    net0: abcd::efgh:ijkl:mnop:qrst:/64
    Next Server: 192.168.10.36
    Filename: pxeEFI64.ipxe
    tftp://192.168.10.36/pxeEFI64.ipxe... ok
    pxeEFI64.ipxe : 229 bytes [script]
    pxeEFI64.ipxe.cfg... ok
    tftp://192.168.10.1/pxeEFI64.ipxe.menu...
    
    No more network devices

    Ich komme also nicht ins Menü

    Ab dem Punkt geht es dann nicht weiter, wundert mich auch nicht da die Datei vom falschen Ort versucht wird zu holen. Ich verstehe nur nicht warum auf einmal auf 192.168.10.1 gezeigt wird, statt auf 192.168.10.36.

    Hier ist die pxeEFI64.ipxe.cfg zu sehen

    #!ipxe
    
    # OPTIONAL: NFS server used for menu files and other things
    # Must be specified as IP, as some distros don't do proper name resolution
    set nfs-server 192.168.10.36
    set nfs-root /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/
    
    # OPTIONAL: HTTP server used for menu files and other things
    # Must be specified as IP, as some distros don't do proper name resolution
    set http-server SERVER_IP
    
    # OPTIONAL: Base URL used to resolve most other resources
    # Should always end with a slash
    #set boot-url http://boot.smidsrod.lan/
    #set boot-url http://${http-server}/
    set boot-url tftp://${next-server}/
    
    # REQUIRED: Absolute URL to the menu script, used by pxeEFI64.ipxe
    # and commonly used at the end of simple override scripts
    # in ${boot-dir}.
    set menu-url ${boot-url}pxeEFI64.ipxe.menu

    Und hier ist einmal meine dnsmasq.conf

    port=0
    dhcp-range=192.168.10.0,proxy
    enable-tftp
    tftp-root=/srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/
    
    pxe-service=x86PC,"Netzwerk Boot",pxelinux
    
    # PXEClient Codes
    dhcp-vendorclass=BIOS,PXEClient:Arch:00000
    dhcp-vendorclass=UEFI32,PXEClient:Arch:00006
    dhcp-vendorclass=UEFI,PXEClient:Arch:00007
    dhcp-vendorclass=UEFI64,PXEClient:Arch:00009
     
    # In der Standardkonfiguration wird PXELinux für BIOS/Legacy Clients verteilt!
    # Für UEFI & UEFI64 Clients wird die iPXE Firmware verwendet!
    # Sie können auch alles über iPXE laufen lassen, müssen aber stets darauf achten,
    # dass immer nur ein Eintrag pro Modus aktiv ist!
    # Durch das setzen der Raute vor den Zeilen können Sie die Zeilen deaktivieren.
     
    # PXE Boot Abschnitt
     
    # Beispiel Eintrag und Erklärung
    # Boot-Tag, Boot-Dateiname, Server Name (DNS), Server IP Addresse
    # dhcp-boot=tag:BIOS,pxelinux.0,0.0.0.0,,0.0.0.0,
    # Boot-Tag, DHCP-Option 209, Pfad zur Syslinux-Konfigurationsdatei
    # dhcp-option-force=tag:BIOS,209,pxelinux.cfg/default_BIOS
     
    # BIOS/Legacy Modus
    # PXELinux / Syslinux
    dhcp-boot=tag:BIOS,pxelinux.0,0.0.0.0
    dhcp-option-force=tag:BIOS,209,pxelinux.cfg/default_BIOS
     
    # UEFI32 Modus
    # dhcp-boot=tag:UEFI32,bootia32.efi,0.0.0.0
     
    # UEFI Modus
    # Standard für UEFI Rechner
    # dhcp-boot=tag:UEFI,bootx64.efi,0.0.0.0
     
    # UEFI64 Modus
    # dhcp-boot=tag:UEFI64,bootx64.efi,0.0.0.0
     
    # iPXE Abschnitt
    # Alle aktivierten Einträge verwenden die iPXE Firmware
     
    dhcp-match=set:iPXE,175 # iPXE sends a 175 option.
     
    # Die erste Zeile ist stets die Firmware!
    # Die zweite Zeile ist der eigentliche Bootloader!
     
    # BIOS/Legacy Modus
    # dhcp-boot=tag:!iPXE,tag:BIOS,undionly.kpxe,0.0.0.0,
    # dhcp-boot=tag:BIOS,tag:iPXE,pxelinux.kpxe,0.0.0.0,
     
    # UEFI32 Modus
    dhcp-boot=tag:!iPXE,tag:UEFI32,iPXE32.efi,0.0.0.0
    dhcp-boot=tag:UEFI32,tag:iPXE,pxeEFI32.ipxe,0.0.0.0
     
    # UEFI Modus
    # Standard für UEFI Rechner
    dhcp-boot=tag:!iPXE,tag:UEFI,iPXE64.efi,0.0.0.0
    dhcp-boot=tag:UEFI,tag:iPXE,pxeEFI64.ipxe,0.0.0.0
     
    # UEFI64 Modus
    dhcp-boot=tag:!iPXE,tag:UEFI64,iPXE64.efi,0.0.0.0
    dhcp-boot=tag:UEFI64,tag:iPXE,pxeEFI64.ipxe,0.0.0.0

    Hast du einen Hinweis für mich wo mein Fehler liegt?

    lg Nick

    1. Hallo Nick,

      Warum er anfangs korrekt auf die 36er Adresse zeigt (Next-Server) und beim zweiten Aufruf nicht, könnte daran liegen, das beim zweiten Mal die Variable: ${next-server} in der iPXE Umgebung genutzt wird, die in den *.ipxe.cfg Dateien gesetzt ist. Ändere dort einfach die IP auf die korrekte um, wenn der mit der Variable im proxy Modus durcheinander kommt.

      Mögliche andere Variablen:
      https://ipxe.org/cfg

      Dort also einfach statt:

      set boot-url tftp://${next-server}/

      das hier schreiben:

      set boot-url tftp://192.168.10.36/

      Dann müsste er die zweite Datei auch korrekt laden.

        1. Hallo Stefan,

          nun hab ich eine neue Herausforderung, meine VMs über PXE zu booten klappt einwandfrei, jedoch stehe ich nun vor der unerwarteten Herausforderungen das es auf bisher 2 getesteten PCs nicht klappt (ein Laptop mit USB-C auf LAN und ein PC mit LAN, beide 64 Bit UEFI)
          Anbei ein Auszug aus der syslog. Hier zu sehen der Laptop mit USB-C auf LAN

          Line 1188: Jan 15 07:10:23 raspberrypi dnsmasq-dhcp[10802]: PXE(eth0) 98:e7:43:f6:85:91 proxy
          	Line 1189: Jan 15 07:10:27 raspberrypi dnsmasq-dhcp[10802]: PXE(eth0) 98:e7:43:f6:85:91 proxy
          	Line 1190: Jan 15 07:10:28 raspberrypi dnsmasq-tftp[10802]: error 8 User aborted the transfer received from 192.168.10.44
          	Line 1191: Jan 15 07:10:28 raspberrypi dnsmasq-tftp[10802]: failed sending /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/iPXE64.efi to 192.168.10.44
          	Line 1192: Jan 15 07:10:29 raspberrypi dnsmasq-tftp[10802]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/iPXE64.efi to 192.168.10.44

          Hier der Auszug wenn der PC es mit PXE versucht

          	Line 1268: Jan 15 07:29:56 raspberrypi dnsmasq-dhcp[10802]: PXE(eth0) 4c:cc:6a:9b:f7:5f proxy
          	Line 1269: Jan 15 07:29:59 raspberrypi dnsmasq-dhcp[10802]: PXE(eth0) 4c:cc:6a:9b:f7:5f proxy

          Hier passiert also nochmal weniger, interessant finde ich es wenn ich mir die Logs einer UEFI-VM ansehe->

          	Line 1285: Jan 15 07:33:30 raspberrypi dnsmasq-dhcp[10802]: PXE(eth0) 00:15:5d:0a:4e:1f proxy
          	Line 1286: Jan 15 07:33:34 raspberrypi dnsmasq-dhcp[10802]: PXE(eth0) 00:15:5d:0a:4e:1f proxy
          	Line 1287: Jan 15 07:33:35 raspberrypi dnsmasq-tftp[10802]: error 8 User aborted the transfer received from 192.168.10.116
          	Line 1288: Jan 15 07:33:35 raspberrypi dnsmasq-tftp[10802]: failed sending /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/iPXE64.efi to 192.168.10.116
          	Line 1289: Jan 15 07:33:36 raspberrypi dnsmasq-tftp[10802]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/iPXE64.efi to 192.168.10.116
          	Line 1290: Jan 15 07:33:38 raspberrypi dnsmasq-dhcp[10802]: PXE(eth0) 00:15:5d:0a:4e:1f proxy
          	Line 1291: Jan 15 07:33:38 raspberrypi dnsmasq-tftp[10802]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/pxeEFI64.ipxe to 192.168.10.117
          	Line 1292: Jan 15 07:33:38 raspberrypi dnsmasq-tftp[10802]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/pxeEFI64.ipxe.cfg to 192.168.10.117
          	Line 1293: Jan 15 07:33:38 raspberrypi dnsmasq-tftp[10802]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/pxeEFI64.ipxe.menu to 192.168.10.117
          	Line 1294: Jan 15 07:33:39 raspberrypi dnsmasq-tftp[10802]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/iPXE_1024.png to 192.168.10.117

          Wenn ich es richtig erfolgt auf den ersten DHCP-Discover zwar eine zugewiesene IP-Adresse, allerdings schlägt das Senden der iPXE64.efi erstmal fehl und bricht danach den Vorgang ab mit

           error 8 User aborted the transfer received from 192.168.10.116

          allerdings scheint die VM danach einfach stumpf erneut ein weiteres mal ein DHCP-Discover zu senden und dann klappt auch schon alles.

          Hast du vllt. einen Hinweis für mich wonach ich mal schauen oder suchen kann?

          1. Ich hab nun in der dnsmasq.conf

            log-dhcp

            hinzugefügt.

            Nun sehen die Logs wesentlich detaillierter aus->
            Log von einer UEFI-VM->

            	Line 2112: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2113: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 vendor class: PXEClient:Arch:00007:UNDI:003000
            	Line 2114: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 PXE(eth0) 00:15:5d:0a:4e:1f proxy
            	Line 2115: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 tags: UEFI, eth0
            	Line 2116: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 bootfile name: iPXE64.efi
            	Line 2117: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 next server: 192.168.10.36
            	Line 2118: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 broadcast response
            	Line 2119: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 sent size:  1 option: 53 message-type  2
            	Line 2120: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 sent size:  4 option: 54 server-identifier  192.168.10.36
            	Line 2121: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 sent size:  9 option: 60 vendor-class  50:58:45:43:6c:69:65:6e:74
            	Line 2122: Jan 15 10:57:52 raspberrypi dnsmasq-dhcp[19503]: 3080408062 sent size: 17 option: 97 client-machine-id  00:90:c4:00:dd:4e:25:f1:4f:89:dd:90:55:14...
            	Line 2123: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 3080408062 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2124: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 3080408062 vendor class: PXEClient:Arch:00007:UNDI:003000
            	Line 2125: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2126: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 vendor class: PXEClient:Arch:00007:UNDI:003000
            	Line 2127: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 PXE(eth0) 00:15:5d:0a:4e:1f proxy
            	Line 2128: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 tags: UEFI, eth0
            	Line 2129: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 bootfile name: iPXE64.efi
            	Line 2130: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 next server: 192.168.10.36
            	Line 2131: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 sent size:  1 option: 53 message-type  5
            	Line 2132: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 sent size:  4 option: 54 server-identifier  192.168.10.36
            	Line 2133: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 sent size:  9 option: 60 vendor-class  50:58:45:43:6c:69:65:6e:74
            	Line 2134: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 sent size: 17 option: 97 client-machine-id  00:90:c4:00:dd:4e:25:f1:4f:89:dd:90:55:14...
            	Line 2135: Jan 15 10:57:56 raspberrypi dnsmasq-dhcp[19503]: 2334173869 sent size: 10 option: 43 vendor-encap  06:01:08:0a:04:00:50:58:45:ff
            	Line 2136: Jan 15 10:57:57 raspberrypi dnsmasq-tftp[19503]: error 8 User aborted the transfer received from 192.168.10.120
            	Line 2137: Jan 15 10:57:57 raspberrypi dnsmasq-tftp[19503]: failed sending /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/iPXE64.efi to 192.168.10.120
            	Line 2138: Jan 15 10:57:59 raspberrypi dnsmasq-tftp[19503]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/iPXE64.efi to 192.168.10.120
            	Line 2140: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2141: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 vendor class: PXEClient:Arch:00007:UNDI:003010
            	Line 2142: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 user class: iPXE
            	Line 2143: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 PXE(eth0) 00:15:5d:0a:4e:1f proxy
            	Line 2144: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 tags: UEFI, iPXE, eth0
            	Line 2145: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 bootfile name: pxeEFI64.ipxe
            	Line 2146: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 next server: 192.168.10.36
            	Line 2147: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 broadcast response
            	Line 2148: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 sent size:  1 option: 53 message-type  2
            	Line 2149: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 sent size:  4 option: 54 server-identifier  192.168.10.36
            	Line 2150: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 sent size:  9 option: 60 vendor-class  50:58:45:43:6c:69:65:6e:74
            	Line 2151: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 sent size: 17 option: 97 client-machine-id  00:90:c4:00:dd:4e:25:f1:4f:89:dd:90:55:14...
            	Line 2152: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2153: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 vendor class: PXEClient:Arch:00007:UNDI:003010
            	Line 2154: Jan 15 10:58:01 raspberrypi dnsmasq-dhcp[19503]: 81238895 user class: iPXE
            	Line 2155: Jan 15 10:58:01 raspberrypi dnsmasq-tftp[19503]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/pxeEFI64.ipxe to 192.168.10.121
            	Line 2156: Jan 15 10:58:01 raspberrypi dnsmasq-tftp[19503]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/pxeEFI64.ipxe.cfg to 192.168.10.121
            	Line 2157: Jan 15 10:58:01 raspberrypi dnsmasq-tftp[19503]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/pxeEFI64.ipxe.menu to 192.168.10.121
            	Line 2158: Jan 15 10:58:02 raspberrypi dnsmasq-tftp[19503]: sent /srv/dev-disk-by-label-hdd1/hdd1/PXE-Umgebung/iPXE_1024.png to 192.168.10.121

            Log vom UEFI-PC (LAN)

            	
            Line 2166: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2167: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 vendor class: PXEClient:Arch:00007:UNDI:003016
            	Line 2168: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 PXE(eth0) 4c:cc:6a:9b:f7:5f proxy
            	Line 2169: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 tags: UEFI, eth0
            	Line 2170: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 bootfile name: iPXE64.efi
            	Line 2171: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 next server: 192.168.10.36
            	Line 2172: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 broadcast response
            	Line 2173: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 sent size:  1 option: 53 message-type  2
            	Line 2174: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 sent size:  4 option: 54 server-identifier  192.168.10.36
            	Line 2175: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 sent size:  9 option: 60 vendor-class  50:58:45:43:6c:69:65:6e:74
            	Line 2176: Jan 15 11:00:52 raspberrypi dnsmasq-dhcp[19503]: 3392863159 sent size: 17 option: 97 client-machine-id  00:2f:51:a6:e8:85:e7:47:62:40:4d:4c:cc:6a...
            	Line 2177: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 3392863159 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2178: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 3392863159 vendor class: PXEClient:Arch:00007:UNDI:003016
            	Line 2179: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2180: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 vendor class: PXEClient:Arch:00007:UNDI:003016
            	Line 2181: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 PXE(eth0) 4c:cc:6a:9b:f7:5f proxy
            	Line 2182: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 tags: UEFI, eth0
            	Line 2183: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 bootfile name: iPXE64.efi
            	Line 2184: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 next server: 192.168.10.36
            	Line 2185: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 sent size:  1 option: 53 message-type  5
            	Line 2186: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 sent size:  4 option: 54 server-identifier  192.168.10.36
            	Line 2187: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 sent size:  9 option: 60 vendor-class  50:58:45:43:6c:69:65:6e:74
            	Line 2188: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 sent size: 17 option: 97 client-machine-id  00:2f:51:a6:e8:85:e7:47:62:40:4d:4c:cc:6a...
            	Line 2189: Jan 15 11:00:55 raspberrypi dnsmasq-dhcp[19503]: 2765722650 sent size: 10 option: 43 vendor-encap  06:01:08:0a:04:00:50:58:45:ff
            	Line 2191: Jan 15 11:01:08 raspberrypi dnsmasq-dhcp[19503]: 4143923040 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2192: Jan 15 11:01:08 raspberrypi dnsmasq-dhcp[19503]: 4143923040 vendor class: MSFT 5.0
            	Line 2193: Jan 15 11:01:08 raspberrypi dnsmasq-dhcp[19503]: 4143923040 client provides name: DESKTOP-1AQJCM1
            	Line 2194: Jan 15 11:01:09 raspberrypi dnsmasq-dhcp[19503]: 4143923040 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2195: Jan 15 11:01:09 raspberrypi dnsmasq-dhcp[19503]: 4143923040 vendor class: MSFT 5.0
            	Line 2196: Jan 15 11:01:09 raspberrypi dnsmasq-dhcp[19503]: 4143923040 client provides name: DESKTOP-1AQJCM1
            	Line 2197: Jan 15 11:01:11 raspberrypi dnsmasq-dhcp[19503]: 4143923040 available DHCP subnet: 192.168.10.0/255.255.255.0
            	Line 2198: Jan 15 11:01:11 raspberrypi dnsmasq-dhcp[19503]: 4143923040 vendor class: MSFT 5.0
            	Line 2199: Jan 15 11:01:11 raspberrypi dnsmasq-dhcp[19503]: 4143923040 client provides name: DESKTOP-1AQJCM1

            Bislang kann ich mir da allerdings noch keinen Reim drauf machen was ich anpassen muss.

          2. Hallo Nick,

            dass die Übertragung anfangs begonnen wird und dann durch den Nutzer/Client abgebrochen wird (error 8 User aborted…), ist bei vielen PXE Roms das normale verhalten, ob die Datei überhaupt existiert. Da wird dann meist der erste Block gelesen und wenn dies möglich war wird der Transfer durch den Client abgebrochen. Soweit alles gut. Die darauffolgende failed Meldung ist natürlich das Resultat des Clientabbruchs. Auch das ist “normal”. Die erneute Übertragung – hier mit sent markiert – funktioniert ja dann auf Anhieb. Das selbe Verhalten habe ich bis jetzt auch immer in meiner Umgebung gehabt. Da können trotzdem alle Geräte über Netzwerk booten, ob VM, PC, Laptop usw. ist da Rille. Ich habe hier aber auch keinen Windows DHCP Server am laufen 🙂

            Das Problem scheint zu sein, dass bei euren Windows Clients als Vendor Class genau bei dem Teil, wo das *.ipxe Script geladen werden müsste, sich die Vendor Class zu MSFT 5.0 ändert. Warum das jetzt passiert kann ich dir auch nicht genau sagen! In der Proxy dhcp.conf wird aber nach folgenden Vendor classes Ausschau gehalten:

            dhcp-vendorclass=BIOS,PXEClient:Arch:00000
            dhcp-vendorclass=UEFI32,PXEClient:Arch:00006
            dhcp-vendorclass=UEFI,PXEClient:Arch:00007
            dhcp-vendorclass=UEFI64,PXEClient:Arch:00009

            Da keine Übereinstimmung gefunden wird, geht es auch nicht weiter, denn MSFT 5.0 existiert hier nicht. Zur Client-Architektur-Unterscheidung ist das auch ungeeignet. Da müsste dann eventuell der Windows Server Admin bei Euch ran. Hierbei kann ich dir nur bedingt helfen, da ich eine völlig andere Umgebung habe und dies nicht mal eben selbst testen könnte. Bei manchen Teilen fehlt mir schlicht auch die Erfahrung um da eine wirklich 100%tige Antwort geben zu können.

            Diese Anleitung könnte vielleicht helfen:
            https://ittherapist.net/2018/02/10/enable-bios-and-uefi-boot-for-pxe-in-dhcp/

            Was mich natürlich zusätzlich ein wenig wundert ist, dass die VM funktioniert, aber alle anderen “echten” Clients nicht. Da du den Raspberry Pi als ProxyDCHP Server verwendest… Es gab schon sehr oft das Problem mit diesen Geräten, dass wenn zu viel dranhängt, diese nicht mehr genug Strom liefern und somit dann auch nicht mehr richtig funktionieren. Ich kenne deinen Aufbau jetzt nicht, aber ich würde testweise einfach mal alles außer das RJ45 Kabel davon abklemmen und dann nochmal probieren, ob der DHCP Proxy dann normal funktioniert. Überlege außerdem auch selbst mal, warum die VM funktioniert und die anderen Geräte nicht. Was ist anders?

Schreibe einen Kommentar zu Stefan Saft Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.