Overview

A PXE environment turns operating system deployment into a repeatable service instead of a manual process. The exact implementation varies, but the core pattern stays the same.

Core Components

Component Role
dnsmasq DHCP and TFTP
iPXE chainloaded boot environment
HTTP server kernel, initrd, repo, and kickstart delivery
kickstart files unattended install logic

Example Flow

PXE client -> DHCP -> dnsmasq
PXE client -> TFTP -> iPXE binary
iPXE -> HTTP -> menu, kernel, initrd, kickstart
installer -> repo -> package content

Example dnsmasq Snippet

dhcp-range=192.168.10.100,192.168.10.200,12h
enable-tftp
tftp-root=/var/lib/tftpboot

dhcp-userclass=set:ipxe,iPXE
dhcp-boot=tag:ipxe,http://192.168.10.10/boot/menu.ipxe

Example iPXE Menu Entry

#!ipxe
kernel http://192.168.10.10/images/rocky9/vmlinuz
initrd http://192.168.10.10/images/rocky9/initrd.img
imgargs vmlinuz inst.repo=http://192.168.10.10/repo/rocky9 inst.ks=http://192.168.10.10/kickstart/rocky9-server.ks ip=dhcp
boot

Example kickstart Elements

lang en_US.UTF-8
keyboard us
network --bootproto=dhcp --device=link --activate
timezone America/New_York --utc
reboot

Practical Guidance

  • standardize naming and directory structure before scaling the repo
  • keep kickstart secrets out of world-readable web paths
  • validate the repo and boot paths every time content changes
  • pair PXE with configuration management so installs do not stop at day-0