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 – 18.10.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.0,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!

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

  1. Ich hatte vergessen, im DSM im Reiter PXE die Ipxelinux.0 (statt pxelinux.0) auszuwählen (obwohl es ja logisch ist – das stand in der zweiten Anleitung nicht drin).

    Jetzt funktioniert es in der Tat: die iso hat 415 MB und nach 2 Minuten ist sie geladen. Anbetracht dessen dass vorher gar nichts ging bin ich sehr zufrieden. Es lag also wirklich an dem langsamen TFTP-Protokoll.

    Herzlichen Dank nochmal!

    1. Schön, das es jetzt für dich erträglich wurde. Meine persönliche Meinung ist jedoch nach wie vor, dass deine Kiste ein Problem hat. Wenn ich über den HTTP Server etwas lade, dann passiert das im Schnitt mit 30MB/s. 2 Minuten für 415MB sind daher auch sehr sehr schlecht. Die brauche ich nicht mal über das TFTP Protokoll bei der Größe.

      Kann es nicht eher sein, das deine Synology ausgelastet ist? Wie hoch ist diese ausgelastet? Welches Modell verwendest du? Ist die DSM Version aktuell? Welche Dienste laufen alle? Läuft die permanent auf >50% Auslastung? Wenn ja, welcher Dienst ist das?

      Sind eventuell die Kabel bei dir beschädigt? Geknickt?

      1. Hallo Stefan,

        ich greife das Thema Ladegeschwindigkeit nochmal auf. Bei den klassischen BIOS-Rechnern ist es mir mittlerweile gelungen, “normale” Ladezeiten zu bekommen. Grund war offensichtlich eine Netzwerk-Switch (100MB) der das Laden verzögert hat . Nachdem ich den Rechner ohne den Switch angeschlossen hatte lädt die iso innerhalb 5 – 10 Sekunden.

        Jetzt hat sich doch ein ganz neuer Rechner in mein Netzwerk verirrt und der hat in der Tat nur ein UEFI-BIOS. Ich habe daher nach deiner Anleitung das syslinux installiert.

        Dein syslinux-Menu lädt hier auch einwandfrei. Wenn ich dann aber ein Image auswähle (z.B. eine Win-PE oder eine Acronis-Rescue-iso) dann habe ich wieder das gleiche Phänomen wie bei früher bei den BIOS-Rechnern…nämlich dass die iso nicht lädt…und dann kommt irgendwannn der timeout und der Rechner bootet von der Festplatte.

        Daher nochmal eine Frage zum Verständnnis: Secure Boot ist bei mir aktiviert…du hast geschrieben Secure Boot muss bei UEFI deaktiviert werden (obwohl das Menu ja geladen wird – trotz aktivierten Secure Boot). Könnte Secure Boot verantwortlich sein dass die iso nicht lädt?

        Grüße Rainer

        1. Also hast du das Netzwerkswitch gegen ein 1Gbit Switch getauscht oder ist da nun der “neue” Rechner dran angeschlossen? 😀

          Irgendwas stimmt mit deiner Aussage aber nicht. Syslinux ist nicht Secure Boot kompatibel. Das ist Fakt. Wenn du also über das Netzwerk im UEFI Modus das Syslinux Menü siehst, dann ist der Secure Boot definitiv NICHT aktiv! Wenn er das wäre, dann würdest du eine schöne Fehlermeldung wegen eines nicht signierten Bootloaders bekommen.

          Oder redest du doch vom Windows-Boot-Manager? Verwechsele das bitte nicht! Der Windows-Boot-Manager funktioniert mit Secure Boot, aber dann würde dein Text auch wieder keinen Sinn ergeben, denn ISO Dateien kann man mittels des Boot Managers nicht starten lassen. Da sind nur WIM Dateien erlaubt.

          Wie gedenkst du denn überhaupt im UEFI Modus mit Syslinux die ISO Dateien laden zu wollen? Das geht doch gar nicht. Das Tool “Memdisk” ist komplett außer Funktion in diesem Setup. Im UEFI Modus musst du den Windows Boot Manager verteilen und nicht das Syslinux-Menü. Deswegen ja auch der Workaround mit dem Windows-Boot-Manager. Denn wenn das alles problemlos unter Syslinux funktionieren würde, hätte ich keinen Grund gehabt das überhaupt mit diesem zu lösen.

          Zitat:
          “Dein syslinux-Menu lädt hier auch einwandfrei. Wenn ich dann aber ein Image auswähle (z.B. eine Win-PE oder eine Acronis-Rescue-iso) dann habe ich wieder das gleiche Phänomen wie bei früher bei den BIOS-Rechnern…nämlich dass die iso nicht lädt…und dann kommt irgendwannn der timeout und der Rechner bootet von der Festplatte. ”

          Wenn du mit dem Memdisk Tool im UEFI Modus versuchst ISO Dateien zu laden, dann findet kein Timeout statt, sondern du frierst das System mit dem Tool ein. Memdisk ist ein reines BIOS Tool. Wenn du das im UEFI Modus verwendest würgst du deine Kiste ab. Die reagiert dann auch nicht mehr auf Eingaben. Wie der Bildschirm auszusehen hat, wenn das ISO mit Memdisk im BIOS Modus geladen wird weißt du doch. Der Bildschirm wird schwarz mit weißer Schrift und zu sehen ist der Status beim Laden des ISO’s.

          Beispiel:
          Pfad/Datei.iso………………………….OK

          Das wirst du nie im Leben im UEFI Modus gesehen haben!

          Kurzum:

          ISO mit Syslinux im UEFI Modus laden: Geht nicht!
          ISO mit dem Windows-Boot-Manager im UEFI Modus laden: Geht nicht!

          Du brauchst WIM Dateien!

          1. Danke für die Aufklärung – jetzt weiß ich einiges mehr! 🙂

            Das mit dem Netzwerkswitch bezog sich auf den alten Rechner mit BIOS-Mode…den Switch hab ich abgebaut – der war nicht wirklich notwendig….der Rechner hängt jetzt direkt am Router-LAN-Ausgang und alles ist gut.

            Also was ich sicher weiß: Ich hab auf dem neuen Rechner ein ASUS-Board mit UEFI-BIOS. Beim Boot über LAN erscheint zunächst

            “Start PXE over IPv4/IPv6”

            …und dann bin ich im syslinux-Menu. Du sagst das geht nur, wenn Secure Boot deaktiviert ist…ich werde morgen gleich nochmal schauen (Rechner steht im Büro). Ich dachte jedoch dass dies standardmäßig aktiviert ist…aber offensichtlich lag ich da falsch…

            Ich wollte dann analog zur BIOS-Variante im syslinux-Menu die iso-Dateien starten (also ich redete nicht vom Windows Boot Manger sondern von dem syslinux-Menu). Das ging dann (natürlich) nicht.

            Das mit dem Windows Boot Manager und den WIM Dateien war mir so nicht klar. Das bedeutet, ich muss mir also erst mal eine WIM-Datei erstellen….wird die dann auch im Ordner “Images” abgelegt?

        2. Wenn du die ADK Anleitung durchgegangen bist, dann werden automatisch zu den ISO-Dateien auch WIM-Dateien erstellt. Darum müsstest du dich nicht mehr kümmern. Die existieren also bereits. Musst sie nur benutzen. 🙂

          Wo du die WIM-Dateien ablegst ist total egal. Die müssen halt nur über TFTP erreichbar sein. Ich würde die wie die ISO-Dateien auch in den Images Ordner einsortieren. Denn genau genommen sind es Images. Ob die nun die Dateiextension: iso, wim, vhdx etc haben ist da nebensächlich.

          1. Was ich noch nicht verstehe:

            Aus dem syslinux lässt sich der Windows Boot Manager (noch) nicht starten.

            Das bedeutet, der Windows Boot Manger müsste bei dem UEFI-BIOS-Rechner direkt nacht dem Booten über LAN starten? Muss ich das irgendwo selber auswählen – ob ich jetzt im syslinux-menu lande oder im Windows Boot Manager? Oder sollte dass automatisch erkannt werden (BIOS legacy Mode –> landet automatisch im syslinux Menu / UEFI-BIOS –> landet automatisch im Windows Boot Manager) ?

            Weil wie schon geschrieben haben landete ich ja im syslinux-menu…was ja offensichtlich eine Sackgasse ist….

        3. Zitat
          “Das bedeutet, der Windows Boot Manger müsste bei dem UEFI-BIOS-Rechner direkt nacht dem Booten über LAN starten?”

          Wenn du die ADK Anleitung durchgegangen bist, wovon ich auch eigentlich ursprünglich ausgegangen war, denn diese hatte ich dir damals schon mal als Lösung offenbart, dann müsste das sowieso schon bei Dir der Fall sein.

          Da es aber nun nicht so ist, bist du diese wahrscheinlich noch nicht durchgegangen oder hast es schlicht vergessen. Da müsste dann auch wieder die dhcpd-pxe.conf bearbeitet werden, um, extra für UEFI Clients den Windows-Boot-Manager auszuliefern. Also ja, genau das bedeutet das 🙂

          Trotzdem wirst du das nur für den UEFI Modus ändern müssen. Das Syslinux Menü bleibt Dir bei den alten Rechnern erhalten. Wie gesagt betrifft die Änderung nur UEFI Clients. Wenn du Dir die Anleitung durchliest dürften auch all deine Fragen beantwortet werden.

          1. Verstehe!

            Ich hab nur die Anleitung “Syslinux 6.04 PXE&TFTP&DHCP Server einrichten” durchgeführt, weill ich dachte dass mit dieser Anleitung sowohl BIOS legacy – Boot als auch UEFI-Boot funktionert.

            Ich wusste nicht, dass ich danach noch die ADK-Anleitung durchführen musste, damit auch der UEFI-Boot funktionert. Da werde ich mich am WE gleich mal daran machen !!

            Danke !!!!!

  2. Hallo ich habe ein wenig versucht und es ist ganz gut gelaufen, möchte aber jetzt wieder alles rückgängig machen, habe aber ein Fehler gemacht bei der dhcpd-pxe.conf ich habe mir die original nicht gesichert ( mit den zwei Zeilen) kann mir jemand helfen was in der Originalen dhcpd-pxe.conf (vom Synology NAS) drin stand !?

    Danke im voraus

  3. Hallo Stefan,

    ich muss bei der DiskStation eine Platte austauschen. Da ich kein RAID nutze ist der Weg, die gesamte NAS mit HyperBackup zu sichern, dann die NAS auf Werkseinstellungen zurückzusetzen und die Platte austauschen – dann mit HyperBackup das NAS-Backup wieder auf das neues Sytem zurückzuspielen.

    Frage bzgl. PXE-Bootloader: Die Dateien/Oredner werden ja alle wieder hergestellt. Jedoch: Werden die Veränderungen in der NAS, die mit Putty am DHCP per SSH eingespielt wurden auch wieder hergestellt? Oder muss ich den Schritt dann nochmal neu durchführen?

    Grüße Rainer

    1. Das ist eine gute Frage, die ich Ihnen auch nicht beantworten kann. Ich habe die NAS Geräte immer im RAID Verbund laufen gehabt, aber dann ändern sich beim Austauschen einer defekten Platte nicht die Einstellungen oder es gehen irgendwelche Daten verloren. Es bleibt in diesem Fall alles beim Alten. Kaputte Platte raus, neue rein und fertig.

      Wenn Sie Ihr Gerät allerdings auf Werkseinstellungen setzen, dann gehen ALLE Werte verloren!

  4. Hallo Stefan,

    die ersten beiden Zeilen in der dhcpd-pxe.conf:

    dhcp-boot=tag:pxe,pxelinux.0
    dhcp-vendorclass=set:pxe,PXEClient

    Nach dem Doppelpunkt steht jeweils “pxe” …. ist das der Name des TFTP-Root-Ordners? Wenn der bei mir nicht “PXE” lautet sondern z.B. “pxeserver”….muss dass in den ersten beiden Zeilen dann entsprechend verändert werden?

    Grüße Rainer

    1. Nein, das hat mit dem TFTP-Root-Verzeichnis nichts zu tun. Das wird in einer anderen Datei gespeichert.

      Du müsstest also nochmal die Teile der Anleitung durchgehen, die nicht mehr existieren oder durch deinen Reset der DS verloren gingen. Also alles, bis auf das Anlegen der TFTP-Verzeichnisstruktur deines pxeserver-Ordners. Denn der existiert ja noch.

      Es wäre vielleicht nicht schlecht gewesen, wenn du deine alte Konfiguration der DS vor dem Reset, gesichert hättest. Dann müsstest du nämlich nur noch die eine Datei bearbeiten und fertig wärst du. 🙂 Falls du Probleme bekommst, lies Dir bitte deine alten Kommentare mit meinen Antworten nochmals durch.

  5. Hallo Stefan,
    Super Anleitung, hat bei mir auch geklappt, doch ich wollte die Desinfec’t2019 einfügen. Allein die Desinfect funktioniert, da sind aber im TFTP Root noch mehr Dateien, die ich reinkopiert habe dann bootet der Client gar nicht mehr. wenn ich nur die desi2019.bzi und die desi2019.lz kopiere bleibt der Client beim Laden der .lz stehen.
    Probiere schon seit Tagen ohne Erfolg.
    Gruß
    Karl-Josef

    1. Ich habe leider keine Desinfect Version zur Hand, um jetzt eine klare Aussage tätigen zu können. Aber meines Wissens nach müsste auf der CD oder im ISO doch ein Casper Ordner existieren?

      Darin liegt der Kernel und die Ramdisk. Diese müssten auch benutzt werden.

      		LABEL Desinfect
      		MENU LABEL Desinfect 2019
      		COM32 linux.c32 images/Desinfect/casper/vmlinuz
      		APPEND boot=casper vga=normal netboot=nfs nfsroot=192.168.1.5:/volume1/NAS412Plus/PXEServer/images/Desinfect ip=dhcp rw initrd=images/Desinfect/casper/initrd.lz
      	TEXT HELP
      Desinfect 2019
      	ENDTEXT
      

      Ich habe Dir mal ein Beispiel gemacht. Die Pfade und Dateinamen müssen natürlich angepasst werden! Auch wichtig ist der NFS-Pfad. Der muss natürlich auch geändert werden. Du musst nichts weiter machen als den gesamten Inhalt der CD/ISO in den images/Desinfect/ Ordner zu kopieren.

      EDIT://
      Ich habe nochmal nachgeschaut was du überhaupt mit den anderen Dateien meintest. Ich konnte mit deiner Beschreibung nämlich nichts anfangen, da du ja auch keine Beispiele genannt hattest und ich keine Desinfect Version greifbar hatte, denn woher sollte ich auch wissen, was du mit “anderen” Dateien meintest. Du meintest die Dateien die im TFTP-Paket auf dem ISO mit ausgeliefert werden, die zusammen mit der desi2019.bzi und der desi2019.lz in einem Ordner stecken. Die musst du natürlich weglassen, da es sich auch dort um eine Syslinux Version handelt! Du nutzt doch bereits, durch meine Anleitung alleine schon, die aktuelle Syslinux Version und daher werden diese Dateien nicht benötigt. Wenn du die Dateien verwendest, die in diesem Paket drin sind, ist klar warum nichts mehr funktioniert. Du hast Dir dann schließlich ein Versionschaos der verschiedenen Syslinux Versionen gebastelt.

      Daher gilt, egal welche Programme oder Tools du in Zukunft einbindest; wenn du gleichnamige Dateien vorfindest, die entweder bereits im TFTP-Root Verzeichnis liegen ODER in dem BIOS/EFI32/EFI64 Ordner, dann lässt du diese immer weg. Normalerweise reicht es den Kernel und die Ramdisk zu laden. Deine zwei Dateien verkörpern nämlich genau das. Auch wie du das einbindest ist variabel. Es gibt verschiedene Wege dies umzusetzen. Entweder man macht es so wie du und lädt die zwei Dateien aus dem Ordner oder macht das mittels des mountens der ganzen DVD. Wie immer führen viele Wege nach Rom. Beim nächsten Mal ein bisschen genauer erklären, denn ich sehe nicht was sie sehen und kann auch keine Gedanken lesen.

      Schöne Feiertage. 🙂

  6. Vielen Dank, für die schnelle Antwort, und Entschuldigung für die unqualifizierte Beschreibung. Ja es war wohl ein ziemliches durcheinander mit den Dateien.
    Nun habe ich nochmal komplett begonnen und direkt die vmlinuz und die initrd.lz Files aus dem jeweiligen (32/64) casper-Verzeichnis gestartet, wie du geschrieben hast. Im bios-Mode funktionieren beide Versionen. Wenn ich den Client auf efi umschalte, kommt noch das Menü,
    Loading …vmlinuz….ok
    Loading …initrd.lz…
    aber nach langer Zeit bootet der Client neu ohne desinfect zu starten

    1. Entschuldige die späte Antwort.

      Ich habe dies bei mir selbst getestet und die sind definitiv im UEFI Modus lauffähig (Die X64 Versionen!). Da er beim Laden der Datei allerdings vor Beendigung des Ladens neu startet, legt nahe, dass der TFTP-Datentransfer im UEFI Modus sehr langsam bei Dir sein muss, da scheinbar der Syslinux Timeout von 15 Minuten greift und er die Kiste dann einfach neu startet.

      War diese Zeitspanne erreicht als er den Client neu startete?

      Ich wüsste sonst auch nicht woran es liegt. Wenn der Datentransfer im UEFI Modus bei deinem Client generell sehr schleppend sein sollte empfehle ich Dir ein BIOS Update insofern alle anderen UEFI Clients bei Dir im Netzwerk damit keine Probleme haben sollten. Denn dann liegt das Problem definitiv beim Client selbst und daher wäre ein Update – falls verfügbar – schon sinnvoll.

  7. Hi, ich setze die PXE Umgebung schon lange und erfolgreich ein.
    Ich möchte eine PXE Thinclient Lösung (openthinclient.org) im gleichen LAN betreiben. Der Server von openthinclient kommt mit TFTP und PXE DHCP Proxy. Wie kann ich in der dhcpd-pxe.conf auf der Synology den openthinclient TFTP Server für bestimmte PCs angeben?

    1. Du kannst aus einer Syslinux Umgebung heraus mittels:

      https://wiki.syslinux.org/wiki/index.php?title=Pxechn.c32

      auf einen anderen TFTP Server verweisen.

      Beispiele werden dort auch gemacht. Die Datei Pxechn.c32 muss natürlich noch aus dem Syslinux Paket in den BIOS Ordner kopiert werden. Jedoch ist dies keine Lösung für UEFI-Clients, denn das Tool gibt es dort nicht. Bei dieser Variante kommst du immer in das Menü und könntest es zur Not noch abbrechen oder sonstige Diagnose Tools starten. Wenn du allerdings direkt bei diesen bestimmten Rechnern die Funktionalität des Syslinux Menüs nicht beibehalten willst, dann könnte man auch via MAC-Adressen bestimmte TFTP-Server für deine Clients in der Konfiguration festlegen. Da müsstest du allerdings selber mal recherchieren, da ich dies selbst noch nicht gemacht habe und mich auch erst schlau lesen müsste. Ich weiß nur das es geht. Habe das schon mehrmals gesehen.

      1. Vielen Dank für die schnelle Antwort, ich habe in der Zwischenzeit herausgefunden das ich das openthinclient Image auch Lokal auf den Rechnern installieren kann. Da es sich nur um 3 PCs handelt, werde ich es wahrscheinlich erstmal so lösen.

  8. Hallo Stefan,

    erstmal vielen Dank für die super Anleitung/Infos.

    In deiner Anleitung steht das die Einträge der dhcpd-pxe.conf auch auf einen Windows DHCP Server funktionieren.
    Stehe hier wohl ein wenig auf den Schlauch, wo diese einzutragen sind?
    Kann ich da ein Hilfe bekommen. Benutzen einen Server 2016.

Schreibe einen Kommentar

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