
A PXE boot server written in Go, aiming to make network installations of Linux distributions simple.
(Note: this project is under construction, and does not yet have any releases)
Pixie aims to provide a lightweight, zero dependency (no system packages required), modern way to support installing Linux on bare metal and virtual machines via UEFI network (PXE) boot.
The main motivation behind this project is to ease the complexity and manual maintenance around this task. Existing solutions for network booting often require many manual steps, such as acquiring and extracting Linux ISOs (and updating them for new OS releases), setting up a TFTP boot directory, installing/running grub-mknetdir
, setting up an HTTP(S) server with the installation tree and kickstart files, etc.
In contrast, Pixie requires no external packages, and asks users only to write a simple declarative configuration file and point a DHCP server at its address. Pixie will handle:
- Generating UEFI bootloaders with GRUB
- Creating and serving necessary files for boot and installation over TFTP/HTTP
- Fetching and extracting Linux ISOs for configured OSes
- Optionally, automatically upgrading OS versions to new minor releases (e.g. Rocky 9.1 -> Rocky 9.4)
Key:
✅ Supported
🚧 Work in progress
⏳ Planned
❌ Unsupported
Feature | Status |
---|---|
Boot | |
UEFI: x86_64 | ✅ |
UEFI: ARM64 | 🚧 |
UEFI: i386 | ⏳ |
UEFI: other architectures | ❌ |
BIOS | ❌ |
Bootloader: GRUB | ✅ |
Bootloader: OCI image | ⏳ |
Bootloader: local UEFI file | ⏳ |
Services | |
TFTP server | 🚧 |
HTTP server | ⏳ |
Bootable ISO creation | 🚧 |
Operating systems | |
Ubuntu | ⏳ |
Debian | ⏳ |
Rocky Linux | ⏳ |
User-provided Linux ISO | ⏳ |
Non-Linux OS | ❌ |
Deployment | |
`go install` | ✅ |
Helm chart | ⏳ |
OS package | ⏳ |