PXElinux 6.04-pre1/iPXE 1.20.1 – Lightweight IP HTTP/FTP Support einrichten

Anmerkung:
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!

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

PXELinux HTTP Support
PXELinux HTTP Support

Zum Anfang!

21 Antworten auf „PXElinux 6.04-pre1/iPXE 1.20.1 – Lightweight IP HTTP/FTP Support einrichten“

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

Schreibe einen Kommentar

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