Skip to content

Add support for multiple composefs= digests#2248

Draft
cgwalters wants to merge 4 commits into
bootc-dev:mainfrom
cgwalters:adapt-composefs-rs-v1-erofs-2
Draft

Add support for multiple composefs= digests#2248
cgwalters wants to merge 4 commits into
bootc-dev:mainfrom
cgwalters:adapt-composefs-rs-v1-erofs-2

Conversation

@cgwalters

Copy link
Copy Markdown
Collaborator

This adapts bootc to build on top of the work in composefs/composefs-rs#297

A toplevel goal here is supporting both the v1 and v2 EROFS formats, which means we'll work with RHEL9 era systems.

Right now bootc container ukify still generates composefs= i.e. v2, but I'd like to change that to do both - it's a pretty cheap thing (the main cost is generating the fsverity digests).

The test asserted `prefix.len() > "bootc/".len()`, which trips bootc's
`disallowed_methods` clippy lint (str::len). This was masked while the
lib test target failed to compile; assert a non-empty version suffix
instead, which is clearer and lint-clean.

Assisted-by: OpenCode (Claude Opus 4.5)
Signed-off-by: Colin Walters <walters@verbum.org>
The `--bind-storage-ro` host container-storage passthrough relies on a
libvirt-managed virtiofsd, which cannot run in some environments such as
nested user namespaces or cloud/non-qemu setups. Plans that normally
request bind-storage previously had no way to opt out short of editing
plan metadata.

Add a `--skip-bind-storage` flag (and matching `BOOTC_skip_bind_storage`
env var) that forces those plans to run without the host
container-storage mount. Default behavior is unchanged: bind-storage is
still used wherever it is requested and supported. Plans that depend on a
locally built upgrade image reaching the VM via bind-storage will be
unable to perform the upgrade/switch step when this is set.

Assisted-by: OpenCode (Claude Opus 4.5)
Signed-off-by: Colin Walters <walters@verbum.org>
Assisted-by: OpenCode (Claude Sonnet 4)
Signed-off-by: Colin Walters <walters@verbum.org>
composefs-rs landed support for V1 EROFS, which we need
to enable composefs on RHEL9.

Make new installs produce both V1 and V2 EROFS images for committed
composefs images so a deployment can be booted via either the
composefs= (V2) or composefs.digest.v1= (V1) karg.

Karg generation and digest computation default to V2 for now;
this change only ensures both digests are available on disk.

Assisted-by: OpenCode (Claude Sonnet 4.6)
Signed-off-by: Colin Walters <walters@verbum.org>
@github-actions github-actions Bot added the area/install Issues related to `bootc install` label Jun 12, 2026
@bootc-bot bootc-bot Bot requested a review from jeckersb June 12, 2026 10:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/install Issues related to `bootc install`

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant