Repository navigation
bootc: mount the deployment with bootc when it has install mount - #7
cgwalters-bot wants to merge 6 commits into
Conversation
bootc-image-builder prints manifest warnings instead of failing, but
they were written without a prefix or trailing newline, so the next
progress message ran into the warning text ("...not supported: fooDone
generating manifest") and it was easy to miss. Print each warning as a
"WARNING:" line like the other warnings of the CLI. This also changes
the output of "image-builder manifest/build --ignore-warnings", which
uses the same code.
Generated-by: AI
For a bootc image with a unified kernel, the raw_bootc pipeline skips every customization stage after "bootc install" and drops the kernel arguments, since the command line is baked into the UKI. Users, files, kargs and extra mountpoints given in the blueprint were therefore silently ignored, and the build succeeded with an image that lacks them (e.g. no login user). Report them the same way as other unsupported blueprint options: as a manifest warning, which the image-builder CLI turns into an error unless --ignore-warnings is given and bootc-image-builder prints. The container's own partition table and the default kargs from our image definitions are not user input and are not reported. Supporting the /etc and /var customizations is tracked in osbuild#2560. Generated-by: AI
Per AGENTS.md, for the human author to remove once reviewed. Generated-by: AI
Mounts the deployment of a bootc installation, ostree or composefs, with `bootc install mount` from the build root. Generated-by: AI
Probe for `bootc install mount` (bootc-dev/bootc#2483) in the target container and in a separate build container. Generated-by: AI
When the build root's bootc has `install mount`, the customization stages use the org.osbuild.bootc.deployment mount, for either storage backend. Otherwise they use org.osbuild.ostree.deployment as before; a bootc without `install mount` also predates the detection of composefs from the container (bootc-dev/bootc#2500), so it installs non-UKI images with ostree. With a unified kernel and `install mount`, users, groups, directories, files and the subscription are applied instead of refused. Kernel arguments, ignition, the bootloader configuration and extra mountpoints stay refused for UKI images, and the fstab, ignition and grub2.d stages aren't generated for them. The PXE tar image keeps using the ostree deployment for its live root. Generated-by: AI
| @@ -1,3 +1,5 @@ | |||
| > [!IMPORTANT] | |||
| > Remove this line to confirm you've reviewed this PR before submitting. | |||
There was a problem hiding this comment.
Interesting. osbuild is trying to do with this what bootc is doing with https://github.com/bootc-dev/bootc/blob/main/AGENTS.md#signed-off-by
There's advantages/disadvantages to both...but the thing I like is that it's straightforward to gate on the DCO in CI and it basically exists for a related purpose
There was a problem hiding this comment.
IOW I did review this and you can review the marker befor epushing
|
Not promoted: osbuild/image-builder is human-text, so the title, body and commit messages sent there must be yours. Next: edit this PR's title and body (dropping the Generated-by: https://github.com/cgwalters/#llms |
|
Upstream LLM rules (advisory): osbuild/image-builder's contribution policy record says human-text: code by the bot is fine, but the PR title and body, commit messages and comments must be cgwalters' own, except an answer on a thread where cgwalters summoned the bot. AI trailer: default (Generated-by: AI); nothing written, and main already has three merged commits by cgwalters with "Generated-by: AI" and one with "Co-authored-by: Cursor". The text sent there must be yours; the next comment says how. What its policy sources sayRecord: Generated-by: https://github.com/cgwalters/#llms |
|
Not promoted: osbuild/image-builder's contribution policy record is stale; dispatch a policy check. Next: nothing for you to do: the bot rechecks the policy, and a later sweep promotes this PR on the same approval if the policy allows it. Generated-by: https://github.com/cgwalters/#llms |
|
Upstream LLM rules (advisory): osbuild/image-builder's contribution policy record says human-text: code by the bot is fine, but the PR title and body, commit messages and comments must be cgwalters' own, except an answer on a thread where cgwalters summoned the bot. AI trailer: default (Generated-by: AI); nothing written, and main already has three merged commits by cgwalters with "Generated-by: AI" and one with "Co-authored-by: Cursor". The text sent there must be yours; the next comment says how. What its policy sources sayRecord: Generated-by: https://github.com/cgwalters/#llms |
|
Upstream LLM rules (advisory): osbuild/image-builder's contribution policy record says bot-ok: the bot may write the code and the text, with the AI trailer. AI trailer: default (Generated-by: AI); nothing written, and main already has three merged commits by cgwalters with "Generated-by: AI" and one with "Co-authored-by: Cursor". Nothing here holds this PR back: the bot promotes it now. What its policy sources sayRecord: Generated-by: https://github.com/cgwalters/#llms |
Upstream main moved and this no longer rebases cleanly; needs another look after the conflicts are resolved.
|
Not promoted: |
|
Not promoted: Next: if that is yours to fix, do so and comment Generated-by: https://github.com/cgwalters/#llms |
When the build root's bootc has
bootc install mount(bootc-dev/bootc#2483), the customization stages afterbootc installmount the deployment with osbuild'sorg.osbuild.bootc.deploymentmount, for either storage backend; otherwise they keeporg.osbuild.ostree.deployment. image-builder no longer needs to know the storage backend of non-UKI images: a bootc withoutinstall mountalso predates choosing composefs from the container (bootc-dev/bootc#2500), so it installs those with ostree. The support is probed withbootc install mount --help(exit 2, clap's unknown-command error, means no), in the target container and in a separate build container, whose bootc is the one that runs.install mount: users, groups, directories, files and the subscription are applied; kernel arguments, ignition, the bootloader configuration and extra mountpoints stay refused (warning). Withoutinstall mountthe warning now says that /etc and /var customizations need it.pxe-tar-xzkeepsorg.osbuild.ostree.deployment, since its live root comes from the ostree deployment.install mountdon't change (tools/gen-manifest-checksums.sh: no changes on any commit).Supersedes #4 and #6; stacked on #2 (its two commits come first). Needs cgwalters-forge/osbuild#1 for the mount. The first commit adds the README.md review marker that the repository's AGENTS.md requires.
Testing, on a 16-core RHEL 10 devspace (cgwalters-devspace-37053693285; logs), disks built as root by this branch's container with osbuild from cgwalters-forge/osbuild#1, with a blueprint adding kargs, a group, users with SSH keys and files, booted with qemu-kvm under UEFI:
BOOTC_variant=composefson fedora-bootc:44): all post-install stages useorg.osbuild.bootc.deployment; boots composefs with all customizations and the karg.org.osbuild.bootc.deployment; boots ostree with all customizations.quay.io/fedora/fedora-bootc:44(bootc 1.16.13, noinstall mount):org.osbuild.ostree.deployment; boots with all customizations.pxe-tar-xzfrom the bootc main ostree image: builds withorg.osbuild.ostree.deployment, manifest identical to upstream main's. It fails to boot inostree-prepare-root(composefs mount I/O error) with upstream main's image-builder too.go test -race ./...in fedora:43 as the CI job: the same 29cmd/image-builderfailures as upstream main;go vet,gofmtclean;tools/gen-manifest-checksums.sh: no changes.Generated-by: https://github.com/cgwalters/#llms
Review draft in cgwalters-forge, not upstream yet. This section is removed when the PR is opened upstream.
osbuild/image-builder, basemainPVTI_lADOE9oHIs4BlJLczg9kEmITo review:
/promoteon a line of its own, to open it upstream, ready for review. Either covers only the commits pushed so far.Signed-off-by: Colin Walters <walters@verbum.org>to the commits lacking it (the bot's and yours; anyone else's only if you ask), with you as committer./draftline (in the same comment or before) to open it upstream as a draft (/readyundoes that).Bot run: session 929c7a64, agents ad8a2233 +1 · claude-opus-5-5 37.5M in (93% cached) / 98k out · ~$21.68 inference + ~$3.73 compute (est., list prices) · 1h 46m wall · 23.7 core-h, Actions run 37053693285