not-os
stage-1
$ nix-build -A stage-1
/nix/store/f9fa893njgjvnxbgj8zp44pcnk9smjs5-stage-1
stage-1 is a script defined as
config.system.build.bootStage1
. It is the content of the
initrd.
TODO Describe stage-1.
It prepares the Nix store (at /mnt/nix/store
, which will
be at /nix/store
once switch_root
is
performed).
The final action of stage-1 is to call switch_root
(using /mnt
as the new root) to execute stage-2.
In vpsadminos, the stage-1 exists as a script,
stage-1-init.sh
(just like stage-2-init.sh
).
It contains code testing a possible nolive
flag, and thus
the two branches of the if
statement.
In not-os, the flag is defined at build time so the generated script
contains only the desired code. Similarly, the overlay
kernel module is loaded only if necessay. The resulting script is less
flexible but I like the idea of generating exactly what we decide.