- Preboot Execution Environment
The Preboot eXecution Environment (PXE, aka Pre-Execution Environment, or 'pixie') is an environment to boot
computer s using a network interface independently of availabledata storage device s (likehard disk s) or installedoperating system s.PXE was introduced as part of the
Wired for Management framework byIntel and is described in the [http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf specification (v2.1)] published by Intel and [http://www.systemsoft.com/ Systemsoft] onSeptember 20 ,1999 . It makes use of severalnetwork protocol s like IP, UDP, DHCP and TFTP and of concepts like GUID/UUID andUniversal Network Device Interface and extends thefirmware of the PXE client (the computer to be bootstrapped via PXE) with a set of predefined APIs.The term "PXE client" only refers to the role that the machine takes in the PXE boot process. A "PXE client" can be a server, desktop, laptop or any other machine that is equipped with a PXE boot code.
Chain
The firmware on the client tries to locate a PXE redirection service on the network (Proxy DHCP) in order to receive information about available PXE boot servers. After parsing the answer, the firmware will ask an appropriate boot server for the file path of a network bootstrap program (NBP), download it into the computer's RAM using TFTP, possibly verify it, and finally execute it. If only one NBP is used among all PXE clients it could be specified using
BOOTP without any need of a proxy DHCP, but a TFTP boot server is still required.Availability
PXE was designed to be applicable to many system architectures. The v2.1 specification assigns architecture identifiers to six system types, including ones for the IA64 Itanium architecture and Alpha architecture. However the specification only completely coversIntel's 32 Bit
computer architecture (IA-32 ). Intel included PXE in theExtensible Firmware Interface for itsIA-64 , creating a de facto standard with the implementationPXE Client/Server Protocol
The PXE protocol is approximately a combination of DHCP and TFTP, albeit with subtle modifications to both. DHCP is used to locate the appropriate boot server or servers, with TFTP used to download the initial bootstrap program and additional files.
To initiate a PXE bootstrap session the PXE firmware broadcasts a DHCPDISCOVER packet extended with PXE-specific options ("extended DHCPDISCOVER") to port 67/UDP (DHCP server port). The PXE options identify the firmware as capable of PXE, but they will be ignored by standard DHCP servers. If the firmware receives DHCPOFFERs from such servers, it may configure itself by requesting one of the offered configurations.
Proxy DHCP
If a PXE redirection service (Proxy DHCP) receives an "extended DHCPDISCOVER", it replies by broadcasting a DHCPOFFER packet extended with PXE-specific options ("extended DHCPOFFER") to port 68/UDP (DHCP client port). This packet has to be broadcast, since most PXE clients will configure themselves by DHCP and cannot provide their
IP address in the "extended DHCPDISCOVER". Therefore the client is identified by its GUID/UUID.An "extended DHCPOFFER" contains mainly:
* a PXE Discovery Control field to decide whetherMulticast ing, Broadcasting orUnicast ing is to be used for contacting PXE boot servers
* a list of IP addresses of each available PXE Boot Server Type
* a PXE Boot Menu with each entry representing a PXE Boot Server Type
* a PXE Boot Prompt telling the user to pressto see the boot menu
* a timeout to launch the first boot menu entry if it expires.The Proxy DHCP service may also be run on the same host as the standard DHCP service. Since both services cannot share port 67/UDP, the Proxy DHCP runs on port 4011/UDP and expects the "extended DHCPDISCOVER packets" from PXE Clients to be DHCPREQUESTs. The standard DHCP service has to send a special combination of PXE options in its DHCPOFFER, so the PXE client knows to look for a Proxy DHCP on the same host, port 4011/UDP.
Boot Server
To contact any PXE Boot Server the firmware must have an IP address and has to consider all information from exactly one "extended DHCPOFFER". After choosing an appropriate PXE Boot Server Type the firmware multicasts or unicasts a DHCPREQUEST packet extended with PXE-specific options ("extended DHCPREQUEST") to port 4011/UDP or broadcasts it to port 67/UDP. This packet mainly contains the PXE Boot Server Type and the PXE Boot Layer, allowing to run many boot server types with one boot server daemon (or 'program'). The "extended DHCPREQUEST" may also be a DHCPINFORM.
If a PXE Boot Server receives an "extended DHCPREQUEST" as described above and if the boot server is configured for the requested PXE Boot Server Type and client architecture, it must respond by sending back an "extended DHCPACK" - a DHCPACK-packet extended with PXE-specific options - to the "extended DHCPREQUEST's" source port.
An "extended DHCPACK" contains mainly:
* the complete file path to download the NBP via TFTP.
* PXE Boot Server Type and PXE Boot Layer the boot server answered to
* the multicast TFTP configuration, if MTFTP as described in the PXE specification should be used.A PXE Boot Server as described in version 2.1 of the PXE specification should support the Boot Integrity Services (BIS) as described in the [ftp://download.intel.com/design/archives/wfm/downloads/bisspec.pdf BIS specification] v1.0 published by Intel. The BIS allow a PXE Client to verify downloaded NBPs using a
checksum file which is downloaded from the same boot server as the NBP was. To get the file path of this "credentials" file another exchange of "extended DHCPREQUEST" and "extended DHCPACK" is required.Network Bootstrap Program
After receiving the requested "extended DHCPACK", the "Network Bootstrap Program" is downloaded into the RAM and if it was verified or verification was not required, the NBP will be executed. It has access to the APIs of the PXE firmware extension (Pre-boot, UDP, TFTP, UNDI). Its functions or tasks are not described in the PXE specification.
Integration
The "PXE Client/Server Protocol" was designed so:
* it can be used in the same network as an existing DHCP environment without interference
* it can be integrated completely into standard DHCP services
* it can be easily extended at the most important points without acall for papers
* every service (DHCP, Proxy DHCP, Boot Server) can be implemented standalone or in any combination of them.Additionally the PXE firmware extension was designed as an
Option ROM for the IA-32BIOS so you can get a PC PXE-capable by installing a NIC that provides a PXE Option ROM.The design goal of utilizing existing DHCP and TFTP servers cannot be achieved in a strictly conforming implementation. Some aspects of the PXE protocol require that the DHCP and TFTP servers be modified and communicate. One specific example is using multicast, where DHCP packets provide the multicast group information rather than an opening RFC-2090 multicast TFTP exchange. The impact of this is minimal as the most common PXE client implementation (written by Intel and provided at no cost as a linkable IA32 binary module) interoperates with a combination of isolated DHCP and unicast TFTP servers.
See also
*
Remote Initial Program Load (RIPL)References
* This article is based on a translation of the equivalent article on the
German Wikipedia Resources
Specifications, RFCs and other documents about PXE:
* [http://www.pix.net/software/pxeboot/archive/pxespec.pdf PXE specification] - The Preboot Execution Environment specification v2.1 published byIntel &Systemsoft .
* [ftp://download.intel.com/design/archives/wfm/downloads/bisspec.pdf BIS specification] - The Boot Integrity Services specification v1.0 published by Intel.
* [http://quimby.gnus.org/internet-drafts/draft-henry-remote-boot-protocol-00.txt Remote Boot Protocol Draft] - draft of the PXE Client/Server Protocol included in the PXE specification.External links
* [irc://irc.freenode.net/pxe ##pxe] - A PXE channel on [http://freenode.net/ freenode.net]
* [http://dev.brantleyonline.com/wiki/index.php/PXE_Booting_Index PXE wiki] - A PXE wiki to grow with your questions.
* [http://vamosproject.org/PXE Vamos project PXE page] - PXE resources.
* [http://h18013.www1.hp.com/products/servers/management/rdp/knowledgebase/00000138.html PXE error codes] - A catalogue of PXE error codes
* [http://syslinux.zytor.com/wiki/index.php/PXELINUX PXELINUX] - Useful for booting Linux and other OS via PXE
* [http://www.gentilkiwi.com/documentations-s11-t-pxe.htm Mise en place d’un serveur de boot PXE sous Windows] fr icon
* [http://www.sweetnam.eu/index.php/PXE/Kickstart_Rough_Howto PXE Kickstart HowTo] - HowTo for using RedHat KickStart with PXE
* [http://home.allegiance.tv/~joem298/ DOS via PXE HowTo] - Simple HowTo for booting DOS (or any other bootable floppy) via PXE using PXELINUX and TFTPD32
* [http://thesystemadministrator.com/The_System_Administrator/Tips_%26_Tricks/PXE%2C_aka_Pre-Execution_Environment_-_Part_1/ Boot via PXE HowTo - Part 1] - Simple HowTo for booting DOS via PXE using TFTPD32
* [http://thesystemadministrator.com/the_system_administrator/tips_%26_tricks/pxe%2c_aka_pre-execution_environment_and_acronis_-_part_2/ Boot via PXE HowTo - Part 2] - Simple HowTo for booting Acronis via PXE using TFTPD32
*
* [http://www.bootix.com/products/pxe_prom_en.html Add-On PXE Codes] - PXE codes for network adapters and LAN-On-Motherboard computers that do not ship with a PXE code
Wikimedia Foundation. 2010.