Skip to content

Commit 37fa085

Browse files
committed
docs: Add experimental-composefs
It's way overdue for us to have a doc section, add one! Signed-off-by: Colin Walters <[email protected]>
1 parent 8eae370 commit 37fa085

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

docs/src/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
# Experimental features
5858

5959
- [bootc image](experimental-bootc-image.md)
60+
- [composefs backend](experimental-composefs.md)
6061
- [fsck](experimental-fsck.md)
6162
- [--progress-fd](experimental-progress-fd.md)
6263

docs/src/experimental-composefs.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# composefs backend
2+
3+
Experimental features are subject to change or removal. Please
4+
do provide feedback on them.
5+
6+
Tracking issue: <https://github.com/bootc-dev/bootc/issues/1190>
7+
8+
## Overview
9+
10+
The composefs backend is an experimental alternative storage backend that uses [composefs-rs](https://github.com/containers/composefs-rs) instead of ostree for storing and managing bootc system deployments.
11+
12+
**Status**: Experimental. The composefs backend is under active development and not yet suitable for production use. The feature is currently gated behind the `composefs-backend` compile-time feature flag, which in current git main is enabled by default.
13+
14+
## Key Benefits
15+
16+
- **Native container integration**: Direct use of container image formats without the ostree layer
17+
- **UKI support**: First-class support for Unified Kernel Images (UKIs) and systemd-boot
18+
- **Sealed images**: Enables building cryptographically sealed, securely-bootable images
19+
- **Simpler architecture**: Reduces dependency on ostree as an implementation detail
20+
21+
## Building Sealed Images
22+
23+
### Using `just build-sealed`
24+
25+
This is an entrypoint focused on *bootc development* itself - it builds bootc
26+
from source.
27+
28+
```bash
29+
just build-sealed
30+
```
31+
32+
We are working on documenting individual steps to build a sealed image outside of
33+
this tooling.
34+
35+
## How Sealed Images Work
36+
37+
A sealed image includes:
38+
- A Unified Kernel Image (UKI) that combines kernel, initramfs, and boot parameters
39+
- The composefs fsverity digest embedded in the kernel command line
40+
- Secure Boot signatures on both the UKI and systemd-boot loader
41+
42+
The UKI is placed in `/boot/EFI/Linux/` and includes the composefs digest in its command line:
43+
```
44+
composefs=${COMPOSEFS_FSVERITY} root=UUID=...
45+
```
46+
47+
This enables the boot chain to verify the integrity of the root filesystem.
48+
49+
## Installation
50+
51+
When installing a composefs-backend system, use:
52+
53+
```bash
54+
bootc install to-disk /dev/sdX
55+
```
56+
57+
**Note**: Sealed images will require fsverity support on the target filesystem by default.
58+
59+
## Testing Composefs
60+
61+
To run the composefs integration tests:
62+
63+
```bash
64+
just test-composefs
65+
```
66+
67+
This builds a sealed image and runs the composefs test suite using `bcvk` (bootc VM tooling).
68+
69+
## Current Limitations
70+
71+
- **Experimental**: In particular, the on-disk formats are subject to change
72+
- **UX refinement**: The user experience for building and managing sealed images is still being improved
73+
74+
## Related Issues
75+
76+
- [#1190](https://github.com/bootc-dev/bootc/issues/1190) - composefs-native backend (main tracker)
77+
- [#1498](https://github.com/bootc-dev/bootc/issues/1498) - Sealed image build UX + implementation
78+
- [#1703](https://github.com/bootc-dev/bootc/issues/1703) - OCI config mismatch issues
79+
- [#20](https://github.com/bootc-dev/bootc/issues/20) - Unified storage (long-term goal)
80+
- [#806](https://github.com/bootc-dev/bootc/issues/806) - UKI/systemd-boot tracker
81+
82+
## Additional Resources
83+
84+
- See [filesystem.md](filesystem.md) for information about composefs in the standard ostree backend
85+
- See [bootloaders.md](bootloaders.md) for bootloader configuration details

0 commit comments

Comments
 (0)