Preboot-uitvoeringsomgeving - Preboot Execution Environment

Image
Een PXE-overzicht op hoog niveau

Bij het berekenen van de Preboot Execution Environment , PXE (meestal uitgesproken als / p ɪ k s Î / elf ) eigenschap beschrijft een gestandaardiseerde client-server omgeving die laarzen software samenstel, opgehaald uit een netwerk op van PXE-client (NIC ), en maakt gebruik van een kleine set Extensible Firmware Interface- industriestandaard netwerkprotocollen zoals DHCP en TFTP .

Het concept achter de PXE is ontstaan ​​in de begindagen van protocollen zoals BOOTP /DHCP/TFTP en maakt vanaf 2015 deel uit van de Unified Extensible Firmware Interface (UEFI)-standaard. In moderne datacenters is PXE de meest voorkomende keuze voor het opstarten, installeren en implementeren van besturingssystemen.

Overzicht

Sinds het begin van computer netwerken, is er een blijvende behoefte aan client systemen die kunnen opstarten juiste software images, met de juiste configuratie parameters, zowel opgehaald tijdens het opstarten van een of meer netwerk servers . Dit doel vereist dat een client een set pre-boot-services gebruikt, gebaseerd op industriestandaard netwerkprotocollen . Bovendien moet het Network Bootstrap Program (NBP), dat in eerste instantie wordt gedownload en uitgevoerd, worden gebouwd met behulp van een clientfirmware- laag (op het apparaat dat moet worden opgestart via PXE) en biedt het een hardware-onafhankelijke gestandaardiseerde manier om te communiceren met de omringende netwerkopstartomgeving. In dit geval zijn de beschikbaarheid en onderwerping aan standaarden een sleutelfactor die vereist is om de interoperabiliteit van het netwerkopstartprocessysteem te garanderen.

Een van de eerste pogingen in dit verband was de Bootstrap Loading met behulp van de TFTP-standaard RFC 906, gepubliceerd in 1984, waarmee de in 1981 gepubliceerde Trivial File Transfer Protocol (TFTP)-standaard RFC 783 werd ingesteld om te worden gebruikt als het standaard bestandsoverdrachtsprotocol voor het laden van bootstrap. Het werd kort daarna gevolgd door de Bootstrap Protocol- standaard RFC 951 (BOOTP), gepubliceerd in 1985, waardoor een schijfloze clientmachine zijn eigen IP-adres, het adres van een TFTP-server en de naam van een NBP kon ontdekken. in het geheugen geladen en uitgevoerd. Onder andere problemen bij de implementatie van BOOTP leidden uiteindelijk tot de ontwikkeling van de Dynamic Host Configuration Protocol- standaard RFC 2131 (DHCP) die in 1997 werd gepubliceerd. vereiste gestandaardiseerde clientzijde van de inrichtingsomgeving.

De Preboot Execution Environment (PXE) is door Intel geïntroduceerd als onderdeel van het Wired for Management- framework en wordt beschreven in de specificatie die is gepubliceerd door Intel en SystemSoft. PXE versie 2.0 werd uitgebracht in december 1998 en de update 2.1 werd in september 1999 openbaar gemaakt. De PXE-omgeving maakt gebruik van verschillende standaard client-serverprotocollen, waaronder DHCP en TFTP (nu gedefinieerd door de in 1992 gepubliceerde RFC 1350). Binnen het PXE-schema is de client-kant van de provisioning-vergelijking een integraal onderdeel van de PXE-standaard en wordt deze geïmplementeerd als een BIOS- extensie voor een Network Interface Card (NIC) of als huidige apparaten in UEFI- code. Deze onderscheidende firmwarelaag maakt bij de client de functies van een basis Universal Network Device Interface (UNDI), een minimalistische UDP / IP- stack, een Preboot (DHCP) clientmodule en een TFTP- clientmodule beschikbaar , die samen de PXE- toepassingsprogrammeerinterfaces vormen ( API's) die door de NBP worden gebruikt wanneer ze moeten communiceren met de services die worden aangeboden door de server-tegenhanger van de PXE-omgeving. De lage doorvoer van TFTP , vooral bij gebruik via verbindingen met hoge latentie , werd aanvankelijk beperkt door de TFTP Blocksize Option RFC 2348 die in mei 1998 werd gepubliceerd, en later door de TFTP Windowsize Option RFC 7440 die in januari 2015 werd gepubliceerd, waardoor potentieel grotere payload-leveringen mogelijk werden en dus doorvoer verbeteren.

Details

De PXE-omgeving is gebaseerd op een combinatie van industriestandaard internetprotocollen, namelijk UDP/IP, DHCP en TFTP. Deze protocollen zijn gekozen omdat ze gemakkelijk kunnen worden geïmplementeerd in de NIC-firmware van de client, wat resulteert in gestandaardiseerde PXE-ROM's met een kleine footprint . Standaardisatie, kleine omvang van PXE-firmware-images en hun lage gebruik van bronnen zijn enkele van de belangrijkste ontwerpdoelen, waardoor de clientzijde van de PXE-standaard identiek kan worden geïmplementeerd op een breed scala aan systemen, variërend van krachtige clientcomputers tot beperkte middelen computers met één bord (SBC) en systeem-op-een-chip (SoC) computers.

DHCP wordt gebruikt om de juiste parameters van het clientnetwerk te leveren en met name de locatie (IP-adres) van de TFTP-serverhosting, klaar om te downloaden, het initiële bootstrap-programma (NBP) en aanvullende bestanden. Om een ​​PXE-bootstrap-sessie te starten, zendt de DHCP-component van de PXE-firmware van de client een DHCPDISCOVER-pakket met PXE-specifieke opties uit naar poort 67/UDP (DHCP-serverpoort); het vraagt ​​om de vereiste netwerkconfiguratie en netwerkopstartparameters. De PXE-specifieke opties identificeren de geïnitieerde DHCP-transactie als een PXE-transactie. Standaard DHCP-servers (niet PXE ingeschakeld) kunnen antwoorden met een gewone DHCPOFFER met netwerkinformatie (dwz IP-adres), maar niet met de PXE-specifieke parameters. Een PXE-client kan niet opstarten als deze alleen een antwoord ontvangt van een niet PXE-compatibele DHCP-server.

Na het ontleden van een PXE-compatibele DHCP-server DHCPOFFER, kan de client zijn eigen netwerk-IP-adres, IP-masker, enz. de NBP. De client zet vervolgens de NBP over naar zijn eigen RAM ( Random Access Memory ) met behulp van TFTP, verifieert deze mogelijk (dwz UEFI Secure Boot ) en start er uiteindelijk vanaf. NBP's zijn slechts de eerste schakel in het opstartketenproces en ze vragen over het algemeen via TFTP om een ​​kleine set complementaire bestanden om een ​​minimalistische OS-executive (dwz WindowsPE of een eenvoudige Linux-kernel + initrd ) te laten draaien . De kleine OS-manager laadt zijn eigen netwerkstuurprogramma's en TCP/IP-stack. Op dit moment worden de resterende instructies die nodig zijn om een ​​volledig besturingssysteem op te starten of te installeren, niet via TFTP geleverd, maar met behulp van een robuust overdrachtsprotocol (zoals HTTP , CIFS of NFS ).

integratie

Image
DHCP versus proxyDHCP-server

De PXE Client/Server-omgeving is zo ontworpen dat deze naadloos kan worden geïntegreerd met een reeds bestaande DHCP- en TFTP-serverinfrastructuur. Dit ontwerpdoel vormde een uitdaging bij het omgaan met het klassieke DHCP-protocol. Zakelijke DHCP-servers zijn meestal onderworpen aan strikte beleidsregels die zijn ontworpen om te voorkomen dat eenvoudig extra parameters en regels worden toegevoegd die nodig zijn om een ​​PXE-omgeving te ondersteunen. Om deze reden heeft de PXE-standaard het concept van DHCP-omleiding of "proxyDHCP" ontwikkeld. Het idee achter een proxyDHCP is om de PXE DHCP-vereisten te splitsen in twee onafhankelijk beheerde en beheerde servereenheden:

  1. De klassieke DHCP-server die een IP-adres, IP-masker, enz. levert aan alle opstartende DHCP-clients .
  2. De proxyDHCP-server die het IP-adres van de TFTP-server en de naam van de NBP alleen aan PXE-geïdentificeerde opstartclients verstrekt .

In een DHCP plus proxyDHCP-serveromgeving zendt de PXE-client in eerste instantie een enkel PXE DHCPDISCOVER-pakket uit en ontvangt twee complementaire DHCPOFFERS; een van de reguliere niet-PXE-enabled DHCP-server en een tweede van de proxyDHCP-server. Beide antwoorden bieden samen de vereiste informatie om de PXE-client in staat te stellen door te gaan met het opstartproces. Deze niet-intrusieve benadering maakt het mogelijk een PXE-omgeving in te stellen zonder de configuratie van een reeds werkende DHCP-server aan te raken. De proxyDHCP-service kan ook op dezelfde host draaien als de standaard DHCP-service, maar zelfs in dit geval zijn het beide onafhankelijk uitgevoerde en beheerde applicaties. Aangezien twee services niet dezelfde poort 67/UDP op dezelfde host kunnen gebruiken, draait de proxyDHCP op poort 4011/UDP. De proxyDHCP-aanpak is uiterst nuttig gebleken in een breed scala aan PXE-scenario's, van bedrijfsomgevingen tot thuisomgevingen.

Beschikbaarheid

PXE is bedacht met het oog op verschillende systeemarchitecturen. De versie 2.1 van de specificatie definieerde architectuur-ID's voor zes systeemtypen, waaronder IA-64 en DEC Alpha . PXE v2.1 dekte echter alleen IA-32 volledig . Ondanks dit schijnbare gebrek aan volledigheid heeft Intel onlangs besloten om PXE breed te ondersteunen binnen de nieuwe UEFI- specificatie, waardoor de PXE-functionaliteit wordt uitgebreid naar alle EFI/UEFI-omgevingen. Huidige Unified Extensible Firmware Interface-specificatie 2.4A, sectie 21 Netwerkprotocollen — SNP, PXE en BIS definieert de protocollen die toegang bieden tot netwerkapparaten terwijl ze worden uitgevoerd in de UEFI-opstartserviceomgeving. Deze protocollen omvatten het Simple Network Protocol (SNP), het PXE Base Code Protocol (PXE) en het Boot Integrity Services Protocol (BIS). Tegenwoordig is de detectie van de clientarchitectuur in een PXE-omgeving zelden gebaseerd op de identifiers die oorspronkelijk waren opgenomen in de PXE v2.1-specificatie, in plaats daarvan zou elke computer die vanaf het netwerk opstart, DHCP-optie 93 moeten hebben ingesteld om de architectuur van de client aan te geven. Hierdoor kan een PXE-server (tijdens het opstarten) de exacte architectuur van de client kennen vanaf het eerste netwerkopstartpakket. De architectuurwaarden van het clientsysteem worden vermeld (naast andere PXE-parameters) in de in 2006 gepubliceerde RFC 4578 (Dynamic Host Configuration Protocol (DHCP) Options for the Intel Preboot eXecution Environment (PXE)).

Met de komst van IPv6 is DHCP uitgegroeid tot DHCPv6 ; de behoefte aan opties die PXE ondersteunen binnen het nieuwe DHCP-protocol is aangepakt door de in 2010 gepubliceerde RFC 5970 (DHCPv6 Options for Network Boot).

De originele PXE-clientfirmware-extensie was ontworpen als een Option ROM voor het IA-32 BIOS , dus een personal computer (pc) werd oorspronkelijk PXE-compatibel gemaakt door een netwerkinterfacecontroller (NIC) te installeren die een PXE Option ROM leverde. Tegenwoordig is de client PXE-code direct opgenomen in de eigen firmware van de NIC of als onderdeel van de UEFI-firmware op het moederbord.

Zelfs wanneer de originele client PXE-firmware is geschreven door Intel en altijd gratis is geleverd als een koppelbare IA32- objectcode-indelingsmodule die is opgenomen in hun Product Development Kit (PDK), heeft de open source-wereld in de loop der jaren niet-standaard afgeleide projecten geproduceerd zoals gPXE / iPXE die hun eigen ROM's aanbieden. Hoewel op Intel gebaseerde ROM's al meer dan 20 jaar de client-kant van de PXE-standaard implementeren, waren sommige gebruikers bereid om extra functies in te ruilen voor stabiliteit en conformiteit met de PXE-standaard.

Aanvaarding

PXE-acceptatie sinds v2.1 is alomtegenwoordig; tegenwoordig is het vrijwel onmogelijk om een ​​netwerkkaart te vinden zonder PXE-firmware erop. De beschikbaarheid van goedkope Gigabit Ethernet- hardware (NIC's, switches , routers , enz.) heeft ervoor gezorgd dat PXE de snelste beschikbare methode is om een ​​besturingssysteem op een client te installeren in vergelijking met de klassieke cd- , dvd- en USB-flashdrive- alternatieven.

In de loop der jaren hebben verschillende grote projecten PXE-ondersteuning opgenomen, waaronder:

Met betrekking tot NBP-ontwikkeling zijn er verschillende projecten die Boot Managers implementeren die uitgebreide functies voor het opstartmenu, scriptmogelijkheden, enz. bieden:

Alle bovengenoemde projecten, wanneer ze in staat zijn om meer dan één besturingssysteem op te starten/installeren, werken onder een "Boot Manager - Boot Loader" paradigma. De initiële NBP is een opstartmanager die zijn eigen configuratie kan ophalen en een menu met opstartopties kan implementeren. De gebruiker selecteert een opstartoptie en een OS-afhankelijke Boot Loader wordt gedownload en uitgevoerd om door te gaan met de geselecteerde specifieke opstartprocedure.

Broer/zus omgevingen

Apple heeft een zeer vergelijkbare netwerkopstartbenadering bedacht onder de paraplu van de Boot Server Discovery Protocol (BSDP) -specificatie. BSDP v0.1 werd oorspronkelijk door Apple gepubliceerd in augustus 1999 en de laatste v1.0.8 werd gepubliceerd in september 2010. De OS X Server bevat een systeemtool genaamd NetBoot . Een NetBoot-client gebruikt BSDP om dynamisch bronnen te verwerven waarmee een geschikt besturingssysteem kan worden opgestart. BSDP is gemaakt bovenop DHCP met behulp van leverancierspecifieke informatie om de extra NetBoot-functionaliteit te bieden die niet aanwezig is in standaard DHCP. Het protocol is geïmplementeerd in clientfirmware. Tijdens het opstarten verkrijgt de client een IP-adres via DHCP en ontdekt vervolgens opstartservers met behulp van BSDP. Elke BSDP-server reageert met opstartinformatie die bestaat uit:

  • Een lijst met opstartbare besturingssysteemimages
  • De standaardafbeelding van het besturingssysteem
  • De momenteel geselecteerde besturingssysteemimage van de client (indien gedefinieerd)

De client kiest een besturingssysteem uit de lijst en stuurt een bericht naar de server waarin de selectie wordt aangegeven. De geselecteerde opstartserver reageert met het leveren van het opstartbestand en de opstartimage, en alle andere informatie die nodig is om het geselecteerde besturingssysteem te downloaden en uit te voeren.

Afstammelingen omgevingen

Microsoft creëerde een niet-overlappende uitbreiding van de PXE-omgeving met hun Boot Information Negotiation Layer (BINL). BINL is geïmplementeerd als een serverservice en is een belangrijk onderdeel van hun strategieën voor Remote Installation Services (RIS) en Windows Deployment Services (WDS). Het bevat bepaalde voorbereidingsprocessen en een netwerkprotocol dat op de een of andere manier kan worden beschouwd als een door Microsoft gemaakte DHCP-extensie. BINL is een eigen technologie van Microsoft die gebruikmaakt van PXE-standaardclientfirmware. Momenteel is er geen publiekelijk beschikbare BINL-specificatie.

Documentatie over IETF-normen

RFC # Titel gepubliceerd Auteur Verouderde en bijgewerkte informatie
RFC 783 Het TFTP-protocol (revisie 2) juni 1981 K. Sollins Verouderd door - RFC 1350
RFC 906 Bootstrap laden met TFTP juni 1984 Ross Finlayson
RFC 951 Bootstrap-protocol september 1985 Bill Croft Bijgewerkt door RFC 1395, RFC 1497, RFC 1532, RFC 1542, RFC 5494
RFC 1350 Het TFTP-protocol (revisie 2) juli 1992 K. Sollins Bijgewerkt door RFC 1782, RFC 1783, RFC 1784, RFC 1785, RFC 2347, RFC 2348, RFC 2349
RFC 2131 Dynamisch hostconfiguratieprotocol maart 1997 R. Droms Bijgewerkt door RFC 3396, RFC 4361, RFC 5494, RFC 6842
RFC 2348 Optie voor TFTP-blokgrootte mei-1998 G. Malkin
RFC 4578 DHCP-opties voor de Intel PXE nov-2006 M. Johnston
RFC 5970 DHCPv6-opties voor opstarten via netwerk sep-2010 T. Huth
RFC 7440 Optie voor TFTP-venstergrootte jan-2015 P. Masotta

Zie ook

Referenties

Externe links