Files
Navi-Network-boot/README.md
T
2026-10-03 21:06:30 +00:00

76 lines
2.8 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 serves as the bootloader
DHCP options handled via my already existing OpenWrt router
Kernel, initramfs and other required files exist in a dedicated storage directory/mounted 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 from Navi
⇣
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
- Works across VLANs with appropriate firewall rules, zones and inter-VLAN routing configured
- TFTP for bootstrapping, HTTP for payloads
- Easy to add additional operating systems as additional GRUB 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 new payloads to be easily expanded
- Default option of booting into the already existing local disk allows 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
![picture](https://git.tobiastime.xyz/Tobias/Navi-Network-boot/raw/branch/main/images/1.jpg)
![picture](https://git.tobiastime.xyz/Tobias/Navi-Network-boot/raw/branch/main/images/2.jpg)
![picture](https://git.tobiastime.xyz/Tobias/Navi-Network-boot/raw/branch/main/images/3.jpg)
## 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