Preboot Execution Environment
aus Wikipedia, der freien Enzyklopädie
Das Preboot Execution Environment (PXE) ist ein Verfahren, um Computern einen netzwerkbasierten Bootvorgang (Netzboot) zu ermöglichen, der von client-seitig verfügbarem Massenspeicher und insbesondere Betriebssystemen unabhängig ist. Aktuell gilt die Version 2.1 der Spezifikation von Intel & Systemsoft.
PXE nutzt die Protokolle IP, UDP, DHCP, TFTP sowie die Konzepte GUID/UUID, UNDI (Universal Network Device Interface) und eine client-seitige Firmware-Erweiterung mit festgelegten APIs. PXE wurde als Teil der Wired-for-Management-Umgebung eingeführt.
Inhaltsverzeichnis |
[Bearbeiten] Ablauf
Die Firmware sucht einen PXE-kompatiblen Redirection-Service (Proxy DHCP), der ihr die Informationen zu verfügbaren PXE-Boot-Servern übermittelt. Nach Empfang einer Antwort kontaktiert sie im nächsten Schritt den passenden Boot-Server, um von ihm den TFTP-Pfad zum Herunterladen des NBP (Network Bootstrap Program) übermittelt zu bekommen. Dieser Boot-Loader wird anschließend in den Arbeitsspeicher geladen, eventuell verifiziert und ausgeführt. Wird nur ein einziges NBP für alle Clients verwendet, kann dieses in den meisten Fällen auch über die BOOTP-Methode heruntergeladen und der PXE-spezifische Ablauf somit übersprungen werden.
[Bearbeiten] Verfügbarkeit
Prinzipiell sollte PXE auf die meisten Hardware-Plattformen portierbar sein, von Intel wurde sie allerdings nur für die 32-Bit-Architektur IA-32 spezifiziert; durch die Integration in das EFI (Extensible Firmware Interface) ist sie auch auf der IA-64 verfügbar.
[Bearbeiten] PXE Client/Server Protokoll
Das PXE-Protokoll ist eine Kombination von DHCP und TFTP (jeweils mit Anpassungen). DHCP liefert den/die Boot-Server und TFTP wird zum Laden des Bootloaders benutzt.
Die PXE-Firmware sendet ein mit PXE-Optionen versehenes DHCPDISCOVER-Paket (extended DHCPDISCOVER) per Broadcast an Port 67/ UDP (DHCP-Server-Port). Die PXE-spezifischen DHCP-Optionen werden von nicht PXE-fähigen DHCP-Servern ignoriert.
[Bearbeiten] Proxy DHCP
Empfängt ein PXE Redirection Service (Proxy DHCP) ein extended-DHCPDISCOVER-Paket, so sendet er ein als DHCPOFFER kodiertes, mit PXE-Optionen erweitertes DHCP-Paket (extended DHCPOFFER) zurück an den Client. Da dieser häufig seine IP-Adresse erst noch mit einem DHCP-Server aushandeln muss, wird das Paket per Broadcast an Port 68/UDP (DHCP Client Port) gesendet und die Identifikation des Ziel-Hosts erfolgt über die vom Client im extended DHCPDISCOVER mitgesendete GUID/UUID.
Durch das extended-DHCPOFFER-Paket wird der Firmware hauptsächlich Folgendes übergeben:
- Multicast, Unicast oder Broadcast für die Kommunikation mit dem Boot Server verwenden
- Eine Liste von IP-Adressen für jeden verfügbaren Boot-Server-Typ
- Ein Bootmenü, bei dem jeder Eintrag einen Boot-Server-Typ repräsentiert
- Einen Bootprompt, der den Benutzer auffordern sollte, die Taste <F8> für das Bootmenü zu drücken
- Einen Timeout für den Bootprompt, nach dessen Ablauf automatisch der erste Eintrag im Bootmenü gewählt wird
Soll der Proxy DHCP auf dem selben Host wie der Standard-DHCP-Dienst laufen, so lauscht er auf Port 4011/UDP und erwartet als DHCPREQUEST kodierte Pakete, die ansonsten den vorher beschriebenen extended-DHCPDISCOVER-Paketen entsprechen. In diesem Fall sendet der Standard-DHCP-Dienst ein mit einer bestimmten Kombination von PXE-spezifischen Optionen versehenes DHCPOFFER-Paket an den Client, damit dieser nach dem Proxy-DHCP-Dienst auf demselben Host an Port 4011/UDP sucht.
[Bearbeiten] Boot Server
Um mit einem PXE-Boot-Server in Kontakt treten zu können, muss die PXE-Firmware-Erweiterung eine gültige IP-Adresse und ein extended-DHCPOFFER-Paket erhalten haben. Anhand der Informationen aus dem extended-DHCPOFFER-Paket und der Auswahl des Boot-Server-Typs sendet die Firmware-Erweiterung nun per Multicast, Broadcast oder Unicast ein als DHCPREQUEST (oder DHCPINFORM) kodiertes, mit PXE-spezifischen Optionen erweitertes DHCP-Paket (extended DHCPREQUEST bzw. extended DHCPINFORM) an Port 4011/UDP - oder 67/UDP im Falle eines Broadcasts. Dieses Paket enthält den PXE Boot Server Type und einen sogenannten PXE Boot Layer; somit ist es auch möglich, mehrere Boot Server auf einem Host zu betreiben.
Empfängt ein PXE Boot Server ein extended-DHCPREQUEST- oder ein extended-DHCPINFORM-Paket und ist er sowohl für den verlangten Boot-Server-Typ als auch für die angegebene Client-Architektur (z.B. IA-32) konfiguriert, so muss er mit einem als DHCPACK kodierten, mit PXE-spezifischen Optionen erweiterten DHCP-Paket (extended DHCPACK) an den Source-Port aus dem extended-DHCPREQUEST- oder extended-DHCPINFORM-Paket antworten.
[Bearbeiten] Integrationsfähigkeit
Das PXE Client/Server Protocol wurde so entworfen, dass es sich
- parallel und störungsfrei zu bestehenden DHCP-Umgebungen betreiben lässt
- nahtlos in DHCP-Dienste integrieren lässt
- als selbständige Server für jeden einzelnen Dienst (DHCP, Proxy DHCP, Boot Server) oder in beliebigen Kombinationen in integrierten Servern implementieren lässt
- ohne den Umweg der offiziellen Spezifizierung durch Intel erweitern lässt
Außerdem ist die PXE-Firmware-Erweiterung als Option-ROM zum BIOS der IA-32 entworfen, so dass sich ein PC durch eine neue Netzwerkkarte PXE-fähig aufrüsten lässt.
[Bearbeiten] Weblinks
- #pxe - Ein kleiner Channel im freenode.net
- PXE Wiki - Ein kleines Wiki, das mit euren Fragen wächst...
- PXE Error codes - Webseite mit PXE Error Codes und Erklärung
[Bearbeiten] Quellen
Dokumente, Spezifikationen und RFCs zu PXE:
- PXE-Spezifikation - Preboot Execution Environment v2.1 von Intel & Systemsoft
- BIS-Spezifikation - Boot Integrity Services v1.0 von Intel
- Remote-Boot-Protocol Draft - Entwurf für das Remote Boot Protocol, das in die PXE-Spezifikation integriert wurde.
- RFC-3679 - RFC zu DHCP Option Codes die teilweise jetzt PXE zugewiesen sind