- Notifications
You must be signed in to change notification settings - Fork5
PXE server with embedded TFTP, HTTP and iPXE ROMs
License
NotificationsYou must be signed in to change notification settings
p3lim/pixie
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
TFTP and HTTP server specifically designed to serveiPXE.
pixie comes embedded with the following ROMs provided by the iPXE project:
undionly.kpxe
- for legacy (BIOS) machinessnponly64.efi
- for 64-bit EFI machinessnponly32.efi
- for 32-bit EFI machinesipxe64.efi
- for 64-bit EFI machines (contains embedded networking stack)ipxe32.efi
- for 32-bit EFI machines (contains embedded networking stack)snponly-arm64.efi
- for 64-bit ARM machinessnponly-arm32.efi
- for 32-bit ARM machines
It comes with an embeddediPXE script, which is used to chainload into per-machine iPXE scripts or access an iPXE shell.
It has no dependencies, everything is in one binary.
- Run the
pixie
binary using default ports, specifying path to store iPXE scripts:
pixie -d /srv/ipxe
See
--help
for more options
- Define iPXE script for a machine with the MAC-address
00:11:22:33:44:55
:
cat >/srv/ipxe/00-11-22-33-44-55.ipxe <<EOF#!ipxeinitrd http://dl.rockylinux.org/pub/rocky/8/BaseOS/x86_64/os/images/pxeboot/initrd.imgkernel http://dl.rockylinux.org/pub/rocky/8/BaseOS/x86_64/os/images/pxeboot/vmlinuz initrd=initrd.magicbootEOF
- Configure pixie as the next-server on the DHCP server:
Example forISC dhcpd:
option client-architecture code 93 = unsiged integer 16;if exists user-class and option user-class = "iPXE" {filename "chain.ipxe";} elsif option client-architecture = 00:00 {filename "undionly.kpxe";} else {filename "snponly.efi";}next-server 192.168.0.100;
Example fordnsmasq:
dhcp-match=set:ipxe,175dhcp-vendorclass=BIOS,PXEClient:Arch:00000dhcp-boot=tag:!ipxe,tag:BIOS,undionly.kpxe,pixie,192.168.0.100dhcp-boot=tag:!ipxe,tag:!BIOS,snponly.efi,pixie,192.168.0.100dhcp-boot=tag:ipxe,chain.ipxe,pixie,192.168.0.100
In both these examples
pixie
runs on192.168.0.100
When a machine with the MAC-address of00:11:22:33:44:55
now attempts to PXE boot, the following will happen:
- The machine queries DHCP (standard procedure from PXE)
- The DHCP server will instruct the machine to download a new ROM from pixie (
next-server
) using TFTP- if the machine is running BIOS it will ask for
undionly.kpxe
- if the machine is running EFI it will ask for
snponly.efi
- if the machine is running BIOS it will ask for
- The machine downloads and runs the iPXE ROM from pixie
- The machine queries DHCP again (this time from iPXE)
- The DHCP server will instruct the machine to download the
chain.ipxe
file from pixie using TFTP - The machine downloads and runs the
chain.ipxe
script- the screenshot above shows this stage
- Unless manually intervened, the machine chainloads into its iPXE script from pixie using HTTP
- The machine boots the operating system
About
PXE server with embedded TFTP, HTTP and iPXE ROMs