We do always come along with more or less the same problems if we set up new server systems in our lab - how to attach them, how to get an OS on the hard drive. Currently, we do have some OCP server systems here which run Intel Xeon-SP SoC's and have 200 Gbit NIC shared among four slots - that's some datacenter hardware!

However - we do stumble across the problem "How to get a proper OS on it" on a regular basis. Some of these servers do not have external USB ports whatsoever, such that it is impossible to "just plug in a USB Stick and install Linux". Normally we either use one of our images from https://blobs.9esec.io - or try to PXE Boot. PXE Boot needs to be set up properly in the lab, such that the PXE server is broadcasted in the DHCP Response. The server can pick it up, and boots from the network.

Another approach would be to use iPXE. There is a nice project called netboot.xyz - you should definitely check it out - which provides links to call kinds of Linux distro's. They do provide various options to boot these distros, like an .efi app, ipxe driver, and so forth. But lately, all of these options that we had did not really hit our requirements... so we decided to bring netboot.xyz to LinuxBoot/u-root.


First Steps

First, we had to examine what needs to be done. Our very native approach was to dig through the .ipxe files netboot does provide, to see if we can write some kind of grabber or parser which collects the links to the distro's and made them accessible for us - that did not turn out as we wanted it to be. The .ipxe files do include so many other .ipxe files, which then include more .ipxe files... you know where this is going - so we started over again

Kudos to Github

... and found the Github repository from netboot.xyz (github.com/netbootxyz). They do provide all the Dockerfiles which are needed to rebuild the distro's, and also something which is called "endpoints.yaml". This .yaml file basically contains all links to the individual files needed to boot a repo: Linux kernel, initramfs, and rootfs. That was our first starting point - and a couple of hours later we can already give you that sneak peek:


So currently only a handful of distros are working - and everything is quite hacky. Once we find more time to work on this we will upstream it, such that you can work on it if you like - or at least check it out. You can find the current Work in Progress code here (https://github.com/u-root/u-root/tree/feature/netbootxyz).

Stay tuned for more updates on this - as the integration was not as easy as we thought in the first place.

Photo by Uriel SC on Unsplash