2026-10-03 15:01:37 +00:00
2026-10-03 15:01:37 +00:00

Documentation and information relating to my PXE boot server

Brief Infrastructure Overview

Hosted on a headless Debian 13 VM

dnsmasq used for TFTP, Nginx for HTTP and GRUB serving as the bootloader

DHCP options handled via my already existing OpenWrt router

Kernel, initramfs and other required files exist in a dedicated storage directory/disk and are exposed to Nginx via symbolic links

High Level Architecture Overivew

Client (bare-metal or VM) configured to network boot turns on
                ⇣
DHCP request broadcast
                ⇣
OpenWrt DHCP server responds, assigning an IP and providing PXE options in the response
                ⇣
Client downloads the GRUB bootloader, its theme and configuration files via TFTP
                ⇣
Once the client is within GRUB you can select the desired environment to boot into
                ⇣
Kernel, initramfs and other required files are loaded over HTTP via Nginx
                ⇣
If needed, additional files are now downloaded from the Internet
                ⇣
Selected OS / installer or environment is now loaded

Features

  • Lightweight, with less than 2GB of disk space and under 200MB of RAM used for the VM with fresh headless Debian 13 install

  • UEFI and BIOS support

  • Custom GRUB theme for UEFI based systems

  • Zero DHCP dependency on server, will work in an existing environment

  • TFTP for bootstrapping, HTTP for payloads

  • Easy to add additional operating systems as additional menu entries and HTTP payloads

  • Currently supports booting into AlmaLinux, Arch Linux, Clonezilla, Debian, Memtest and SystemRescue all from the same menu

  • Installer files reside in dedicated storage directory which Nginx reads via symbolic links, allowing storage for payloads to be easily expanded

  • Default option of booting into the already existing local disk allowing clients to remain configured for network boot

Extremely useful documentation

https://manpages.debian.org/wheezy/dnsmasq-base/dnsmasq.8.en.html

https://www.rfc-editor.org/rfc/rfc4578.html

https://openwrt.org/docs/guide-user/base-system/dhcp

https://clonezilla.org/livepxe.php

https://www.system-rescue.org/manual/PXE_network_booting/

https://www.gnu.org/software/grub/manual/grub/html_node/Network.html

https://www.gnu.org/software/grub/manual/grub/html_node/Theme-file-format.html

S
Description
No description provided
Readme
1.4 MiB