Easy PXE tool like Ventoy

So I’ve been playing around with PXE. Super simple to setup, and I’m very happy with it.

Though one thing has been really annoying: Let’s say I want to add a syslinux-based boot option. I have to unzip the image zip, copy out the syslinux config, prefix all the kernel, initrd, and splash paths, remove all instances of ip=, and add my fetch=tftp://.... This is fineand I could script it for each image I have to make updating them easier (lots of find replace), but it is still kind of a pain.

There are tons of tools to manipulate syslinux already for disk-based media: Ventoy, Rufus, Easy2Boot, YUMI, reFIND, etc. So does something exist like this for PXE? I would love to be able to drop my ISO or ZIP in a folder and run a script and it just figures out how to add it to the PXE menu and preserves all of its included boot menu options.

Currently my server is just DHCP on pfSense + TFTP on TrueNAS, but if something is easier to manage images on then I will gladly switch.

There’s folks at netboot.xyz who are compiling a giant list of netbootable stuff that just fetches images off the Internet iirc.

What kind of images are you dealing with?

Might be missing something, but why not just use iPXE, your config isn’t in the image, all it does is point to a url where to get the config.

I’m booting multiple systems, even dynamically (based on MAC).

The way I’ve done it is having a boot.ipxe file on a webserver that rewrites to boot.php (wanted to keep the original ipxe extension for clarity) and everything starting that is fully dynamic.

Booting several linux raspberry pi’s from different NFS locations based on MAC address and for “unknown” devices I’m providing a menu of what to boot/run ranging for full desktop environments to servers and tools.

It’s fairly easy to set up and get running.

The setup for myself is pfSense and a synology nas for the tftp & nfs mounts.
The webserver doesn’t run on the NAS but on a separate VM (kubernetes cluster) but can just as easily run from your NAS.

1 Like

I just stumbled upon this and it is wonderful! I am chain booting to it beautifully now. This definitely solves all of the installers and tools. Though not as much help for OS images to just boot into directly.

My issue with flexibility is less so with the TFTP/DHCP thing (I got the individual host/UUID/MAC stuff to work easily) and more with being able to take a random syslinux-based ISO or ZIP and make it so “it just works.” Most of my bootables are Debian-based which theorertically i can treat all the same, but it would still be a pain to keep up with copying and modifying the syslinux config every time I update Debian. It looks like iPXE lets you use variables to simplify things, but I would still have to do some manual work to add all the menu options and modify them to work with PXE/iPXE instead of disk.

It looks like netboot.xyz has a custom script option if you self-host so I am going to look into that. They seem to separate each bootable by type, so I could maybe dump my Debian stuff into there and get a finished boot label option.

ipxe/pxelinux can fetch things off of http/https, as you’ve seen. You can probably put together a small webpage in Python/flask (or PHP, or Go, whether you’re most familiar with) to generate the configs for you based off of what ISOs you dropped into a directory.

Take a look at the nextboot.xyz repo and the configs it generates. It’s just a bunch of plaintext files containing IPXE directives. You can easily modify it to load your custom ISOs.