74 lines
2.7 KiB
Markdown
74 lines
2.7 KiB
Markdown
# 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
|
|
|
|
- Naming comes from The Legend of Zelda Ocarina of Time, as this is PXE (Pixie) boot, and Navi is your trusty fairy
|
|
|
|
## Images
|
|
|
|

|
|

|
|

|
|
|
|
## 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 |