Syslinux 6.04 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, was Sie suchen.

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önnten man in solchen Umgebungen Backupsoftware starten, um den geliebten PC und dessen persönliche Dateien zu sichern oder diese wiederherzustellen.

Bevor wir anfangen, möchte ich Ihnen die untere Grafik näher bringen. Dadurch bekommen Sie einen Eindruck, wie genau unser Vorhaben funktioniert. Jeder einzelne Schritt wurde dort erklärt. Auch gibt es in diesen Szenarien die ein oder anderen Fallstricke, die es zu beachten gilt.

PXE Bootvorgang
PXE Bootvorgang

Diese Anleitung bezieht sich nur auf die Konfiguration des TFTP&DHCP&PXE Servers und das Aufspielen und Konfigurieren der Syslinux 6.04 Version auf diesem.

Schritt: Neuen gemeinsamen Ordner erstellen

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

Schritt: NFS Berechtigung erstellen für den gemeinsamen Ordner

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.

Bei Hostname und IP kommt die Netzwerk-ID Ihres Netzwerkes hinein. Wie genau nun Ihre Netzwerk-ID lautet, kann ich nicht sagen. Schauen Sie einfach selbst nach. Die Subnetz Präfix darf natürlich nicht fehlen! Hiermit ist das /24 gemeint und besagt, das der Netzanteil 24Bit 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 die IP natürlich, dann sollte das Ganze so aussehen:

Schritt: NFS Mount-Pfad merken!

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

In meinem Beispiel: /volume1/NAS412Plus

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 Ordner befindet. Lassen Sie sich nicht durch den Ordnernamen in meinem Beispiel irritieren, denn das ist mein TFTP-ROOT Ordner. Oben hatte ich erwähnt, das Sie diesen auch PXEServer oder ähnlich nennen könnten.

Schritt: 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. Die TFTP-Rechte sollten auf auf das Lesen beschränkt werden. Wir wollen ja auch nicht mehr. Lesen reicht vollkommen aus.

Schritt: 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 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. Und ja, nach der Umstellung bekommen Ihre Handy’s auch noch DHCP Leases, eben nur nicht mehr über den Router, sondern der Synology. Manche kamen auch mit der Ausrede, das ginge nicht, weil man Portweiterleitungen habe.Wenn sie den Clients/Servern eine feste IP zuweisen, dann können sie das trotzdem noch, auch wenn der DHCP Server nicht der Router ist.

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:

Meine Netzwerk-ID ist 192.168.1.0/24
Mein Router (Speedport) ist 192.168.1.4
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.5.

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 auf Bearbeiten.

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.

Schritt: 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 dem Gemeinsamen Ordner zujubeln erstellt folgende Verzeichnisse in Eurem gemeinsamen Ordner, den Ihr ganz am Anfang erstellt hattet. Der gemeinsame Ordner ist zugleich auch Euer TFTP-Root – nicht vergessen.

TFTP-ROOT

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

 

Kopiert nun folgende Dateien ALLE in den 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

 

Kopiert nun folgende Dateien ALLE in den EFI32 Ordner:

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

 

Kopiert nun folgende Dateien ALLE in den EFI64 Ordner:

Syslinux6.04/efi64/com32/chain/chain.c32
Syslinux6.04/efi64/com32/cmenu/libmenu/libmenu.c32
Syslinux6.04/efi64/com32/gpllib/libgpl.c32
Syslinux6.04/efi64/com32/hdt/hdt.c32
Syslinux6.04/efi64/com32/lib/libcom32.c32
Syslinux6.04/efi64/com32/libutil/libutil.c32
Syslinux6.04/efi64/com32/menu/menu.c32
Syslinux6.04/efi64/com32/menu/vesamenu.c32
Syslinux6.04/efi64/com32/modules/ifcpu64.c32
Syslinux6.04/efi64/com32/modules/linux.c32
Syslinux6.04/efi64/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

EFI32 Bootloader!

Syslinux6.04/efi32/efi/syslinux.efi (Diese Datei bitte nach dem Kopieren in das TFTP Root Verzeichnis wie folgt umbenennen: pxelinuxEFI32.efi)
Syslinux6.04/efi32/com32/elflink/ldlinux/ldlinux.e32

EFI64 Bootloader!

Syslinux6.04/efi64/efi/syslinux.efi (Diese Datei bitte nach dem Kopieren in das TFTP Root Verzeichnis wie folgt umbenennen: pxelinuxEFI64.efi)
Syslinux6.04/efi64/com32/elflink/ldlinux/ldlinux.e64

 

So, wenn dann der Kopier- und Suchmarathon vorbei ist, sollte das Ganze so aussehen:

Warum haben wir jetzt den ganzen Zirkus veranstaltet? Unser Ziel ist es, das BIOS, als auch UEFI Rechner unser Syslinux starten können und dies auch automatisch erkannt wird. Deshalb brauchen wir 3 verschiedene Bootloader!

Wir sind aber noch lange nicht fertig liebe Leute, denn noch würde nichts funktionieren. Es fehlen noch die default Einträge, eine Grafikkonfigurationsdatei und das allerwichtigste die DHCP Server Anpassung! Dazu später!

Laden Sie sich nun meine kleinen Konfigdateien herunter. Diese dienen nur als Beispiel und sollten von Ihnen dann später verändert oder erweitert werden.

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, das Sie das ganze starten könnten! Wenn dann alles funktioniert, können Sie diese Dateien nach Ihrem belieben editieren!

Entpacken Sie mein Archiv und kopieren Sie davon folgende Dateien in das pxelinux.cfg Verzeichnis:

default_BIOS
default_EFI32
default_EFI64
f1.txt
f2.txt
GFX_BIOS.conf
GFX_EFI32.conf
GFX_EFI64.conf

 

Außerdem kopieren sie folgende Dateien direkt in das TFTP-Root Verzeichnis:

german.kbd (Deutsches Tastaturlayout in der Syslinux Oberfläche!)
Installer640.jpg (Hintergrungbild Bios Modus)
Installer1024.png (Hintergrungbild EFI32 & EFI64 Modus)

 

Wichtige Anmerkung zum ändern der Hintergrundbilder:

Die Hintergrundbilder könnt Ihr natürlich gegen Eure austauschen. Aber, es 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.
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!

Verwenden Sie keine Bilder, die einer folgenden Auflösung vorlägen:
1024×760 oder ähnlich, denn das führt unter Umständen zu sehr extremen Grafik- und Menüfehlern.

Sollten Sie JPG Bilder nehmen, werden Sie feststellen, das Syslinux in Bezug auf dieses Format im EFI Modus einen unansehnlichen BUG hat. Das Bild wird dann mehrmals gekachelt.

Wichtige Anmerkung zum Syslinux EFI32 & EFI64 Modus:

Das Syslinux EFI Menü funktioniert prinzipiell. Leider gibt es noch so einige Einschränkungen im Vergleich zu dem alten BIOS Legacy Modus. Es ist in der aktuellsten Syslinux Version nicht möglich andere EFI Bootloader quer zu laden. Das heißt im Klartext, das sie aus einer EFI Syslinux Umgebung nicht den Windows Boot Manager starten könnten. Dieser Umstand ist mir bewusst gewesen, als ich diese Anleitung verfasst habe. Es sei aber dazu gesagt, das der Entwickler an diesem Umstand arbeitet. Es ist nur eine Frage der Zeit, bis dies dann auch im EFI Modus funktioniert. Das bedeutet, das Sie im Syslinux EFI Modus Windows nicht installieren können! Es gibt den Umweg, statt dem Syslinux Bootloader einfach den bootx64.efi Loader von Microsoft zu nehmen. Das funktioniert wunderbar, allerdings haben Sie dann kein schönes Menü mehr. Momentan ist das bei mir im EFI Modus auch mit dem EFI Bootloader von MS eingerichtet, eben damit ich Windows auch im EFI Modus installieren kann, aber dennoch ist das nur eine temporäre Lösung des Problems. Ich hoffe, dass der Entwickler bald in die Puschen kommt.

Zu dem Syslinux EFI kommen noch weitere Probleme auf Sie zu. Memdisk zum Beispiel ist ein reines BIOS Tool. Dieses funktioniert im EFI Modus nicht und noch viele weitere Funktionen gehen auch nicht mehr. Das soll Sie jetzt nicht traurig stimmen, denn denken Sie einfach daran, das Sie das Gerüst dafür schon geschaffen haben und später dann weniger Arbeit haben.

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

Schritt: 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

Schritt: DHCP via SSH 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 Benutzername ist admin und nicht root liebe Leute. Ich wollte es nur gesagt haben. 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.5. Dort gehört die NAS IP rein.

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

#Beispiel Eintrag und Erklärung
#Tag vergeben, DHCP-Option 60, Suche String (Match)
#dhcp-match=set:bios,60,PXEClient:Arch:00000
#Boot-Tag, Boot-Dateiname, Server Name (DNS), Server IP Addresse
#dhcp-boot=tag:bios,pxelinux.0,192.168.1.5,192.168.1.5
#Boot-Tag, DHCP-Option 209, Pfad zur Syslinux-Konfigurationsdatei
#dhcp-option-force=tag:bios,209,pxelinux.cfg/default_BIOS

dhcp-match=set:bios,60,PXEClient:Arch:00000
dhcp-boot=tag:bios,pxelinux.0,192.168.1.5,192.168.1.5
dhcp-option-force=tag:bios,209,pxelinux.cfg/default_BIOS

dhcp-match=set:efi32-1,60,PXEClient:Arch:00002
dhcp-boot=tag:efi32-1,pxelinuxEFI32.efi,192.168.1.5,192.168.1.5
dhcp-option-force=tag:efi32-1,209,pxelinux.cfg/default_EFI32

dhcp-match=set:efi32-2,60,PXEClient:Arch:00006
dhcp-boot=tag:efi32-2,pxelinuxEFI32.efi,192.168.1.5,192.168.1.5
dhcp-option-force=tag:efi32-2,209,pxelinux.cfg/default_EFI32

#Standard für UEFI Rechner
#Die meisten UEFI Rechner benutzen diesen Eintrag. Je nach Hersteller kann es
#jedoch sein, das statt 00007 mal 00009 verwendet wird.
dhcp-match=set:efi64-1,60,PXEClient:Arch:00007
dhcp-boot=tag:efi64-1,pxelinuxEFI64.efi,192.168.1.5,192.168.1.5
dhcp-option-force=tag:efi64-1,209,pxelinux.cfg/default_EFI64

dhcp-match=set:efi64-2,60,PXEClient:Arch:00008
dhcp-boot=tag:efi64-2,pxelinuxEFI64.efi,192.168.1.5,192.168.1.5
dhcp-option-force=tag:efi64-2,209,pxelinux.cfg/default_EFI64

dhcp-match=set:efi64-3,60,PXEClient:Arch:00009
dhcp-boot=tag:efi64-3,pxelinuxEFI64.efi,192.168.1.5,192.168.1.5
dhcp-option-force=tag:efi64-3,209,pxelinux.cfg/default_EFI64

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 überspringen bis zum nächsten Schritt.

Dieser Schritt bezieht sich nur auf den DHCP Server der Synology. Es wird also vorausgesetzt, dass der DHCP Server der Synology die IP-Adressen vergibt und alle notwendigen Konfigurationsdateien.

Der entscheidende Punkt dabei ist:

Dadurch das der DHCP Server der Synology das macht, 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önnen, dass er anhand der PXEClient Codes automatisch die verschiedenen Bootloader sendet. Ich persönlich habe bis jetzt noch bei KEINEM Router gesehen, wo 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“.

Das ist natürlich logisch, da wir keine normale default Datei verwenden, sondern 3 verschiedene nutzen je nach erkanntem Client-System! Sie müssen dem Client eine Abweichung vom Standard aber auch mitteilen denn sonst kann das nicht funktionieren. Im Standardfall wird natürlich eine Datei namens default erwartet und nicht wie bei uns die default_BIOS oder default_EFI32 oder default_EFI64. Deshalb ist es auch so wichtig, dass sie einen DHCP Server verwenden, bei dem sie solche Modifikationen vornehmen können.

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 das selbe erreichen können wie hier in der Anleitung beschrieben ist.

Der letzte Schritt: 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.

Schritt: Der Test!

EFI32 & EFI64 Boot Test:
Der EFI64 Boot kann fehlschlagen, wenn Sie auf Ihrem System Secure Boot aktiviert haben. Die Syslinux 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. Spätestens dann, wenn Sie sowohl Windows, als auch Linux auf Ihrem System betreiben möchten kämen Sie eh nicht daran vorbei Secure Boot zu deaktivieren.

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 Rechner oder UEFI Rechner machen. Es funktioniert beides durch unsere Tatkräftige Arbeit. Wenn alles funktioniert gratuliere Ich ihnen, das 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/

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

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

Ein voll gepacktes Menü mit etlichen Submenüs:

Den Windows Boot Manager aus Syslinux heraus starten:

Das besondere hierbei ist, das aus dem Syslinux heraus der Windows Boot Manager gestartet werden kann. Somit ist es auch ein leichtes WIM Images zu starten.

Linux Live Systeme aus dem Netzwerk starten:

Backup&Recovery Software starten:

Hardwaretools zum prüfen auf Fehler wie memtest:

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

Das Auswahlmenü lebe hoch:

Zum Anfang!

85 Antworten auf „Syslinux 6.04 PXE&TFTP&DHCP Server einrichten“

  1. Löschen der Datei ergab den selben Fehler. Ich muss dazu sagen das der andere Rechner noch beide Boot Modis kann. Ich wähle zwar UEFI boot aus aber bei dem anderen würde ich nicht ausschließen das er trotzdem den normalen Bootmodus wählt.

    Das es ein Fehler in meinem PXE ist schließe ich inzwischen fast aus weil ich drei von diesen neuen PC’s hier stehen habe und alle werfen den selben Fehler.
    Alle drei sind Fujitsu Esprimo P758 mit einem i5-8400 und dem Board D3601-A12

    Das nervige ist jetzt auch das ich nicht einmal meine selbst Konfigurierte Win10 Version auf DVD brennen kann weil er dann mein DVD Laufwerk nicht nimmt wegen dem scheiß UEFI.

    1. In welchen Modus gebootet wurde sehen sie ja direkt am Anfang schon. Wenn da steht “Start PXE over IPv4/IPv6” dann ist es der UEFI Modus, andernfalls der BIOS Modus. In den Beispieldateien steht aber selbst noch in der Titelzeile ganz oben entweder BIOS, EFI32 oder EFI64. Also spätestens wenn sie im Menü sind, sehen sie ja oben in welchem Modus sie sich befinden.

      Sie können höchsten mal das hier probieren:

      Ändern sie dafür mal bitte die dhcp-pxe.conf ab. IP ist wieder zu ändern!

      dhcp-boot=tag:pxe,bootx64.efi
      dhcp-vendorclass=set:pxe,PXEClient
      
      dhcp-match=set:bios,60,PXEClient:Arch:00000
      dhcp-boot=tag:bios,pxelinux.0,,192.168.1.5
      dhcp-option-force=tag:bios,209,pxelinux.cfg/default_BIOS
      
      dhcp-match=set:efi32-1,60,PXEClient:Arch:00002
      dhcp-boot=tag:efi32-1,pxelinuxEFI32.efi,,192.168.1.5
      dhcp-option-force=tag:efi32-1,209,pxelinux.cfg/default_EFI32
      
      dhcp-match=set:efi32-2,60,PXEClient:Arch:00006
      dhcp-boot=tag:efi32-2,pxelinuxEFI32.efi,,192.168.1.5
      dhcp-option-force=tag:efi32-2,209,pxelinux.cfg/default_EFI32
      
      dhcp-match=set:efi64-1,60,PXEClient:Arch:00007
      dhcp-boot=tag:efi64-1,pxelinuxEFI64.efi,,192.168.1.5
      dhcp-option-force=tag:efi64-1,209,pxelinux.cfg/default_EFI64
      
      dhcp-match=set:efi64-2,60,PXEClient:Arch:00008
      dhcp-boot=tag:efi64-2,pxelinuxEFI64.efi,,192.168.1.5
      dhcp-option-force=tag:efi64-2,209,pxelinux.cfg/default_EFI64
      
      dhcp-match=set:efi64-3,60,PXEClient:Arch:00009
      dhcp-boot=tag:efi64-3,pxelinuxEFI64.efi,,192.168.1.5
      dhcp-option-force=tag:efi64-3,209,pxelinux.cfg/default_EFI64
      

      Ich habe dort mal die fehlenden Modi hinzugefügt. Eventuell läuft es danach schon. Nach dem speichern den DHCP Server neu starten nicht vergessen. Wenn das nicht funktioniert muss ich wohl in die Tischkante beißen 😀

      Ich bin auch kein Freund von UEFI. Im Endeffekt ist alles nur noch schwieriger und komplexer geworden, statt einfacher wie anfangs von Intel versprochen wurde. Ein weiteres Ärgernis ist natürlich die Tatsache, dass man nun zweigleisig fahren muss. Wie sie schon sagten können die neuen Rechner alle kein Legacy Modus mehr. Das sind alles reine UEFI Kisten ohne CSM Modul.

    1. Ich verstehe es nicht. Da er ja scheinbar die pxelinuxEFI64.efi findet und auch die pxelinux.cfg/default_EFI64 müsste das alles funktionieren. In der default_EFI64 wird dann schließlich die vesamenu geladen.

      Also wie gesagt. Ich würde da noch die TFTP Log anschauen, ob da irgendwas auffälliges zu finden ist. Vorallem die Zeile mit der vesamenu.c32 sollte äußerst aufschlussreich sein. Haben sie das schon gemacht?

      sudo vi /var/log/opentftp.log

      Was passiert nach der pxelinuxEFI64.efi Zeile?

      Können sie von dem ganzen PXE Vorgang eventuell ein kleines Video machen und mir einen Link schicken? Vielleicht übersehen sie ja ein kleines Detail und verheimlichen es vor mir 😀

      Wenn es Ihnen aber sowieso nur um eine Möglichkeit geht Windows im UEFI Modus zu verteilen, dann sollten Sie vielleicht doch direkt diesen Teil überspringen und gleich mit der Anleitung weitermachen:
      https://www.german-syslinux-blog.de/syslinux-6-04-windows-10-adk-1709-winpes-erstellen/

  2. Sorry hatte ein Termin und bin bis jetzt noch nicht dazu gekommen das Log einzusehen. Mache ich nachher gleich und gebe dann nochmal eine Rückmeldung.

  3. Also die letzten Einträge in der Log sind von 2018. Muss ich das noch gesondert irgendwo aktivieren?

    Nur UEFI Boot würde mir nicht reichen da ich ja teilweise auch noch altsysteme hab die damit auch booten sollen.

    Kann ich das Video irgendwo hochladen?

    1. Die Protokollierung stellen sie im DSM unter Systemsteuerung => Dateidienste => Reiter TFTP => Erweiterte Einstellungen ein.

      Ich habe auch nicht behauptet, dass danach nur noch der UEFI Modus funktioniert. Für UEFI Geräte wird dann aber nur noch der Windows Boot Manager verteilt. Im BIOS Modus ist Syslinux trotzdem noch präsent. Sowohl Alte, als auch Neue Geräte könnten sie damit bedienen. Ich weiß nun nicht wie sie zu der Annahme kamen, dass es eine entweder oder Geschichte wäre. Es gibt lediglich diverse Abstriche die man leider hinnehmen muss.

      Ich biete keine Plattform für Uploads an. Wenn das Video nach der Aufnahme komprimiert wurde, dürfte das ja nur ein paar MB groß sein, da der reine PXE Boot bis zur Fehlermeldung geschätzt auch nur 10 Sekunden dauert. Das können Sie mir auch als E-Mail senden.

  4. Ich erlaube mir, Ihnen zu schreiben, da ich Schwierigkeiten habe, die Optionen 60 und 209 für TFTPD64 zu konfigurieren, obwohl ich Meraki DHCP verwende und versuchen möchte, dass es damit funktioniert

    1. Um das Vorweg direkt mal zu erwähnen, ich hatte mich im Artikel vertan. Ich meinte natürlich den Tiny PXE Server. Ich hatte mit so vielen herumexperimentiert, da kam ich wohl durcheinander 🙂

      Bei dem Tiny PXE Server finden sie eine config.ini vor. Dort können Sie oben direkt die einzelnen Starter für den Anwendungsfall hinterlegen.

      [arch]
      ;will over rule the bootp filename or opt67 if the client arch matches one of the below
      00000=BIOS\lpxelinux.0
      00006=EFI32\bootia32.efi
      00007=EFI64\bootx64.efi
      00009=EFI64\bootx64.efi
      [dhcp]
      root=C:\TFTP_Root
      filename=lpxelinux.0
      ;alternative bootp filename if request comes from ipxe or gpxe
      altfilename=@arch
      

      Die Variable @arch macht das, was vorher durch die Option 60 herausgefunden wurde.

      Wenn Client @arch = 0000 dann BIOS\lpxelinux.0

      Verzeichnisstruktur für den Legacy Modus!

      BIOS\lpxelinux.0
      BIOS\memdisk
      BIOS\ldlinux.c32
      BIOS\pxelinux.cfg\default
      BIOS\bios\*.c32
      

      Nach dem Schema läuft das ab.

      Die Option 209 brauchen Sie in diesem Fall nicht, da sie innerhalb des beispielsweise BIOS Ordners, dann den pxelinux.cfg Ordner erstellen und darin dann die default Datei hinterlegen. Die Verzeichnisstruktur ist hier schlicht anders wie ich das mit dem Synology DHCP gemacht habe. Sie können das also nicht 1:1 übernehmen wie das in der Anleitung erklärt wurde! Ich denke den Rest bekommen Sie auch alleine hin. Denken Sie daran, dass Ihre Frage nichts mit dem eigentlichen Artikel zu tun hatte, denn Ihr spezielles Szenario wird hier nicht bedient. Ich möchte das hier aber auch nicht ausufern lassen und jeder kommt mit einem anderen DHCP oder TFTP Server daher. Das müssen Sie dann selbst lösen oder anpassen. Ich werde es daher bei der einen Antwort belassen.

  5. 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

  6. 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!

  7. 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.

  8. 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. 🙂

Schreibe einen Kommentar zu Karl-Josef Klingesberger Antworten abbrechen

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