The bootstrap file

The first section of the bootfile (starting with [virtual=armle-v7,srec]) specifies that a virtual address system is being built. The CPU type appears next; "armle-v7" indicates a little-endian ARM processor. Then after the comma comes the name of the bootfile (srec).

The rest of the line specifies an inline file (as indicated by the open brace) named ".bootstrap", which consists of the following:

startup-abc123
PATH=/proc/boot procnto -vv
Note: If you set the value of PATH in the bootstrap file, procnto sets the _CS_PATH configuration string. Similarily, if you set LD_LIBRARY_PATH, procnto sets the _CS_LIBPATH configuration string. It doesn't pass these environment variables on to the script, but you can set environment variables in the script itself.

You can bind in optional modules to procnto by using the [module=...] attribute. For example, to bind in the adaptive partitioning scheduler, change the procnto line to this:

[module=aps] PATH=/proc/boot procnto -vv
Note:

The actual name of the bootstrap file is irrelevant. However, nowhere else in the buildfile did we specify the bootstrap or script files—they're included automatically when specified by a [virtual] or [physical] attribute.

The "virtual" attribute (and its sibling the "physical" attribute) specifies the target processor (in our example, the armle-v7 part) and the bootfile (the srec part), a very small amount of code between the IPL and startup programs. The target processor is put into the environment variable $PROCESSOR and is used during pathname expansion. You can omit the target processor specification, in which case it defaults to the same as the host processor. For example:

[virtual=bios] .bootstrap = {
...

would assume an ARM target if you're on an ARM host system.

Both examples find a file called $PROCESSOR/sys/bios.boot (the .boot part is added automatically by mkifs), and process it for configuration information.