Synology: PXE-Server einrichten
Im Alltag komme ich meistens ohne optische Datenträger aus und wenn die ein oder andere Kundenmaschine dann doch einmal gesichert oder geprüft werden muss, gibt es ja den bootfähigen USB-Stick, den man immer dabei hat. Oder halt immer genau dann nicht, wenn man ihn mal braucht und gemäß dem Motto „Wer sichert, ist feige“ offline ein Komplettbackup eines Servers anfertigen möchte. So geschehen letztens bei mir – kein Rohling mehr im Hause, bei den anderen im Haushalt befindlichen USB-Sticks grassierte auch die sprichwörtliche Schwindsucht und so entstand die Idee, sich doch einmal näher mit dem immer zur Seite geschobenen Thema „PXE-Boot“ zu beschäftigen und dieses vielleicht mit der heimischen Synology zu kombinieren.
Vorab – die Synology – hier eine DS-215+ – mit einer Beta-Version des DSM (6.0-7135) ist natürlich nur Mittel zum Zweck : Das Ganze geht (reproduzierbar) auch mit einer QNAP oder eben einem Linux-PC, ich beschränke mich im folgenden allerdings auf die Funktionen des Synology-NAS – eben weil es hier im Hause steht. PXE steht für „Preboot Execution Environment“ (PXE), welches als Netzwerkprotokoll das Booten von PCs über das Netzwerk möglich macht. Und genau dieser Technik, die 1999 von Intel in die Spezifikation 2.1 gegossen wurde, ist nicht nur eine Kombination aus TFTP und DHCP, sondern seit Jahren fester Bestandteil unser PCs- bzw. Netzwerkinterfaces.
Anstatt über die lokale Festplatte zu booten, versucht das Gerät via PXE, eine IP-Adresse vom PXE-Server zu bekommen und die Umgebung dahinter – die uns wiederum weitere Möglichkeiten bietet – zu starten. Ob dies nun ein komplettes Betriebssystem oder (wie in unserem Beispiel) diverse ISO-Dateien sind, die gestartet werden, ist egal – für mich ist es an dieser Stelle nur von Belang, meine in ISO-Files verpackten Helferlein von jedem PC im Netz aus starten zu können.
Der erste Schritt ist nun, sich auf das Webinterface der Synology zu begeben, um den TFTP/PXE-Modus zu aktivieren. Dies geschieht über die Systemsteuerung unter „Dateidienste“ – dort findet Ihr dann den Punkt „TFTP / PXE“:
Aktiviert also den TFTP-Dienst und gebt den dort geforderten TFTP-Root-Ordner an. An dieser Stelle hatte ich als gemeinsamen Ordner / Share schon einmal die Freigabe „pxe“ erstellt, die dann in Zukunft das Hauptverzeichnis des PXE-Servers darstellen soll:
Ist das erfolgt, solltet Ihr Euch ein passendes PXE-Bootimage aus dem Internet herunterladen – ich habe sehr gute Erfahrungen mit dem von Paul Maunders gemacht, welches es auf GitHub zum Download gibt. Entpackt das Archiv und legt es in die hier als „pxe“ betitelte Freigabe Eures Synology-Systems ab:
Unter „images“ befindet sich übrigens ein CentOS-Image, welches Ihr natürlich dort belassen könnt – ich für meinen Teil habe es entfernt, da ich es aktuell nicht brauche. Wer sich aber den Aufbau vom Anfang an noch einmal in Ruhe anschauen möchte, findet hier ein tolles Beispiel out-of-the-box vor. Definiert auf jeden Fall die Datei „pxelinux.0“ als Bootloader:
Dann setzt Ihr den Haken bei „DHCP-Dienst auf diesem Server für PXE einrichten“, wählt das Netzwerkinterface aus, auf dem der PXE-Server agieren soll (hier LAN 1) und dann geht es weiter Richtung Konfiguration des DHCP-Bereiches.
Hier können natürlich – je nach Anforderung / Infrastruktur – verschiedene Faktoren eine Rolle spielen. Im vorliegenden Beispiel, was bei mir „Zuhause“ bzw. „Home Office“ heisst, habe ich einen kleinen Adressbereich ausserhalb des von meinem Router verteilten DHCP-Adressbereichs gewählt. Gebt also die Start- und End-IP-Adresse samt Subnetzmaske und DNS-/Gateway ein – in meinem Fall habe ich die Adressen 192.168.16.250 bis .254 als DHCP-Bereich definiert, als Subnetzmaske grosszügig die 255.255.255.0 (typisches Heimnetz eben!) gewählt und als Gateway-/DNS meinen lokalen Router 192.168.16.1 eingetragen. Einmal auf „Übernehmen“ klicken und fertig ist die PXE-Funktionalität auf Eurem NAS.
Wer mag, kann sich die erweiterten Einstellungen des TFTP-Servers noch einmal zu Gemüte führen und unter anderem die Protokollierung aktivieren sowie TFTP-Berechtigungen aktivieren, nur spezielle Clients erlauben oder das Zeitlimit für den TFTP-Server entsprechend ändern. Ich habe hier alles auf Standard belassen, aber das mag sich – je nachdem, in welcher Umgebung Ihr die PXE-Funktionalität nutzen wollt – von User zu User natürlich unterscheiden.
Ist das alles erfolgt, sind wir auf Seiten der Synology schon einmal mit der Grundeinrichtung fertig. Wenden wir uns dann einmal der PXE-Konfigurationsdatei „default“ zu, die in der „pxe“-Freigabe im Unterordner „pxelinux.cfg“ residiert. Anbei findet Ihr mein Beispiel, welches eine Acronis-Boot-CD (bitte die jeweiligen Lizenzbedingungen beachten!) sowie eine GParted-Boot-CD im ISO-Format enthält:
Das Ganze ist an sich relativ selbsterklärend – hier aber einmal kurz die Übersicht der einzelnen Befehle innerhalb der Konfigurationsdatei:
- „prompt 0“ – Setzen wir den Wert auf 1, erscheint eine Eingabezeile beim Bootvorgang, in der dann das zu bootende Label eingegeben werden kann
- „timeout 100“ – Nach 10 Sekunden wird standardmässig das im folgenden Parameter ONTIMEOUT angegebene „chainlocal“ (also das Booten von der lokalen Festplatte) durchgeführt – das LABEL hierfür blieb in meiner Umgebung auch unangetastet
- „MENU TITLE“ – Wer seinem Bootmenü einen sinnvollen Namen geben möchte, darf das an dieser Stelle und mit dieser Option tun 🙂
- „LABEL“ – Bezeichnung der einzelnen Bootvariante innerhalb der Konfigurationsdatei
- „menu label“ – Bezeichnung des Menüpunktes innerhalb des Bootmenüs, die der User sichtbar sieht und auswählen kann
- „KERNEL memdisk“ – Hierüber wird der zu startende Kernel spezifiziert. Dabei ist es möglich, beliebige Kernel zu starten. Dies können auch spezielle binäre Programme wie das bekannte MemTest86 sein. MEMDISK lädt das über initrd angewählte Abbild in eine RAM-Disk mit passender Größe und versucht dann, es zu booten
- „initrd“ – Hier ist der Pfad – ausgehend vom PXE-Rootverzeichnis – angegeben, in dem die jeweilige ISO-Datei liegt
- „append iso raw“ – Sagt dem PXE-Bootloader, dass die unter „initrd“ angegebene ISO-Datei geladen werden soll, „raw“ ist optional und historisch bekannt aus Syslinux-Umgebungen < 4.04, die damit auch Images, die via zip oder gzip gepackt wurden, booten konnten
Habt Ihr die Konfigurationsdatei entsprechend angepaßt und Eure Images brav in die entsprechenden Verzeichnisse verschoben, sind eigentlich alle Grundvoraussetzungen erfüllt.
Nun dürft Ihr mit dem Testrechner Eures Vertrauens einmal versuchen, via PXE zu booten. Nach ein wenig Suchen seitens der Netzwerkkarte sollte der TFTP-Server gefunden werden und Euch das zuvor definierte Menu präsentieren:
Übrigens ist nicht jede ISO so einfach startfähig – die von mir benutzten Tools haben einwandfrei funktioniert, ebenso wie eine Windows Server 2008 R2-Installations-DVD oder eine Veeam-Boot-CD. Über die Klinge gesprungen ist in der vorliegenden Konstellation beispielsweise aber die Windows Server 2012 R2-Installations-DVD, wobei da auch vorab einige Daten durch das Netzwerk in das RAM der Maschine flitzen, bis der Datenträger final geladen ist – oder irgendwann das Handtuch wirft. Da sich mein Einsatzzweck des PXE-Servers in den eigenen vier Wänden aber auf Tools und vielleicht einmal die ein oder andere Live-CD/DVD beschränkt, kann ich damit leben – schliesslich kann ich dann frei von Rohlingen (die ich eh nicht mehr nutze/kaufe) und USB-Sticks (die ich anscheinend immer verschludere) mal schnell die ein oder andere Arbeit an Rechnern und Servern durchführen, hauptsächlich halt Backups.
Übrigens sehen die Optionen für TFTP/PXE und DHCP auf dem aktuellen Release Candidate des DSM 6.0 (Build 6.0.7307) ein wenig anders aus (danke für den Hinweis, @Martin) – hier bekommt der DHCP-Server seinen eigenen Menüpunkt in den Systemeinstellungen und mehr Möglichkeiten für einzelne DHCP-Optionen. Das Ganze habe ich aber noch einmal nachvollzogen und am Ende kommt dasselbe dabei heraus, nur sind die einzelnen Einstellungsmöglichkeiten ein wenig verteilt:
Ansonsten ist dies natürlich nur ein kleiner Abriß zum Thema TFTP/PXE – das Ganze ist ein ganz weites Feld und mit dieser Anleitung habe ich mich nur in einen kleinen Teilbereich begeben, der zudem noch auf eine spezielle Hardware abzielt. Dieses Konstrukt ist aber natürlich nicht nur Synology-abhängig und lief auch auf einem älteren QNAP-NAS bzw. einem virtuellen Ubuntu Linux. Schaut Euch den Spaß wie gesagt einmal an, viele hilfreiche Basisinformationen gibt es zu diesem Thema auch auf Syslinux. In diesem Sinne: Viel Spaß!
@Martin – Artikelergänzung siehe oben innerhalb der Galerie. Mit dem RC (6.0.6307) haben sich in der Tat die Menüpunkte geändert und allein die DHCP-Optionen, die man den Clients mitgeben kann, sind schon sehr spannend. Am Ende funktioniert es aber auch genau so wie im Artikel beschrieben, die Punkte sind nun ein wenig mehr verteilt. Kannst Du ja mal in Deiner Umgebung ausprobieren – auf jeden Fall besten Dank für den Hinweis!
@Oliver: Vielen Dank für die Ergänzung des Artikels in Bezug auf die neue DSM 6 RC.
Was mir allerdings dabei nicht so ganz klar ist: Bei der „alten“ Version war der DHCP der Synology ja nur für die DHCP Anfragen bei PXE Nutzung zuständig.
Bei den neuen Einstellungen kommt es mir so vor, als ob diese Einstellung nicht mehr nur für PXE sondern für das ganze Netzwerk gilt.
Kann das jemand nachvollziehen?
Ist ja sehr interessant… Habe den PXE Boot seit einer ganzen Weile im Einsatz.
Und jetzt mit RC6 6307 kann ich den DHCP „ploetzlich“ nicht mehr aktivieren.
Tätige saemtliche Einstellungen und nach Klick auf OK bleiben die LAN Schnittstellen unter DHCP grau.
Kann das jemand nachvollziehen?
Ich hab unter DSM v4 Spaß mit PXE gehabt, denn er hat den DHCP Range nicht mehr löschen wollen, nachdem ich genug mit PXE herumgespielt habe. Lösen konnte das Problem der Synology Support nicht. Seitdem nutze ich ein virtuelles DSM zum Spielen, da sind Bugs nicht so schmerzhaft 😉
Toller Artikel. Schon mal großes Lob hierfür 🙂
Ich bin gerade dabei das ganze mit Clonezilla nachzuvollziehen.
Da komme ich aber leider nicht weiter.
Es hapert an der Übertragung der Datei filesystem.squashfs via tftp.
An der Stelle wäre dann das NAS nicht erreichbar- meint das Clonezilla beim booten.
Firewall habe ich geprüft. TFTP-Port 69 ist freigegeben.
Habe dann noch vom PXE unabhängig geprüft, ob ich die Datei via curl downloaden kann.
Funktioniert aber leider auch nicht.
curl tftp://192.168.0.xx/images/clonezilla/filesystem.squashfs
curl: (69) TFTP: Access Violation
Datei liegt im Verzeichnis /pxe/images/clonezilla/filesystem.squashfs auf dem NAS.
Kann mir jemand einen Tipp geben, woran es liegen könnte?
Stehe da gerade vor einem Rätsel 🙂 Danke
Bei mir sieht die cfg so aus:
LABEL clonezilla
MENU LABEL ^Clonezilla Live 1.2.2-14
KERNEL images/clonezilla/live/vmlinuz
APPEND initrd=images/clonezilla/live/initrd.img boot=live union=overlay noswap noprompt vga=788 fetch=tftp://192.168.222.10/images/clonezilla/live/filesystem.squashfs
nfsroot=192.168.222.10:/volume1/pxe/images/clonezilla
Das Filesystem liegt bei mir noch im Unterverz. LIVE. vllt liegt da der Fehler?
Übrigens hat sich das Problem mit dem fehlenden DHCP mit der DSM 6.0-7321 erledigt.
@ Martin
Du hast vollkommen recht und das ist leider extrem unschön. Wenn man in DSM 6.X den DHCP aktiviert und auf seinem Router noch den DHCP hat sind defacto 2 aktive DHCP im Netzwerk. Vor dem Problem stehe ich auch gerade und hab leider noch keine Lösung gefunden 🙁
Sehr unschön.
@Frank – Danke für die Info!
@Sebastian – Ich habe hier dieselbe Kombination, allerdings noch nie eine Adresse aus dem zweiten DHCP-Bereich bei „normalen“ Clients bekommen – die greift hier offenbar einzig und allein bei Anfragen seitens von PXE-Bootvorgängen bzw. wenn ich den Haupt-DHCP abschalte. Sonderbar.
@Stefan – Vielen Dank für das Lob 🙂 ! Ich habe jetzt mal zuhause Clonezilla mitintegriert, boote aber direkt die ISO:
LABEL clonezilla
menu label Clonezilla
KERNEL memdisk
initrd images/clonezilla/clonezilla-live-2.4.5-23-amd64.iso
append iso raw
Hast Du das mal gegebenenfalls ausprobiert?
Hmm sehr komisch. Bei mir bekommen zumindest die Clients die TFTP benutzt haben nur noch IPs von der Synology. Vielleicht mal die Leasetime verkürzen?
Hat es vielleicht schon wer geschafft Windows 7,8 und/oder 10 Installations Isos ans laufen zu bekommen?
Wenn ich die ganz normale Iso wie in der Anleitung beschrieben einpflege, lädt das pxe die iso eine ganze weile, bricht dann aber ohne Fehler ab und mein System startet ganz normal von der Festplatte.
@Sebastian – Indirekt ja. Ich boote ein PE Windows und habe die Images von 7/10 entpackt auf der Syno. Das PE bootet in die Shell, verbindet ein Laufwerk per Script und dort kann ich dann das Setup von 7/8/10 aus einem Menu starten.
Im Synology-Wiki ist das sehr schön erklärt.
http://www.synology-wiki.de/index.php/PXE#Windows_7_.2F_8_.2F_8.1_.2F_10
Die Images von 7/10 direkt laufen bei mir auch nicht.
@Frank / @Oliver – Vielen Dank für eure Beispiele 🙂
@Oliver – Das Laden der kompletten ISO-Datei funktioniert einwandfrei.
@Frank – Leider kann ich auch mit deinem Beispiel nicht korrekt die erforderlichen Dateien via tftp laden. Habe ich mit 2 unterschiedlichen Rechnern getestet.
Hatte zwischendurch gedacht, das es etwas mit den Netzwerkkarten und evtl. nicht vorhanden Treibern zu tun haben könnte.
Das kann ich aber eigentlich nun ausschließen, da ich mit der ISO-Boot-Methode sehen konnte, das er mir eine IP geben konnte (nach Auswahl von SAMBA als Ziel)
Danke euch 🙂
@Stefan – Gern‘ geschehen – ich finde das schön, wenn bei solch einem Thema die Köpfe zusammengesteckt werden, das zeigt ja zumindest, dass für solche Themen auch Bedarf ist 🙂 !
Alles schön und gut, aber was ist mit UEFI-Boot? Vielen neue PC (Tablet) haben nämlich nur noch UEFI-Bios!
THeo
Kann ich mit PXE aus einen Mac mit OSx installieren?
@Schultz – Soviel ich weiß, unterstützen Macs kein PXE, sondern Netboot und das setzt wieder die installierte macOS Server-Variante voraus: http://krypted.com/mac-security/setup-netboot-on-os-x-server-5-for-el-capitan-and-yosemite/
Hallo Leute, ich würde dieses Thema gern einmal aufnehmen, ich habe die Anleiungen befolgt, PXE funktioniert auch soweit, nur kann ich nicht booten.
PXELinux wird erkannt… zum Schluss folgt:
TFTP prefix:
Trying to load: pxelinux.cfg/default
boot:
No MBR magic.
WARNING: treating disk as raw.
Booting…
Ich habe noch nichts am Aufbau oder an den Images verändert. Hat jemand eine Idee?
@Khiro – Was versuchst Du denn zu booten? „No MBR magic“ liest sich zumindest so, als wäre die ISO nicht wirklich startfähig. Geschieht das bei jedem Eintrag oder hast Du einmal eine kleine ISO (CloneZilla etc.) ausprobiert? Oder lief das schon einmal und plötzlich nicht mehr?
Ich habe lediglich veruscht, das oben erwähnte Paket „https://github.com/paulmaunders/TFTP-PXE-Boot-Server/archive/master.zip“ zu starten, dabei habe ich keine Veränderungen vorgenommen. Gibt es ein alternatives Image, ähnlich konstruiert mit Menüanpassungen? Ob Syslinux oder Grub4Dos wäre egal.