Basic netboot.xyz Setup

I’ve always wanted to get rid of my installer USBs! Ventoy is great and everyone should have a recovery stick available!

Installation

I Installed netboot.xyz on my TrueNAS box as a Kubernetes app/container. I created two new datasets, one for the configuration: netboot-xyz-config and I already had a dataset for ISOs: isos.

For Docker, it’s a very similar story; get the Compose file from their site and map the mounts.

DHCP Magic

This section is a little hard to write, as there are soo many ways you could have set up your home network’s DHCP Server. Whatever it is, it has to respond to specific iPXE requests, to net booting clients know where to pull boot images from.

PiHole (using dnsmasq)

I’m using PiHole(s) as my DNS and also DHCP Server(s). These run dnsmasq under the hood, and that is very simple to configure.

We will have to create a new configuration file in the dnsmasq directory; I named mine: /etc/dnsmasq.d/07-pxe.conf. There, we’ll store configurations for the different architectures, and where they need to pull their boot images from:

dhcp-match=set:bios,60,PXEClient:Arch:00000
dhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVER-IP
dhcp-match=set:efi32,60,PXEClient:Arch:00002
dhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVER-IP
dhcp-match=set:efi32-1,60,PXEClient:Arch:00006
dhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVER-IP
dhcp-match=set:efi64,60,PXEClient:Arch:00007
dhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVER-IP
dhcp-match=set:efi64-1,60,PXEClient:Arch:00008
dhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVER-IP
dhcp-match=set:efi64-2,60,PXEClient:Arch:00009
dhcp-boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVER-IP

⚠️ Newer PiHole versions have a setting that forbids loading of custom dnsmasq configurations in /etc/dnsmasq.d. Misconfiguring dnsmasq might break your PiHole!

Login to your PiHoles web interface and locate “all settings”. Under “Miscellaneous” enable the “misc.etc_dnsmasq_d” option. Saving your settings should automatically restart dnsmasq and also load your PXE configuration.

Network booting should be setup!

Netboot.xyz Configuration

Netboot.xyz comes with a working configuration, that is able to net boot most Linux, Maintenance and other utility images! There isn’t really anything you have to configure yourself for a great experience! ~but you totally can.

The default configuration pulls boot images only when a client wants to boot them. If you have a slow internet connection, you might want to pull your favorite tools and Linux’s to have them on demand, fast.

Testing

Depending on your Motherboard, PXE and Network booting might be disabled by default, or just not possible at all…

Look for settings mentioning “PXE” or “option boot ROM” (maybe?).

Also, make sure you have it setup as the first boot option, or its at least in the boot priority list, with no other bootable media connected!

Common Issues

While getting netboot.xyz setup, I encountered my fair share of issues.

PiHole DHCP Settings

I was overdue for a PiHole update, and only noticed the “misc.etc_dnsmasq_d” option after updating PiHole. It might be that previous versions would not load any custom configurations at all, even if countless sites and tutorials explicitly state where and how to modify the PiHole dnsmasq configuration.

TrueNAS and netboot.xyz share an IP

This won’t work as net booting requires TFTP and/or HTTP to pull Images from netboot.xyz’s TFTP or HTTP Server.

Set up your netboot.xyz on a new IP address, unused by other services.

roman's lab

Technology and Engineering Blog


netboot all the things

By Roman Hayn
14 July 2025

[~] ls
-r-x Homelab
-r-x linux