Post

You Need To Know About Bootc

You Need To Know About Bootc

At the risk of sounding like every YouTuber out there who wants you to click the “Subscribe” button right now, I really believe everyone who cares about Linux should start learning about Bootc. When looking at the future of Linux and what that could look like there’s already a lot of talk of immutable distos like SteamOS, Fedora Silverblue, or NixOS being the future.

Starting off let me be clear, traditional distros aren’t going anywhere. They have their place and people already know and love them. Businesses rely on them. Yet people aren’t using them and we’ve been talking about “Year of the Linux Desktop” for longer than I have been alive. Immutable distros (or “Atomic” as they now like to be called) have been around for a while as well, but are relatively new in the Linux Desktop space and allow end users to be able a Linux desktop like an appliance. They can turn it on and know it will boot properly without having to worry about things users had to worry about in the past like drivers, kernel mods, or new packages breaking things – the ghosts of Linux Desktop Past. If you want to see what can be possible, look at the Steam Deck.

Alright, you get it by now – atomic distros are cool. What makes them even cooler is how you can make your own atomic distro. Enter Bootc! Bootc allows you to make an OS the same way you make an application, using containers! There is no denying that most applications are shipped today as a Docker container and most developers have some experience with them. Bootc takes this existing developer experience and directly translates it to your OS. Lets look at an example to see how easy it can be:

1
2
3
FROM quay.io/fedora/fedora-bootc:41
COPY nginx.container /usr/share/containers/systemd
COPY nginx.conf /etc/nginx

Simple, right? This copies a file to run a Nginx container as a quadlet and a config into the /etc folder. This brings GitOps to my OS. With this whenever my machine starts, whether for the first time or millionth time, its going to be configured to work exactly as expected with no extra work or additional configuration. Day 1/2 configuration with other tools like Ansible or Chef are no longer necessary. Everything together in the same repo.

But that was a simple example for an Nginx server, what about something complex like a Linux desktop with all the software I want like VSCode, OpenRazr, and Nvidia drivers? Look no further than Universal Blue. This project is the epitome of “I want everything to work out of the box with no extra work”. In fact The Verge recently published an article saying that one of the Universal Blue projects, Bazzite, was a better experience than SteamOS. High praise! They put a lot of work into streamlining the user experience so anything you could want is just a simple command away and it always “Just Works” which is exactly the kind of experience normal non-technical users want. Something I can give to my parents and know they’ll have access to all the applications they need and won’t be able to break. Bootc is the way we’re going to be able to achieve that.

Bootc isn’t the only piece to the puzzle and I’m just scratching the surface with what Bootc can do. There are more pieces like ComposeFS & Systemd-sysext but Bootc is where I think people should start. If you want to see more examples feel free to check out my repo on GitLab.

This post is licensed under CC BY 4.0 by the author.