- PrebootExecutionEnviroment
-
Das Preboot eXecution Environment (PXE) ist ein Verfahren, um Computern einen netzwerkbasierten Bootvorgang zu ermöglichen, der von client-seitig verfügbarem Massenspeicher und insbesondere Betriebssystemen unabhängig ist.
PXE nutzt die Protokolle TCP/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
Allgemein
Mit einem PXE-fähigen Rechner ist man in der Lage, anstelle von lokalen Medien (Festplatte, Diskette, CD etc.) über ein Netzwerk (Ethernet) von einem entfernten Rechner zu booten. Dies kann dazu dienen, auf einem Rechner ohne Zufügen von Medien (CDs, DVDs etc.) ein Betriebssystem zu installieren oder auch ein Thinclient-System (z. B. LTSP) aufzubauen, in dem die Client-Rechner gar keine Laufwerke benötigen, und dem Nutzer dennoch ein komplett nutzbares Betriebssystem zur Verfügung gestellt wird.
Der Netzwerk-Bootvorgang wird in der Regel durch die Netzwerkkarte selbst initiiert (genauer: ein auf der Karte installiertes BIOS). Unterstützt die Netzwerkkarte dies nicht, besteht unter anderem die Möglichkeit, ein Image von beispielsweise einer Diskette zu laden (als ersten Boot-Schritt), welches diese Funktionalität übernimmt. Solche Images werden zum Beispiel von dem Projekt etherboot zur Verfügung gestellt.
Ablauf
Die Firmware sucht einen PXE-kompatiblen Redirection-Service (Proxy DHCP), der 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.
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.
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.
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 demselben 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.
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.
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.
Siehe auch
- LTSP - Ein für viele Linuxsysteme verfügbares auf PXE basierendes Thinclient-System
- Etherboot - Eine Open Source Alternative zum proprietären PXE
- Softwareverteilung - In diesem Zusammenhang wird PXE am häufigsten genutzt
Weblinks
- [1] - Ein Tutorial, das beschreibt wie man Bart's Pe über PXE bootet (deutsch)
- PXE Wiki - Ein kleines Wiki, das mit euren Fragen wächst... (engl.)
- PXE Error codes - Webseite mit PXE Error Codes und Erklärung (engl.)
- Etherboot - Erstellt Boot Disketten für Systeme, deren BIOS kein PXE direkt unterstützt
- #pxe - Ein kleiner Raum im Freenode-IRC-Netzwerk
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
Wikimedia Foundation.