Open
Description
The composefs-rs project is a Rust implementation of composefs that is capable of generating composefs images from container images.
We should integrate it in bootc as an alternative to the ostree backend. This would help make progress on phasing out ostree, UKI support and unified storage:
To be able to do that, we need to make bootc capable of handling both repository formats and have it handle the transition from ostree to pure composefs.
A potential layout for this is discussed in containers/composefs-rs#38.
Here are suggested steps for creating a first proof of concept implementation:
- Add an option to bootc switch
bootc switch --composefs quay.io://foo:bar
- bootc will import the container image using the composefs-rs library in a dedicated composefs repo
- bootc will set up the repo as needed
- bootc will create a new "deployment" for this image
- Do the three way merge for /etc, comparing previous image, new image, current changes
- Or use overlayfs instead to do that for /etc
- Setup /var so that it's shared with ostree deployments
- bootc will setup the new deployment for the next boot
- UKI case:
- GRUB: Generate GRUB config snippet to boot the UKIs in order
- systemd-boot: Install the UKI in /boot/efi/EFI/Linux (order handling to be confirmed)
- Non-UKI case:
- GRUB: Install the kernel & initrd in /boot and setup the BLS config
- systemd-boot: Install the kernel & initrd in /boot/efi and setup the BLS config
- UKI case: