Hysen Labs
Open-source project
rgl/pxe-vagrant avatar
rgl

pxe-vagrant

a Preboot Execution Environment (PXE) gateway

50 stars7 forksShellLicense varies
01
DEEP OPEN-SOURCE ANALYSIS

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.

02
DEEP OPEN-SOURCE ANALYSIS

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.

03
DEEP OPEN-SOURCE ANALYSIS

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.

04
DEEP OPEN-SOURCE ANALYSIS

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.

05
DEEP OPEN-SOURCE ANALYSIS

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.

06
DEEP OPEN-SOURCE ANALYSIS

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.

08
DEEP OPEN-SOURCE ANALYSIS

Official sources

09
Community notes

Community notes