Legacy Boot
Der klassische Legacy-Boot, auch als BIOS-Boot bezeichnet, bildet das traditionelle Startverfahren älterer Systeme und unterscheidet sich grundlegend von modernen UEFI-Implementierungen. Beim Legacy-Boot erfolgt der Systemstart noch nach dem klassischen BIOS-Prinzip, bei dem kein kryptografisches Prüfverfahren wie Secure Boot eingesetzt wird. Stattdessen wird direkt ein Bootsektor von einem Datenträger oder über das Netzwerk geladen und ausgeführt.
Im Gegensatz zum UEFI-Modell arbeitet der Legacy-Boot mit einer festen Speicheradresse und einer 16-Bit-Initialisierung des Prozessors. Dadurch ist der Bootvorgang einfacher aufgebaut, jedoch auch weniger flexibel und sicher. Es existiert keine Signaturprüfung von Bootloadern oder Kerneln, denn das BIOS führt schlicht den Code aus, der sich im Bootsektor oder in der über PXE geladenen Datei befindet.
Ablauf des PXE-Boots im Legacy-Modus
Beim PXE-Start über BIOS wird zunächst der PXE-ROM des Netzwerkadapters initialisiert. Dieser fordert über DHCP eine IP-Adresse an und erhält im selben Prozess die Informationen zum Bootserver sowie den Namen der zu ladenden Bootdatei (z. B. pxeboot.n12).
Der weitere Ablauf gestaltet sich typischerweise wie folgt:
- BIOS-Initialisierung: Das System initialisiert die Hardware und übergibt die Kontrolle an das Netzwerkinterface mit aktiviertem PXE-ROM.
- DHCP-Anfrage: Der PXE-Client sendet eine DHCPDISCOVER-Anfrage, um eine IP-Adresse sowie Bootparameter zu erhalten.
- TFTP-Download: Nach erfolgreichem DHCP-Austausch lädt der Client die angegebene Bootdatei (z. B. pxeboot.n12) vom Server über das TFTP-Protokoll.
- Bootloader-Ausführung: Das BIOS übergibt die Kontrolle an den geladenen Bootloader, der anschließend weitere Komponenten (z. B. Kernel, Initrd, Menüdateien) nachlädt.
- Systemstart: Der Bootloader startet das Betriebssystem basierend auf den in der Konfiguration (z. B. pxelinux.cfg/default) angegebenen Parametern.
Vorbereitung des Bootloaders
Laden Sie zu Beginn von der offiziellen Webseite des SYSLINUX-Projekts die aktuelle Version herunter:
https://wiki.syslinux.org/wiki/index.php?title=SYSLINUX
Entpacken Sie das Archiv. Aus dieser ZIP-Datei benötigen Sie folgende Dateien, welche Sie ins Root-Verzeichnis Ihres PXE-Ordners kopieren:
- pxelinux.0 (im Pfad bios/core/pxelinux.0 relativ zur entpackten ZIP) - dies ist der Haupt-Bootloader für Legacy-BIOS + PXE. Diese Datei muss in pxeboot.n12umbenannt werden.
- ldlinux.c32 (im Pfad bios/com32/elflink/ldlinux/ldlinux.c32) - ein Kern-Modul (COM32) von SYSLINUX, das das Laden weiterer Module bzw. Erweiterungen unterstützt.
- libutil.c32 (im Pfad bios/com32/libutil/libutil.c32) - eine Bibliotheks-/Hilfsmoduldatei innerhalb der COM32-Module, die allgemeine Utility-Funktionen für andere Module bereitstellt.
- menu.c32 (im Pfad bios/com32/menu/menu.c32) - ein Modul zur Anzeige eines Textmenüs beim Booten; wenn im Konfigurationsfile z. B. DEFAULT menu.c32 gesetzt ist, wird dieses Menü-Modul gestartet.
Legen Sie diese Dateien direkt in das Root-Verzeichnis Ihres PXE-Ordners ab. Damit stellen Sie sicher, dass beim PXE-Boot-Vorgang der Bootloader und die Module korrekt über TFTP erreichbar sind. Hinweise hierzu finden Sie u. a. in der offiziellen Dokumentation.
├── pxeboot.n12
├── ldlinux.c32
├── libutil.c32
└── menu.c32
Anlage des Konfigurations-Ordners
Erzeugen Sie im PXE-Ordner anschließend einen Unterordner mit dem Namen pxelinux.cfg. Im Verzeichnis pxelinux.cfg werden später die Boot-Konfigurationsdateien für PXELINUX abgelegt. Typischerweise wird dieses Verzeichnis direkt unter dem TFTP-Root bzw. im Verzeichnis, in dem die Datei pxeboot.n12 liegt, erstellt.
Aufbau der Boot-Konfigurationsdateien
Legen Sie im Ordner pxelinux.cfg die Boot-Konfigurationsdateien an. Dabei gilt eine bestimmte Namens- und Suchlogik, die das Verhalten Ihres PXE-Bootservers steuert:
- default: Dies ist die Standard-Konfigurationsdatei. Wenn keine spezifischere Datei für einen Client gefunden wird (z. B. anhand MAC oder IP), wird diese Datei verwendet. Üblicherweise abgelegt als pxelinux.cfg/default.
- 01-<MAC-Adresse>: Eine Datei für exakt einen bestimmten Client, identifiziert durch seine MAC-Adresse. Die Namenskonvention beginnt mit 01-, gefolgt von der MAC-Adresse in Kleinbuchstaben, mit Bindestrichen anstelle von Doppelpunkten. Beispiel: 01-23-45-67-89-AB. Damit kann einer einzelnen Maschine eine eigene Boot-Konfiguration zugewiesen werden.
- <IP-Hex>: Eine Datei, die auf der IP-Adresse des Clients basiert. Hierbei wird die IP-Adresse in hexadezimaler Form verwendet (z. B. für 192.168.1.1 → C0A80101). Diese Variante ermöglicht die Konfiguration je nach IP-Adresse bzw. Subnetz. (hpc.temple.edu)
- <IP-TeilHex>: Kürzere Varianten der IP-Hex-Adresse. Falls keine Datei mit vollständiger IP-Hex gefunden wird, versucht PXELINUX kürzere Versionen (z. B. nur die oberen Bytes) der IP in hexadezimaler Form auszuwerten. Dadurch ist eine Art „Subnetz-Konfiguration“ über die Dateinamen möglich. (hpc.temple.edu)
Reihenfolge des Suchprozesses
Wenn ein Client bootet, durchsucht PXELINUX das Verzeichnis pxelinux.cfg in folgender Reihenfolge nach Konfigurationsdateien:
- Datei basierend auf der MAC-Adresse (also 01-<MAC>)
- Datei basierend auf der vollständigen IP in hexadezimaler Form (<IP-Hex>)
- Datei basierend auf abgekürzter IP in hex (z. B. nur die oberen Bytes <IP-TeilHex>)
- Datei default
Diese Reihenfolge stellt sicher, dass zuerst die spezifischste Konfiguration genutzt wird. Wenn keine passende Datei gefunden wird, wird auf die Standardkonfiguration zurückgegriffen. (hpc.temple.edu)
Zweck der Mechanismen
- Die Datei mit der MAC-Adresse ermöglicht eine exakte Zuweisung einer individuellen Boot-Konfiguration zu einer bestimmten Hardware.
- Die Datei mit der IP-Adresse (oder Teilen davon) erlaubt Gruppenkonfigurationen oder Zuweisungen entsprechend Netzwerk oder Subnetz.
- Die default-Datei stellt sicher, dass jeder Client zumindest eine Boot-Konfiguration bekommt, falls keine spezialisierte Datei vorhanden ist.
- Durch die Kombination dieser Mechanismen können flexibel bestimmte Clients differenziert behandelt werden, während andere auf eine generische Konfiguration zurückfallen.
- Für die meisten einfachen Szenarien genügt es, eine einzige default-Datei anzulegen. Damit wird eine einheitliche Konfiguration für alle Clients bereitgestellt.
Beispielkonfiguration (Standard-Variante)
In einem vereinfachten Setup wird eine einzige Konfigurationsdatei default genutzt, um eine generelle Boot-Konfiguration für alle Clients zu verteilen. Legen Sie im Verzeichnis pxelinux.cfg eine Datei mit dem Namen default an und tragen Sie dort z. B. folgende Grundstruktur ein:
MENU TITLE Netzwerk-Boot
TIMEOUT 50
PROMPT 0
LABEL local
MENU LABEL Boot von lokale Festplatte
LOCALBOOT 0xffff
Diese Struktur zeigt ein einfaches Menü an, welches das Modul menu.c32 verwendet („DEFAULT menu.c32“) und als Default-Eintrag das lokale Booten definiert. Sie können diese Vorlage mit weiteren Einträgen, Kernel, Init-RD und anderen Optionen erweitern. Wenn Sie nun ausgehend von dieser Konfiguration starten, erhalten Sie die folgende Bildschirmansicht und der Boot würde nach 5 Sekunden automatisch von der lokalen Festplatte starten.

Legacy Boot_Bootscreen

