Synology DSM 6.0+ / Syslinux 6.04 PXE&TFTP&DHCP Server einrichten

KC

Synology DSM 6.0+ / 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.

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

Zu aller erst 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.

649_SYNOLOGY_PXE_CONFIG_02.PNG

Bei Hostname und IP kommt die Netzwerk ID Ihres Netzwerkes hinein. Wie genau nun Ihre Netzwerk ID ist, 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:

649_SYNOLOGY_PXE_CONFIG_01.PNG

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, das 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. Das was wichtig ist, ist allerdings, das die TFTP Rechte lediglich auf Lesen beschränkt werden. Wir wollen ja auch nicht mehr. Lesen reicht vollkommen aus.

649_SYNOLOGY_PXE_CONFIG_03.PNG

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, das dieser bei dem Router deaktiviert werden muss. Ja, das muss und sollte auch. Es kann zwar sein, das es auch mit 2 DHCP Server funktioniert, aber es ist dennoch davon abzuraten. Es gibt auch keine Gründe sich zu streuben, 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 ich Portweiterleitungen habe. Das ist blödsinn, denn niemand hindert einen daran, eine Feste IP dem Server, an den weitergeleitet werden soll einzurichten. Wer benutzt auch eine dynamische IP für einen Server ? Das müssen echte Schelme sein. Es ist also eine reine Konfigurationsangelegenheit wie Ihr seht. Geht nicht, gibt’s nicht

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 haben mehr wie 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:

649_SYNOLOGY_PXE_CONFIG_04.PNG

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

649_SYNOLOGY_PXE_CONFIG_05.PNG

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 vergessenzwinkern

TFTP-ROOT
649_Synology_PXE_Config_06

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

Kopiert nun folgende Dateien ALLE in den BIOS Ordner:

CODE Icon
CODE Quelltext: (13 Zeilen) | Code markieren | Generiert in 0.00085 Sekunden.
1
2
3
4
5
6
7
8
9
10
11
12
13
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
CODE Quelltext: (13 Zeilen) | Code markieren | Generiert in 0.00085 Sekunden.

Kopiert nun folgende Dateien ALLE in den EFI32 Ordner:

CODE Icon
CODE Quelltext: (10 Zeilen) | Code markieren | Generiert in 0.00065 Sekunden.
1
2
3
4
5
6
7
8
9
10
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
CODE Quelltext: (10 Zeilen) | Code markieren | Generiert in 0.00065 Sekunden.

Kopiert nun folgende Dateien ALLE in den EFI64 Ordner:

CODE Icon
CODE Quelltext: (11 Zeilen) | Code markieren | Generiert in 0.00067 Sekunden.
1
2
3
4
5
6
7
8
9
10
11
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
CODE Quelltext: (11 Zeilen) | Code markieren | Generiert in 0.00067 Sekunden.

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

CODE Icon
CODE Quelltext: (1 Zeile) | Code markieren | Generiert in 0.00036 Sekunden.
1
Syslinux6.04/bios/memdisk/memdisk
CODE Quelltext: (1 Zeile) | Code markieren | Generiert in 0.00036 Sekunden.

BIOS Bootloader!

CODE Icon
CODE Quelltext: (2 Zeilen) | Code markieren | Generiert in 0.00040 Sekunden.
1
2
Syslinux6.04/bios/core/pxelinux.0
Syslinux6.04/bios/com32/elflink/ldllinux/ldlinux.c32
CODE Quelltext: (2 Zeilen) | Code markieren | Generiert in 0.00040 Sekunden.

EFI32 Bootloader!

CODE Icon
CODE Quelltext: (2 Zeilen) | Code markieren | Generiert in 0.00055 Sekunden.
1
2
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/ldllinux/ldlinux.e32
CODE Quelltext: (2 Zeilen) | Code markieren | Generiert in 0.00055 Sekunden.

EFI64 Bootloader!

CODE Icon
CODE Quelltext: (2 Zeilen) | Code markieren | Generiert in 0.00047 Sekunden.
1
2
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/ldllinux/ldlinux.e64
CODE Quelltext: (2 Zeilen) | Code markieren | Generiert in 0.00047 Sekunden.

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

649_Synology_PXE_Config_07

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:

CODE Icon
CODE Quelltext: (8 Zeilen) | Code markieren | Generiert in 0.00041 Sekunden.
1
2
3
4
5
6
7
8
default_BIOS
default_EFI32
default_EFI64
f1.txt
f2.txt
GFX_BIOS.conf
GFX_EFI32.conf
GFX_EFI64.conf
CODE Quelltext: (8 Zeilen) | Code markieren | Generiert in 0.00041 Sekunden.

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

CODE Icon
CODE Quelltext: (3 Zeilen) | Code markieren | Generiert in 0.00047 Sekunden.
1
2
3
german.kbd (Deutsches Tastaturlayout in der Syslinux Oberfläche!)
Installer640.jpg (Hintergrungbild Bios Modus)
Installer1024.png (Hintergrungbild EFI32 & EFI64 Modus)
CODE Quelltext: (3 Zeilen) | Code markieren | Generiert in 0.00047 Sekunden.

Wichtige Anmerkung zum ändern der Hintergrundbilder:
Die Hintergrundbilder könnt Ihr natürlich gegen Eure austauschen. Aber, es ist darauf zu achten, das im Bios Modus nur Bilder verwendet werden, die in einer 640×480 Pixel Auflösung 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 ein folgende Auflösung hätten:
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. Er kachelt das Bild dann mehrmals.

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, das 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 ):

649_Synology_PXE_Config_08

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 Leutezwinkern Ich wollte es nur gesagt haben. Wenn Ihr eingeloggt seid, dann tippt folgendes ein:

CODE Icon
CODE Quelltext: (1 Zeile) | Code markieren | Generiert in 0.00035 Sekunden.
1
cd /etc/dhcpd/
CODE Quelltext: (1 Zeile) | Code markieren | Generiert in 0.00035 Sekunden.

 

CODE Icon
CODE Quelltext: (1 Zeile) | Code markieren | Generiert in 0.00035 Sekunden.
1
sudo vi  dhcpd-pxe.conf
CODE Quelltext: (1 Zeile) | Code markieren | Generiert in 0.00035 Sekunden.

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. Die IP muss insgesamt 4 mal geändert werden. Vergessen Sie keinen Eintrag 

CODE Icon
CODE Quelltext: (14 Zeilen) | Code markieren | Generiert in 0.00088 Sekunden.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
dhcp-boot=tag:pxe,pxelinux.0
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,60,PXEClient:Arch:00006
dhcp-boot=tag:efi32,pxelinuxEFI32.efi,192.168.1.5
dhcp-option-force=tag:efi32,209,pxelinux.cfg/default_EFI32
dhcp-match=set:efi64bc,60,PXEClient:Arch:00007
dhcp-boot=tag:efi64bc,pxelinuxEFI64.efi,192.168.1.5
dhcp-option-force=tag:efi64bc,209,pxelinux.cfg/default_EFI64
dhcp-match=set:efi64,60,PXEClient:Arch:00009
dhcp-boot=tag:efi64,pxelinuxEFI64.efi,192.168.1.5
dhcp-option-force=tag:efi64,209,pxelinux.cfg/default_EFI64
CODE Quelltext: (14 Zeilen) | Code markieren | Generiert in 0.00088 Sekunden.

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, das 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, das der Inhalt gespeichert wurde!
:q und mit ENTER bestätigen. Sie verlassen den Editor!

Der letzte Schritt: DHCP Server neustarten

Damit unsere Änderungen auch angenommen werden, muss der DHCP Server einmal neugestartet werden. Gehen Sie dafür im DSM auf Systemsteuerung und dann DHCP-Serverund 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.

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.