Dies ist eine weiterführende Anleitung zu meinem Grundgerüst, basierend auf dem nachfolgenden Artikel:
PXE&TFTP&DHCP Server einrichten
HTTP / FTP Downloads in der PXE-Umgebung ermöglichen
Melden Sie sich zuallererst auf Ihrer DS an und navigieren Sie anschließend ins Paketzentrum. Dort angekommen installieren Sie die Web Station, denn diese ist zwingend Voraussetzung für unser Vorhaben. In Firmenumgebungen gibt es eventuell bereits einen Webserver! In meinem Beispiel beziehe ich mich allerdings nur auf die Einrichtung unter Verwendung der DS.
Es gäbe auch die Möglichkeit einen externen Webserver als Downloadquelle zu nutzen. Die Geschwindigkeit wäre allerdings dann durch Ihren Internetanschluss begrenzt. Bei einer 100 Mbit/s Leitung wären das dann ungefähr 12,5 MB/s (Theoretisch). Das wäre also deutlich langsamer als das über einen internen Webserver abzuwickeln der im eigenen Intranet steht und mit 1 Gbit angebunden ist! Außerdem; Wer hat schon eine 100 Mbit/s Leitung beim ISP? Wir reden hier schließlich über Deutschland, wo ein nicht kleiner Teil gerade mal an der 10 Mbit/s Marke kratzt. Genug der Scherze. 🙂
Wenn Sie die Web Station installiert haben stellen Sie diese bitte wie auf den Bildern zu sehen ist ein:
Welche PHP Version Sie auswählen ist egal, da wir PHP ja nicht benutzen wollen, sondern lediglich einen Webserver mit Downloadmöglichkeit wollen.
Im Unterpunkt „Virtueller Host“ klicken sie auf „Erstellen“.
Wählen Sie dort portbasiert aus und aktivieren Sie daneben die HTTP Checkbox. HTTPS Verbindungen unterstützt Syslinux nicht! Diesen brauchen wir nicht. Vergeben Sie nun einen Port für Ihren Webserver. Im Standardfall ist Port 80 immer der normale HTTP Port. In unserem Fall ist es jedoch ratsam einen speziellen Port auszuwählen. Tragen Sie dort einfach 7777 oder einen Port Ihrer Wahl ein. Bedenken Sie dabei, dass Sie keine Ports verwenden dürfen, die durch andere Dienste in Ihrer Umgebung bereits genutzt werden. Der Dokument Root sollte der TFTP Root sein. Wie der bei Ihnen lautet müssen Sie selbst wissen.
Ich mache Ihnen trotzdem mal ein Beispiel (So könnten Sie Ihr TFTP Root in der DS genannt haben):
/PXEServer/TFTP/
/TFTPRoot/
In unserer Anleitung zum Einrichten des TFTP&PXE Servers hatten wir eine gewisse Verzeichnisstruktur angelegt. Suchen Sie einfach die Datei „pxelinux.0„. Alle Ordner die Sie dafür wechseln mussten sind der Pfad Ihres TFTP Root’s.
Beispiel:
/PXEServer/TFTP/pxelinux.0 => TFTP Root => /PXEServer/TFTP/
Als Nächstes wählen Sie noch bei HTTP-Backend „Nginx“ aus. Bei „PHP“ das Standard Profil.
Somit ist der Webserver auch soweit eingerichtet.
PXElinux Konfigurationsdateien editieren
Öffnen Sie die Datei: „pxelinux.cfg/default_BIOS“ in einem Editor. Ich mache Ihnen ein Beispiel wie Sie bereits vorhandene Einträge abändern könnten.
So sieht ein Eintrag bei mir in dieser Datei aus:
LABEL WinPE50X32ISO MENU LABEL 1. WinPE 10.0 Build 1709 x32 Bit - MemDisk ISO MENU INDENT 2 COM32 linux.c32 memdisk APPEND iso raw INITRD images/Winpe/WinPE10.0/WinPE_x86.iso TEXT HELP Es wird die Windows Vorinstallations Umgebung 10.0 im 32 Bit Modus geladen mit allen Netzwerktreibern. Die WinPE Versionen sind abwaertskompatibel. Es ist Ihnen moeglich mit der WinPE 10.0 Version auch aeltere Windows Versionen zu installieren. Es wird automatisch das Netzwerkshare zu den Windows Images aufgebaut. ENDTEXT
Sie sehen hier einen Eintrag um die 32-Bit WinPE 10 Version über Memdisk zu laden. Sie müssen nichts anderes machen, als vor dem Pfad der ISO Datei noch ein http://DS_IP_ADRESSE:PORT/ (Beispiel: http://192.168.1.5:7777/ ) davor zu stellen.
Nach dem Bearbeiten sollte der Eintrag so aussehen:
LABEL WinPE50X32ISO MENU LABEL 1. WinPE 10.0 Build 1709 x32 Bit - MemDisk ISO MENU INDENT 2 COM32 linux.c32 memdisk APPEND iso raw INITRD http://192.168.1.5:7777/images/Winpe/WinPE10.0/WinPE_x86.iso TEXT HELP Es wird die Windows Vorinstallations Umgebung 10.0 im 32 Bit Modus geladen mit allen Netzwerktreibern. Die WinPE Versionen sind abwaertskompatibel. Es ist Ihnen moeglich mit der WinPE 10.0 Version auch aeltere Windows Versionen zu installieren. Es wird automatisch das Netzwerkshare zu den Windows Images aufgebaut. ENDTEXT
Anpassen der iPXE Konfiguration
Suchen Sie nun folgende Dinge in der pxeEFI32.ipxe.cfg und pxeEFI64.ipxe.cfg:
set http-server SERVER_IP
Ersetzen Sie die SERVER_IP mit der HTTP Server IP Adresse.
Beispiel: 192.168.1.5:7777
Suchen Sie:
#set boot-url http://${http-server}/ set boot-url tftp://${next-server}/
und ersetzen Sie dies mit:
set boot-url http://${http-server}/ #set boot-url tftp://${next-server}/
Dadurch werden fast sämtliche Anfragen und Datenübertragungen über den HTTP Server gestellt und geleitet.
Das Booten über lpxelinux.0 einrichten
Aus unserer vorherigen Anleitung booten wir die pxelinux.0 Datei im Legacy Modus. Da diese Datei den HTTP / FTP Modus nicht unterstützt, werden wir noch ein wenig verändern müssen.
Laden Sie sich deswegen nochmal die aktuellste Syslinux Version herunter.
https://www.kernel.org/pub/linux/utils/boot/syslinux/Testing/6.04/syslinux-6.04-pre1.zip
Nach dem Entpacken kopieren Sie die Datei Syslinux 6.04\bios\core\lpxelinux.0 in das TFTP Root Verzeichnis Ihrer DS. Die Datei muss im selben Ordner liegen wie die Datei „pxelinux.0„!
DHCP Server (Dnsmasq) via SSH-Verbindung editieren
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!
Die Datei kann verschieden aussehen, je nachdem welche Anleitungen Sie bereits durchgegangen sind. In dieser Datei ist immer pxelinux.0 durch lpxelinux.0 zu ersetzen! Insgesamt kommt pxelinux.0 zweimal in der ganzen Datei vor!
Kopieren Sie bitte nicht mein Beispiel, sondern ändern Sie das bitte von Hand ab!
log-dhcp # PXEClient Codes dhcp-vendorclass=x86-BIOS,PXEClient:Arch:00000 # BIOS/Legacy Modus dhcp-vendorclass=x86-UEFI32,PXEClient:Arch:00006 # x86 32-Bit EFI dhcp-vendorclass=x86-UEFI,PXEClient:Arch:00007 # x86_64 64-Bit EFI dhcp-vendorclass=x86-UEFI64,PXEClient:Arch:00009 # x86_64 64-Bit EFI veraltet! dhcp-vendorclass=ARM-UEFI32,PXEClient:Arch:00010 # ARM 32-Bit EFI dhcp-vendorclass=ARM-UEFI64,PXEClient:Arch:00011 # ARM 64-Bit EFI # 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:x86-BIOS,pxelinux.0,0.0.0.0,0.0.0.0 # Boot-Tag, DHCP-Option 209, Pfad zur Syslinux-Konfigurationsdatei # dhcp-option-force=tag:x86-BIOS,209,pxelinux.cfg/default_BIOS # BIOS/Legacy Modus # PXELinux / Syslinux dhcp-boot=tag:x86-BIOS,pxelinux.0,0.0.0.0,0.0.0.0 dhcp-option-force=tag:x86-BIOS,209,pxelinux.cfg/default_BIOS # x86 32-Bit EFI Windows-Boot-Manager Eintrag # dhcp-boot=tag:x86-UEFI32,bootia32.efi,0.0.0.0,0.0.0.0 # x86_64 64-Bit EFI Windows-Boot-Manager Eintrag # Standard für die meisten UEFI Rechner # dhcp-boot=tag:x86-UEFI,bootx64.efi,0.0.0.0,0.0.0.0 # x86_64 64-Bit EFI Veraltet! Windows-Boot-Manager Eintrag # dhcp-boot=tag:x86-UEFI64,bootx64.efi,0.0.0.0,0.0.0.0 # iPXE Abschnitt # Alle aktivierten Einträge verwenden die iPXE Firmware dhcp-match=set:iPXE,175 # iPXE sends a 175 option. # Die erste Zeile ist stets die Firmware! # Die zweite Zeile ist der eigentliche Bootloader! # BIOS/Legacy Modus # dhcp-boot=tag:!iPXE,tag:x86-BIOS,undionly.kpxe,0.0.0.0,0.0.0.0 # dhcp-boot=tag:x86-BIOS,tag:iPXE,pxelinux.kpxe,0.0.0.0,0.0.0.0 # x86 32-Bit EFI dhcp-boot=tag:!iPXE,tag:x86-UEFI32,iPXE32.efi,0.0.0.0,0.0.0.0 dhcp-boot=tag:x86-UEFI32,tag:iPXE,pxeEFI32.ipxe,0.0.0.0,0.0.0.0 # x86_64 64-Bit EFI # Standard für die meisten UEFI Rechner dhcp-boot=tag:!iPXE,tag:x86-UEFI,iPXE64.efi,0.0.0.0,0.0.0.0 dhcp-boot=tag:x86-UEFI,tag:iPXE,pxeEFI64.ipxe,0.0.0.0,0.0.0.0 # x86_64 64-Bit EFI Veraltet! Manche VMs benötigen diesen Eintrag noch! dhcp-boot=tag:!iPXE,tag:x86-UEFI64,iPXE64.efi,0.0.0.0,0.0.0.0 dhcp-boot=tag:x86-UEFI64,tag:iPXE,pxeEFI64.ipxe,0.0.0.0,0.0.0.0 # Diese erforderlichen Dateien liegen meinem Paket nicht bei! # Diese müssen, wer diese benötigt, selbst erstellt/kompiliert werden! # ARM 32-Bit EFI # dhcp-boot=tag:!iPXE,tag:ARM-UEFI32,iPXE-ARM-32.efi,0.0.0.0,0.0.0.0 # dhcp-boot=tag:ARM-UEFI32,tag:iPXE,pxe-ARM-EFI32.ipxe,0.0.0.0,0.0.0.0 # ARM 64-Bit EFI # dhcp-boot=tag:!iPXE,tag:ARM-UEFI64,iPXE-ARM-64.efi,0.0.0.0,0.0.0.0 # dhcp-boot=tag:ARM-UEFI64,tag:iPXE,pxe-ARM-EFI64.ipxe,0.0.0.0,0.0.0.0
Wenn Sie die EINFÜGEN Taste einmal drücken, können Sie die Einträge verändern. Wenn Sie damit fertig sind drücken Sie 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!
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
Starten Sie den Rechner über PXE im Legacy Modus und überprüfen Sie, ob der Eintrag ordnungsgemäß funktioniert! Die Geschwindigkeit sollte deutlich besser sein, als TFTP Transfers. Ich habe selber mal geprüft wie viel schneller das nun vonstatten geht und in meinem Fall ist es der Faktor X4-X15. Im TFTP Protokoll werden die Daten mit ca. ~5 MB/s übertragen ohne TFTPBlockSize Angaben! Mit optimierten Werten komme ich auf ca. 25-30 MB/s. Das sind ganz ordentliche Werte, aber trotzdem noch kein Vergleich zu den HTTP Downloads.
Über HTTP mit ungefähr 20-100 MB/s im eigenen Intranet (Natürlich ist das abhängig von der aktuellen Netzwerklast/Auslastung der Synology). Ich habe hier privat überall 1 Gbit verlegt. Theoretisch wären 125 MB/s möglich. Real ungefähr 115 MB/s.
Testen Sie es einfach selbst wie schnell es nun geht. Es ist jedenfalls eine deutlich spürbare Verbesserung.
Genau so habe ich es auch gemacht.
Unter Dateidienste – TFTP – Erweiterte Einstellungen
Erlaubte Clients – Nur den folgenden IP-Adressbereich erlauben
Dort dann einfach mein Netz rein und fertig 😉
Stefen, danke mal wieder für deinen Support.
VG Matze
Ich habe den HTTP Server eingerichtet, es läuft auch alles soweit. Ich kann jedoch jetzt kein Linux mehr starten. Fehler lunix.c32 Boot aborted! und vmlimus failed.
Ubuntu wird jetzt auch nicht mehr geladen.
Ich poste meine default_BIOS mal unten an:
PATH /PC-BIOS/
DEFAULT vesamenu.c32
#Erlaubt das BOOT Prompt
PROMPT 0
NOESCAPE 0
ALLOWOPTIONS 1
MENU INCLUDE pxelinux.cfg/GFX_BIOS.conf
MENU TITLE Stefan Saft: PXELINUX 6.04 BIOS Bootloader & SystemTools
MENU AUTOBOOT Starte das Lokale Betriebssystem in # Sekunden
MENU TABMSG [TAB] zum Anpassen der Einstellungen.
MENU PASSPROMPT Passwort erforderlich!
TIMEOUT 300
TOTALTIMEOUT 9000
f1 pxelinux.cfg/f1.txt
f2 pxelinux.cfg/f2.txt
#Deutsches Tastaturlayout
KBDMAP german.kbd
##############################################################
#LINUX SECTION
##############################################################
LABEL LinuxSysteme
MENU LABEL Linux Installation:
MENU DISABLE
MENU BEGIN
MENU TITLE + Linux Systeme Auswahl
LABEL AllLinuxSystems
MENU LABEL Alle enthaltenen Linux Systeme:
MENU DISABLE
LABEL Ubuntu2004LTS
MENU LABEL 1. Ubuntu 22.04 x64 LTS – Live CD
MENU INDENT 3
KERNEL images/Ubuntu/Ubuntu22.04LTS/x64/casper/vmlinuz
APPEND root=/dev/nfs toram boot=casper vga=normal netboot=nfs nfsroot=192.168.10.114:/images/Ubuntu/Ubuntu22.04LTS/x64 ip=dhcp initrd=192.168.10.114:/volume1/tftp/tftp-root/images/Ubuntu/Ubuntu22.04LTS/x64/casper/initrd locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de quiet splash —
TEXT HELP
Ubuntu V20.04 x64 LTS (Long Term Support)
Systeme mit mehr als 2GB RAM.
Startet die Live CD.
Ubuntu mit 5 Jahren Garantie fuer Sicherheitsupdates und Patches.
ENDTEXT
LABEL Ubuntu2004LTSNetbootamd64
MENU LABEL 1. Ubuntu 20.04 X64 LTS – Netboot amd64
MENU INDENT 3
KERNEL images/Ubuntu/Ubuntu20.04LTS/Netboot/x64/linux
APPEND vga=788 initrd=192.168.10.114:/volume1/tftp/tftp-root/images/Ubuntu/Ubuntu22.04LTS/Netboot/x64/initrd.gz — quiet
TEXT HELP
Ubuntu V20.04 X64 LTS (Long Term Support)
Systeme mit mehr als 2GB RAM.
Installiert Ubuntu via Internet.
Ubuntu mit 5 Jahren Garantie fuer Sicherheitsupdates und Patches.
ENDTEXT
LABEL AutoMint
MENU LABEL [[:Prozessor Architektur Erkennung (Mint):]]
MENU INDENT 2
KERNEL ifcpu64.c32
append Mint64 — Mint32
TEXT HELP
Startet automatisch das passende Mint, das fuer Ihre Prozessor
Architektur ausgelegt ist.
ENDTEXT
LABEL Mint64
MENU LABEL 1. Mint 19.3 x64 Cinnamon – Live CD
MENU INDENT 3
COM32 linux.c32 images/Mint/Mint19.3/x64/casper/vmlinuz
APPEND boot=casper vga=normal netboot=nfs nfsroot=192.168.10.114:/images/Mint/Mint19.3/x64 ip=dhcp initrd=192.168.10.114:/volume1/tftp/tftp-root/images/Mint/Mint19.3/x64/casper/initrd.lz locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de systemd.mask=tmp.mount quiet splash —
TEXT HELP
Mint 19 x64
Systeme mit mehr als 2GB RAM.
ENDTEXT
#LABEL Mint32
#MENU LABEL 2. Mint 19.3 x86 Cinnamon – Live CD
#MENU INDENT 3
#COM32 linux.c32 images/Mint/Mint19.3/x86/casper/vmlinuz
#APPEND boot=casper vga=normal netboot=nfs nfsroot=192.168.10.114:/volume1/tftp/tftp-root/images/Mint/Mint19.3/x86 ip=dhcp initrd=192.168.10.114:/volume1/tftp/tftp-root/images/Mint/Mint19.3/x86/casper/initrd.lz locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de systemd.mask=tmp.mount quiet splash —
#TEXT HELP
#Mint 19 x86
#Systeme mit weniger als 2GB RAM.
#ENDTEXT
MENU SEPARATOR
LABEL return_main
MENU LABEL – ^Zum Hauptmenu
MENU INDENT 1
MENU EXIT
MENU END
MENU END
##############################################################
#Windows Section
##############################################################
LABEL WindowsSysteme
MENU LABEL Windows Installation:
MENU DISABLE
MENU BEGIN
MENU TITLE + Windows Installations Service
LABEL Original
MENU LABEL Microsoft Windows PE Images:
MENU DISABLE
LABEL WinPE50X32ISO
MENU LABEL 1. WinPE10.0 32-Bit – MemDisk ISO (Windows 10)
MENU INDENT 2
COM32 linux.c32 memdisk
APPEND iso raw
INITRD http://192.168.10.114:7777/images/Winpe/WinPE10.0/WinPE_x86.iso
TEXT HELP
Es wird die Windows Vorinstallations Umgebung 10.0 (Windows 10) im
32 Bit Modus geladen mit allen Netzwerktreibern.
Die WinPE Versionen sind abwaertskompatibel. Es ist Ihnen moeglich
mit der WinPE 10.0 Version auch aeltere Windows Versionen zu installieren.
Es wird automatisch das Netzwerkshare zu den Windows Images aufgebaut.
ENDTEXT
LABEL WinPE50X64ISO
MENU LABEL 2. WinPE10.0 64-Bit – MemDisk ISO (Windows 10)
MENU INDENT 2
COM32 linux.c32 memdisk
APPEND iso raw
INITRD http://192.168.10.114:7777/images/Winpe/WinPE10.0/WinPE_x64.iso
TEXT HELP
Es wird die Windows Vorinstallations Umgebung 10.0 (Windows 10) im
64 Bit Modus geladen mit allen Netzwerktreibern.
Die WinPE Versionen sind abwaertskompatibel. Es ist Ihnen moeglich
mit der WinPE 10.0 Version auch aeltere Windows Versionen zu installieren.
Es wird automatisch das Netzwerkshare zu den Windows Images aufgebaut.
ENDTEXT
LABEL WinPE50X32X64MGR
MENU LABEL 3. WinPE10.0 32-Bit + 64-Bit – BootMGR (Windows 10)
MENU INDENT 2
KERNEL pxeboot.0
TEXT HELP
Es wird die Windows Vorinstallations Umgebung 10.0 (Windows 10) im
64 Bit oder 32 Bit Modus geladen mit allen Netzwerktreibern.
Die WinPE Versionen sind abwaertskompatibel. Es ist Ihnen moeglich
mit der WinPE 10.0 Version auch aeltere Windows Versionen zu installieren.
Es wird automatisch das Netzwerkshare zu den Windows Images aufgebaut.
ENDTEXT
MENU SEPARATOR
LABEL return_main
MENU LABEL – ^Zum Hauptmenu
MENU INDENT 1
MENU EXIT
##############################################################
#SYSTEM SECTION
##############################################################
LABEL W4
MENU LABEL System:
MENU DISABLE
LABEL local
MENU DEFAULT
MENU LABEL – Von Lokaler Festplatte booten HDD 0 Partition 0
MENU INDENT 1
COM32 chain.c32
APPEND hd0 0
TEXT HELP
Bootet von der lokalen Festplatte.
ENDTEXT
LABEL reboot
MENU LABEL – System neusta^rten
MENU INDENT 1
COM32 reboot.c32
TEXT HELP
Starten Sie das System neu. Alternativ druecken Sie den RESET Knopf an
Ihrem Rechner.
ENDTEXT
LABEL off
MENU LABEL – System ^herunterfahren
MENU INDENT 1
COM32 poweroff.c32
TEXT HELP
Fahren Sie den Rechner herunter. Funktioniert nicht auf jedem Rechner.
Sollte dieser Eintrag nicht funktionieren so halten Sie den POWER Knopf
solange gedrueckt bis der Rechner aus geht.
ENDTEXT
LABEL PXESettings
MENU LABEL PXE Einstellungen:
MENU ENABLE
LABEL TextMode
MENU LABEL – PXELinux im Textmodus
MENU INDENT 1
KERNEL menu.c32
APPEND pxelinux.cfg/default_BIOS
TEXT HELP
Schaltet die PXELinux Oberflaeche in den Textmodus.
ENDTEXT
LABEL GUIMode
MENU LABEL – PXELinux im Grafikmodus (Default)
MENU INDENT 1
KERNEL vesamenu.c32
APPEND pxelinux.cfg/default_BIOS
TEXT HELP
Schaltet die PXELinux Oberflaeche in den Grafikmodus.
ENDTEXT
##############################################################
#INFO SECTION
##############################################################
LABEL W5
MENU LABEL Informationen:
MENU ENABLE
LABEL F1
MENU LABEL – [F1] Hilfe Anzeigen
MENU INDENT 1
MENU HELP pxelinux.cfg/f1.txt
LABEL F2
MENU LABEL – [F2] PXE Bootloader Version
MENU INDENT 1
MENU HELP pxelinux.cfg/f2.txt
Da stimmt mehrmals der Ordner nicht: Ubuntu20.04LTS steht da, dann wieder: Ubuntu22.04LTS.
Was stimmt denn jetzt?
Da musst du schon drauf achten 🙂