Buildroot is the tool that we use to build the kernel, kernel modules, user tools, and root file system for our Linux RT machines.
The name we give to the artifacts that buildroot generates is "buildroot". So, we talk about versions of buildroot as if they are releases of a Linux distribution like Red Hat or Ubuntu. But they are unrelated to any distribution - they are just buildroot artifacts.
The machines and the buildroot running on these machines are critical to the experiment infrastructure at SLAC. Experiments have very narrow timing requirements. This is why we use buildroot. Buildroot allows us to create a minimal kernel and minimal user tools. So that for example the kernel is not needlessly interrupted to check for a system update when it should be gathering data for the experiment.
Buildroot also allows user to easily apply patches to the kernel. We apply the Preempt RT (real time) kernel patch. This patch makes modifications to the kernel such that kernel interruptions are time-bounded.
You might want to create a new version of buildroot if you've found a bug in the current version, or if a new feature is needed. As I write this document, we have discovered three issues with the current buildroot that must be fixed.
There are two locations in AFS in which we keep our buildroot releases.
You can create directories under the "boot" directory. You'll see that there are various directory name formats. Please use a format like this:
For example:
The example name indicates it is the second release of buildroot (the artifacts) based off the 2019.08 version of buildroot (the tool). Note that it does not indicate when you built this version. You may have built it today but you based it off a version of buildroot from 2019 (or whenever).
The "ipxe" directory under "boot" contains file for every machine that boots buildroot. The filename indicates the machine name. In that file you will find a line like this:
You can modify that line to point at whatever version of buildroot you would like.
There are many versions that get baked in to buildroot. There is a BusyBox version, a kernel version, a Preempt RT patch version, user tools versions, and of course a buildroot version.
The version of buildroot (the tool) you download and use defines the BusyBox and kernel versions. The kernel version defines the Preempt RT version. So, the buildroot (tool) version is the key to all the versions.