Anaconda installer now supports installation of bootc based bootable container images using the new bootc command. It has supported several types of payload to populate the root file system during installation. These include RPM packages (likely the most widely used option), tarball images you may know from Fedora Workstation, ostree, and rpm-ostree containers. The newest addition to the family, from a couple of weeks ago, is bootc-based bootable containers.
The difference is under the hood
We have added a new bootc kickstart command to Anaconda to support the new feature. This is very similar to the ostreecontainer command that has been present for some time. From the user’s perspective the two are very similar. The main difference, however, is under the hood.
One of the most important setup steps for a deployment is to create a requested partitioning in both cases. When the partitioning is ready, the ostreecontainer command makes Anaconda deploy the image onto the root filesystem using the ostree tool. It also executes the bootupctl tool to install and set up the bootloader. By contrast, with bootc containers installed using the bootc kickstart command, both the filesystem population and bootloader configuration is performed via the bootc tool. This makes the deployment process even more integrated.
The content of the container images used for installation is another difference. The bootc-enabled images are somewhat more versatile. Apart from installation using Anaconda, they provide a self-installing option via the bootc command executed from within a running container.
On the other hand, both options provide you with a way to install an immutable system based on a container image. This option may be useful for particular use cases where regular installation from RPM packages is not desired. This might be due to potentially lower deployment speed or inherent mutability of the resulting system.
A simple how-to
In practice, you’d likely use a custom container with pre-configured services, user accounts and other configuration bits and pieces. However, if you want to quickly try out how the new Anaconda’s feature works, you just need to follow a few simple steps. Starting with a Fedora Rawhide ISO:
First, take an existing container from a registry and create a minimal kickstart file instructing Anaconda to install the bootable container image:
# Beware that this kickstart file will wipe out the existing disk partitions. # Use it only in an experimental/isolated environment or edit it accordingly! zerombr clearpart --all --initlabel autopart lang en_US.UTF-8 keyboard us timezone America/New_York --utc rootpw changeme bootc --source-imgref=registry:quay.io/fedora/fedora-bootc:rawhide
As a next step, place the kickstart file in some reachable location (e. g. HTTP server), point Anaconda to it by appending the following on the kernel command line:
inst.ks=http://url/to/kickstart
Now start the installation.
Alternatively, you may use the mkksiso tool provided by the lorax package to embed the kickstart file into the installation ISO.
When installation and reboot is complete, you are presented with an immutable Fedora Rawhide system. It will be running on your hardware (or VM) installed from a bootable container image.
Is there anything more about bootc in Anaconda?
You may ask if this option is limited to Fedora Rawhide container images. Technically speaking, you can use the Fedora Rawhide installation ISO to install, for instance, a CentOS Stream container image:
bootc --source-imgref=registry:quay.io/centos-bootc/centos-bootc:stream10
Nevertheless, keep in mind that for now Anaconda will handle it as Fedora installation in such a case. This is because it runs from a Fedora Rawhide boot ISO. This may result in unforeseen problems, such as getting a btrfs-based partitioning that CentOS Stream won’t be able to boot from. This particular issue is easily overcome by explicitly telling Anaconda to use some different partitioning type, e. g. autopart –fstype=xfs. We would like to address the lack of container images handling based on the contained operating system or flavour in the future. For now, one just needs to take the current behavior into consideration when using the bootc command.
There are a couple more known limitations in Anaconda or bootc at this point in time. These include lack of support for partitioning setups spanning multiple disks, support for arbitrary mount points, or for installation from authenticated registries. But we hope it won’t take long to solve those shortcomings. There are also plans to make the new bootc command available even on the RHEL-10 platform.
We invite you to try out this new feature and share your experience, ideas or comments with the Installer team. We are looking forward to hearing from you in a thread on discussion.fedoraproject.org!




Oscar
Can’t be achieved the same by running mkosi instead of using kickstart files? Thanks!
Jiri Kortus
I’m not familiar with mkosi, so please take my comment with a pinch of salt: I believe mkosi can be used to build a variety of images (several of which can be installed also by Anaconda), but I’m not sure if it can also handle the actual deployment, especially on bare metal setups. And that’s where Anaconda steps in.
Moreover, Anaconda also allows you to customize some aspects of the resulting system at installation time and you can even go further and use arbitrary scripts in %pre and %post sections in the kickstart file if needed. Other strength of Anaconda and its runtime environment is that you can easily use it for network boot and automated deployment on bare metal on a large scale. Not saying that you can’t achieve similar goals by other means, of course – what tool will do the best job for you depends on your particular needs and use case :-).
Scott Dowdle
Wow. I guess that’s nice. How about adding like… the ability to pick filesystems and partitions in the Anaconda Web UI? The Web UI installer in Fedora 43 is really only appropriate for those who have no computer experience and don’t even know what a partition is. Looks like the only reasonably useful installer in F43 is the Everything netinstall media.
Ya’ll keep on chugging though.
bookwar
Have you tried the Mount points assignment option OR the advanced Storage Editor in the Web UI?
See the demo in https://youtu.be/bidGhBLrbsU?t=28
Scott Dowdle
If you use a disk with no pre-existing partitions, neither of those options appear. If they were there, they’d likely be very helpful.
bookwar
The advanced storage option is always available, but it is hidden under the button in the top right corner.
Can you try it and see if it solves the use case for you or if there is something missing?
Scott Dowdle
Thanks for bringing that to my attention. I’m not sure how I missed it. Yes, it did resolve my issue.
I can tell you that the distrowatch reviewer guy completely missed it too… and he is a “professional reviewer”. 🙂
Geeneejus
So this has nothing to do with Python Anaconda.. Gotcha..