pixiecore
Network boot operating systems
TLDR
Start a PXE boot server which provides a netboot.xyz boot image
Start a new PXE boot server which provides an Ubuntu boot image
List all available boot images for quick mode
SYNOPSIS
pixiecore [OPTIONS]
PARAMETERS
-dhcp-addr address
Specifies the network address and port for the DHCP server to listen on. Typically :67 for all interfaces, or a specific IP like 192.168.1.1:67.
-http-addr address
Sets the network address and port for the integrated HTTP server. Common values are :80 or :8080.
-firmware path
Designates a directory containing essential firmware files (e.g., pxelinux.0, ipxe.efi) that pixiecore will serve to clients based on their architecture and boot type.
-kernel path
The absolute or relative path to the Linux kernel image (e.g., vmlinuz) that clients will download and boot.
-initrd path
The absolute or relative path to the initial ramdisk image (e.g., initrd.img) required by the specified kernel.
-cmdline string
Appends additional arguments to the kernel command line during the boot process (e.g., console=ttyS0, ip=dhcp, root=/dev/sda1).
-ipxe-script path
Provides a path to a custom iPXE script to be served instead of the default boot sequence, offering advanced boot customization.
-extra-file path
Adds an additional file to be served over HTTP. This option can be specified multiple times to serve various supporting files.
-debug
Enables verbose debugging output, which is useful for diagnosing issues during setup and operation.
DESCRIPTION
pixiecore is a streamlined network boot server designed to simplify bare-metal provisioning. Unlike traditional PXE setups that often require multiple services like DHCP, TFTP, and HTTP to be configured separately, pixiecore integrates these functionalities into a single, cohesive application. Written in Go, it aims for ease of deployment and management. It supports a wide range of boot firmware, including traditional BIOS PXE, UEFI, and iPXE, making it highly versatile for modern data centers and home labs.
It can serve various boot artifacts such as Linux kernels, initial ramdisks (initrds), and custom iPXE scripts, facilitating automated operating system installations or ephemeral boot environments. By providing a unified solution, pixiecore reduces the complexity and potential for misconfiguration often associated with network booting, making it an excellent tool for continuous integration/deployment pipelines for hardware.
CAVEATS
Running pixiecore requires sufficient privileges (typically root or capabilities to bind privileged ports) to operate its DHCP and TFTP services (ports 67 and 69, respectively). If configured to serve HTTP on port 80, it also requires privileges for that port.
As it includes a DHCP server, pixiecore should be the only DHCP server active on its broadcast domain, or carefully configured to avoid conflicts, as multiple DHCP servers can lead to network instability. Appropriate firewall rules must be in place to allow inbound UDP traffic on ports 67 (DHCP) and 69 (TFTP), and TCP/UDP traffic on port 80 (HTTP) if used.
ARCHITECTURE AND OPERATION
pixiecore functions as an all-in-one network boot solution. When a client initiates a PXE boot, pixiecore's integrated DHCP server responds with the necessary boot information. It then serves the initial bootloader (e.g., pxelinux.0, ipxe.efi) via TFTP, and subsequent, larger files like kernels and initrds via HTTP for improved performance. This streamlined architecture avoids the complexities of configuring and troubleshooting separate DHCP, TFTP, and HTTP daemons, providing a more robust and manageable PXE environment. It intelligently handles different client architectures (BIOS/UEFI) and boot types to ensure compatibility.
COMMON USAGE PATTERNS
pixiecore is frequently employed in automated server provisioning workflows, allowing organizations to rapidly deploy and configure bare-metal hardware. It's ideal for scenarios involving continuous integration/deployment (CI/CD) pipelines for physical servers, where machines need to be booted into an installer, a testing environment, or a minimal OS for initial setup. Its ability to serve custom iPXE scripts enables dynamic and highly flexible boot configurations, supporting diverse hardware and software requirements within a single PXE server instance.
HISTORY
pixiecore was developed by Dan Anderson with the primary goal of simplifying the notoriously complex PXE booting process. It emerged from a need for a modern, single-binary solution that could integrate multiple network services (DHCP, TFTP, HTTP) typically required for network booting. Written in Go, it leverages the language's strengths in concurrency and cross-platform compilation, making it well-suited for automated bare-metal provisioning in cloud-native and datacenter environments. Its development focused on providing an opinionated, easy-to-use tool for efficient infrastructure management, contrasting with the often fragmented and cumbersome traditional PXE setups.
SEE ALSO
dnsmasq(8): A lightweight DHCP, DNS, and TFTP server often used for network booting., tftpd-hpa(8): A common standalone TFTP server for serving boot files., dhcpd(8): The ISC DHCP server, a robust and full-featured DHCP solution., ipxe: An open-source network boot firmware that expands on traditional PXE capabilities., pxelinux: A component of the SYSLINUX project, widely used for PXE booting Linux systems.