PXE boot concepts¶
PXE (Preboot Execution Environment) boot lets a computer start up and load an operating system over a network, instead of from its hard drive or USB.
What is PXE Boot?¶
Think of it like this:
Imagine a computer with no software installed. When you turn it on, it uses PXE to say:
"Hey, is there a server on the network that can help me start up?"
If there is a server ready to help, it responds and says:
"Yes! Here’s a small program you can run to get started."
That small program helps the computer download more software (like a full operating system) to finish booting.
Key Services in PXE Boot Process¶
DHCP (Dynamic Host Configuration Protocol) Server¶
Purpose: Gives the computer an IP address so it can communicate on the network.
PXE Role: Also tells the computer where to find the boot server (often via a special option like next-server or option 66/67).
TFTP (Trivial File Transfer Protocol) Server¶
Purpose: Transfers small boot files (e.g., pxelinux.0, configuration files, kernel, initrd).
Why TFTP? It’s simple, doesn't require authentication, and works well during early boot stages when the client has limited functionality.
PXE Role: Sends the actual files the computer needs to start booting.
HTTP Server¶
Purpose: Delivers larger files (e.g., operating system images, installation media).
Why HTTP? TFTP is slow and limited; HTTP is faster and more efficient for big files.
PXE Role: After the initial boot file loads, some PXE setups switch to HTTP to download the rest.
Step-by-Step¶
-
Client:
- Power on.
- Initializing network boot sequence.
- Requesting PXE boot instructions.
-
DHCP:
- Assigning IP address to client.
- Providing boot server details and bootloader path.
-
Client:
- Requesting bootloader file from the specified boot server.
-
TFTP:
- Transferring bootloader binary, configuration files, kernel image, and initrd to client.
-
Client:
- Bootloader loaded.
- Parsing configuration to locate OS installer and necessary packages via HTTP.
-
HTTP:
- Serving installation files and resources to client on demand.
-
Client:
- Downloading OS components.
- Proceeding with installation and preparing for reboot.
sequenceDiagram
participant Client
participant DHCP_Server
participant TFTP_Server
participant HTTP_Server
%% DHCP exchange
Client->>DHCP_Server: DHCPDISCOVER (with PXE options)
DHCP_Server-->>Client: DHCPOFFER (IP, next-server, boot filename)
Client->>DHCP_Server: DHCPREQUEST
DHCP_Server-->>Client: DHCPACK
%% Bootloader download via TFTP
Client->>TFTP_Server: Request bootloader (e.g., pxelinux.0)
TFTP_Server-->>Client: Transfer bootloader
%% Bootloader downloads additional files via TFTP
Client->>TFTP_Server: Request config file (e.g., pxelinux.cfg/default)
TFTP_Server-->>Client: Transfer config file
Client->>TFTP_Server: Request kernel and initrd
TFTP_Server-->>Client: Transfer kernel and initrd
%% Bootloader executes and may switch to HTTP
Client->>Client: Load and execute kernel/initrd
%% If using HTTP for install
Client->>HTTP_Server: Request installer, scripts, packages, etc.
HTTP_Server-->>Client: Serve installation files
%% Final steps
Client->>Client: Begin OS installation and reboot Why Use PXE?¶
- Great for installing operating systems on many computers without USBs or CDs.
- Very useful for setting multiple computers at once w/o need for human intervention (read, automation).