We recently worked on some patches to adopt netboot.xyz and integrate it into LinuxBoot - and it got merged now.
Netboot.xyz
So - what is netboot.xyz? From there website:
netboot.xyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool.
In our last blog article we already pointed out some development work and what motivated us - basically we need a reliable way to install operating systems on machines sitting either somewhere in a rack not accessible for us, or which do not have any external USB ports.
Our former way was to build a busybox image which downloads a disk image containing a minimal Linux operation system into the RAM. Once downloaded we would dd
the image on a hard drive - and off you go.
However that approach needed a lot of manual tooling and adjustment to the current platform we are working on - and netboot.xyz already has a process in place - so adopting this to u-root only seems logical. It's open-source, that's the idea right?
netboot.xyz Image Generation Process
netboot.xyz already has an image processing and generation process in place which we will use to download the images from u-root.
All the assets generated by the netboot.xyz build pipelines are accumulated in one .yaml file which can be found on Github. These endpoints.yaml
file does contain kernel, initrd and squashfs locations in the following manner:
ubuntu-19.10-live-kernel:
path: /ubuntu-core-19.10/releases/download/19.10-055f9330/
files:
- initrd
- vmlinuz
os: ubuntu
version: '19.10'
[...]
ubuntu-19.10-KDE-squash:
path: /ubuntu-squash/releases/download/9854741e-b243fefb/
files:
- filesystem.squashfs
os: ubuntu
version: '19.10'
flavor: KDE
kernel: ubuntu-19.10-live-kernel
This endpoints.yaml
file is used to build the u-root netboot.xyz menu:
Typing the number of the OS opens the submenu which let's you choose the version of the Operating System you want to boot.
Typing in e.g. 07
will boot Debian 10 Core
.
Be aware - only some major distrobutions have been tested and verified working - Everything in the Other
menu can be deemed has experimental and might not work properly.
netboot.xyz provides you a convinent way on how to boot into a live system on your machine. As we are working a lot with server machines where we do not have direct hardware access to, merging netboot.xyz into u-root gives us an easy way to install an operating system on a remote machine during development.
If you like to know more about netboot.xyz, check out their homepage. The corresponding code in u-root can be found here.
If you like to talk with us about firmware - feel free to contact us!