bootstrap: add stage0 image reuse for guix and simplify guix handoff flow

- add --stage0-image in rootfs.py for qemu to boot an existing kernel-bootstrap image
- when --stage0-image is combined with --build-guix-also, update BUILD_GUIX_ALSO in image config and sync /steps-guix into the image
- require stage0 /init to contain guix handoff marker instead of patching /init implicitly
- add run_steps_guix_if_requested() to make_bootable-generated /init so rebooted stage0 images can enter steps-guix directly
- run /steps-guix/0.sh with bash in after.sh
- make script-generator start mode convention-based: /steps stays kaem-first, alternate roots (e.g. /steps-guix) start in bash
- remove redundant explicit /steps config-root argument from seed/preseeded/reconfigure script-generator calls
This commit is contained in:
vxtls 2026-02-18 14:35:17 -05:00
parent 21ddab36c3
commit 6fcb8f4d4a
15 changed files with 1010 additions and 22 deletions

View file

@ -4,5 +4,5 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
/script-generator /steps/manifest /steps
/script-generator /steps/manifest
/usr/bin/kaem --file /preseed-jump.kaem

View file

@ -568,8 +568,11 @@ void generate(Directive *directives) {
int counter = 0;
/* Initially, we use kaem, not bash. */
int bash_build = 0;
/*
* Default /steps manifests start in kaem.
* Alternative step roots (for example /steps-guix) start in bash.
*/
int bash_build = (strcmp(steps_root, "/steps") == 0) ? 0 : 2;
FILE *out = start_script(counter, bash_build);
counter += 1;

View file

@ -80,6 +80,6 @@ if match x${UPDATE_CHECKSUMS} xTrue; then
else
sha256sum -c script-generator.${ARCH}.checksums
fi
./script-generator /steps/manifest /steps
./script-generator /steps/manifest
kaem --file /steps/0.sh