OpenWRT + netboot.xyz
12 Jul 2022There are numerous ways to get netboot.xyz running as a PXE server together with OpenWRT but this is the simplest (and only) way I got it to work 😊
Inspired by this forum post but I couldn’t get it to boot straight from http so instead I did the following.
1. Created a tfpt-directory in the root of OpenWRT
mkdir tftp
2. Downloaded netboot.xyz.kpxe and netboot.xyz.efi locally
cd /tftp
curl http://boot.netboot.xyz/ipxe/netboot.xyz.kpxe -o netboot.xyz.kpxe
curl http://boot.netboot.xyz/ipxe/netboot.xyz.efi -o netboot.xyz.efi
3. Modified /etc/dnsmasq.conf to act as TFTP server
nano /etc/dnsmasq.conf
Add this block to the end of the file.
####################################
# TFTP Server custom configuration #
####################################
enable-tftp
tftp-root=/tftp
dhcp-boot=netboot.xyz.efi
/etc/init.d/dnsmasq restart
(Couldn’t get the BIOS/EFI identification to work so I manually switched between netboot.xyz.kpxe and netboot.xyz.efi)
4. Finally a crucial but hard to find configuration change for OpenWRT
Disable the LAN interface to announce itself as a Local IPv6 DNS server
which in turn somehow conflicted with the iPXE DNS lookup (even though booted in IPv4 mode).
Available through the OpenWRT interface. Network -> Interfaces, LAN -> Edit, DHCP Server -> IPv6 Settings. Untick this box if ticked.
Identified through this thread.
Done
Good luck!