Network Installation and Netbooting
Network Installation and Netbooting
In modern cloud environments, edge computing, and bare-metal server racks, attaching physical USB thumbdrives is impractical. Operating systems must support Preboot Execution Environment (PXE) network booting.
+-----------------------------------------------------------+
| The PXE Boot Sequence |
| |
| 1. Client Machine Powers On |
| - NIC sends DHCP Discover with PXE options (Option 66/67)
| | |
| v |
| 2. DHCP Server Responds |
| - Allocates IP (192.168.1.150) |
| - Option 66 (Next Server): TFTP IP (192.168.1.10) |
| - Option 67 (Boot File): bootx64.efi or ipxe.efi |
| | |
| v |
| 3. TFTP Transfer |
| - Client downloads bootloader binary into memory |
| | |
| v |
| 4. HTTP / iPXE High-Speed Transfer |
| - Bootloader fetches vmlinuz and initramfs over HTTP |
| | |
| v |
| 5. Linux Kernel Boots |
| - Initramfs configures DHCP on eth0 |
| - Mounts rootfs over NFS or downloads live SquashFS |
| - Launches installer or automated agent |
+-----------------------------------------------------------+
iPXE: The Modern PXE Chainloader
Standard motherboard PXE implementations use TFTP (Trivial File Transfer Protocol). Because TFTP operates over UDP with lock-step packet acknowledgement, downloading a 2 GB modern kernel and initramfs over TFTP can take over 45 minutes!
Modern distributions chainload iPXE: - iPXE adds HTTP, HTTPS, and DNS support to network booting. - Downloads run at full 10-Gigabit or 25-Gigabit line rates via HTTP.
Sample iPXE Boot Script (boot.ipxe)
#!ipxe
echo Booting BYOL Network Installer...
dhcp
kernel http://netboot.byol.org/boot/vmlinuz-byol ip=dhcp netboot=http://netboot.byol.org/byol/rootfs.squashfs quiet
initrd http://netboot.byol.org/boot/initramfs-byol.img
bootInside the initramfs, if the kernel command line contains netboot=http://..., the /init script invokes curl or busybox wget to download rootfs.squashfs directly into a temporary tmpfs RAM disk before mounting it via loopback.