pxe-vagrant
a Preboot Execution Environment (PXE) gateway
pxe-vagrant: booting live systems over the network
A Vagrant-based PXE gateway that launches Debian Live, LinuxKit, and Windows PE clients, assuming each boot image was already built in a sibling repository.
The gateway
pxe-vagrant is a Preboot Execution Environment gateway, and its usage starts by running a create script that builds the empty environment the PXE client machines use as a base box. The Vagrant setup provides both the gateway environment and the client machines.
The three clients
Three clients can be launched with vagrant up, each assuming a boot image built elsewhere. The debian live client expects a hybrid ISO from the debian-live-builder-vagrant repository, linuxkit expects a kernel and initrd from linuxkit-vagrant, and winpe expects a Windows PE ISO from windows-pe-vagrant. The winpe machine is not reachable over SSH, and the README notes the point is simply to watch it PXE boot.
Windows install from SMB
The winpe client has one extra trick: it can install Windows from a network share into the local disk, following the steps at the end of the windows-server-2022 startup script. So the PXE gateway covers a full install scenario, not just a live boot.
How a PXE boot actually goes
The README walks through the boot sequence. The PC broadcasts a DHCP request, the DHCP server answers with the TFTP server address 10.10.10.2 in the next-server field and debian-live/lpxelinux.0 as the boot file. The PC pulls lpxelinux.0 over TFTP, which then downloads ldlinux.c32 and a configuration over HTTP, loads linux and initrd into memory, transfers control to linux, and initrd finally downloads and mounts the root filesystem as filesystem.squashfs.
Watching it happen
There is a command to run on the Linux host before launching the debian live VM that shows all of this in real time. For anyone learning PXE, that makes the DHCP, TFTP, and HTTP dance visible instead of a black box.
Community notes