Netboot iPxe Diskless
Time to get rid of the SD card to perform a completely diskless boot. The way this is achieved, is by embedding the ipxe script inside the boot image of Rpi. Once the image is built, will be pulled from the http server and Rpi will load ipxe, which will in turn retrieve the final OS image we want.
In our case, we want to build a k3s cluster, so we will build an image for the masters, and one for workers. The only differnces between them, will be the ignition config URL, giving us the possibility to control what is loaded, Future updates will be done through the igniton config only, leaving this setup if done properly, a one time struggle.
git clone https://github.com/valtzu/pixpe
cd pixpe
docker-compose run --rm build make EMBED=/opt/build/script.ipxe
We need to sign the resulting boot.img with our key to validate against during http boot :
Push it to the webserver used to deliver the ipxe scritps and igition configs. When the boot process wiill start, it will ask for the boot.img and boot.sig which holds the embedded ipxe. There is no need now for any additional storage card to hold the ipxe script !