Bazzite/Aurora – Life with an Immutable OS

The Immutable OS has been around for a long time. Its arguable that things like iOS and Android are most people’s first experience with an immutable OS. Its really just an OS where you don’t have the ability to modify the OS.

 

What Is an Immutable OS


Immutable is a term that really ends up causing confusion. It implies that its literally unmodifiable, but it ends up casting a wider net than it should. The System portions of your computer are covered by the immutable OS, but user spaces are editable.

Consider iOS and Android. You don’t get to change the OS, but you can install your own apps, you can change OS settings, etc.

This is really what an Immutable OS is about. And like with iOS/Android, one of the benefits to the maintainers is that because they have control over the OS, they don’t have to worry about some edge case where if you have some specific version of the kernel, and some random globally installed python package, then you will crash on boot – Because they ship the whole OS, so they have complete control over those things.

 

Universal Blue


Aurora, Bazzite, and Bluefin are immutable distros from Universal Blue that are based on Fedora.

Bazzite is the most popular, because “gaming distros” have become really popular the past couple years. But Universal Blue maintains all 3 with different focuses.

Aurora and Bluefin are geared more towards workstation/desktop, and are somewhat developer oriented. And the thing that seems to set them apart the most is KDE vs Gnome.

Bazzite is gaming oriented.and comes in KDE, Gnome, or Steam Gaming Mode flavors. When comparing the KDE/Gnome versions to Aurora/Bluefin, the difference is basically just in what software comes pre-installed.

All three of them have developer flavors. So my desktop is running Bazzite dx, which is Bazzite but with developer tools pre-installed.

 

Universal Blue distros are opinionated.

  • They don’t have the Discover app, they have their own thing called Bazaar
  • If you want key remapping, you have Input Remapper, not keyd or any of the other alternatives
  • If you run dx, you will have VS Code
  • When installing software, you will not have nix as an option
  • Bazzite has Lutrus installed, even if you don’t want it
  • Bazzite has Steam installed, even if you don’t want it

The list goes on. But these are all parts of the Immutable OS.

This is not necessarily a bad thing. An opinionated OS, if it aligns good enough to your needs means that a lot of things will just work, and you won’t have to go searching for how to solve all problems.

Sometimes its annoying, because if you want to try something different than what they have, it can be difficult.

All of this means that if things are going well, its amazing, you don’t have to find a solution to Input Remapping, you just need to know what is installed, and use it. But if it isn’t working how you want, or you want to try keyd instead, then there can be a grass is greener problem making you feel locked in.

All of which is to say that it works best if you’re willing to be a little more hands off. I want Linux to be my OS, not my hobby. And sometimes people forget that Windows/Mac don’t do the exact same things.

 

What’s it like installing software


We’re at a time where a lot of software comes in Flatpak or AppImage. When I was in college, everything was apt-get install or rpm install, etc. But we are in an age where most software isn’t.

When you install something through apt or rpm, you run into version conflicts, or dependency problems. And so I don’t want to install something through rpm anyway.

Flatpak isn’t perfect, and sometimes you need to go change the apps permissions. Sometimes the Flatpak isn’t by the app makers, but someone just made a Flatpak of an app they use. So you have to wait for them to update it if there’s an app release.

But even if I wasn’t using an immutable OS, I would avoid installing through rpm or dnf, and trend towards another option anyway.

 

For things that aren’t GUI based, or are GUI based but write files to the OS, there’s Distrobox, which is a pretty light weight way of running deeply integrated containers. Its a lot like WSL, but its more like Linux Subsystem for Linux. So you can run a container that has access to your filesystem so it can access your documents, but it has its own container OS.

I use Distrobox for things like compiling QMK firmwares, and compiling github projects. Basically any time I want to just have an environment that I can install whatever I want, but throw it away without worrying about whether the dev has provided a correct uninstall script.

I really like this because it means I don’t have thousands of random packages because of that one time I needed to compile some rust program I found in github so that I could troubleshoot something, and their program ended up not even working anyway, but I already had all these random dependencies installed.

 

Some of these things are just good computer hygiene for (current year). But if you just install CachyOS, Nobara, Mint, Ubuntu, or any of the other hundreds of popular distros, you won’t be forced into good computer hygiene. So you’ll do things the way everyone’s always been doing them, and be annoyed when you have to reinstall for the nth time because you accidentally installed the nvidia driver wrong.

 

Stability – Update, Rollback, etc


This is where Fedora Atomic REALLY shines.

With Fedora Atomic, you will have 2 versions of the OS on your computer (don’t worry, this is linux, its small, not like bloated windows). So when you boot your computer, grub will give you the option to boot into ostree 0, or ostree 1. Don’t worry, there’s a countdown timer, so its no different from how you can mash on boot to get to the bios.

ostree 0 is the latest, and ostree 1 is previous.

When you run an update – which is ujust update or update from the application launcher, and rpm-ostree update for non universal blue distros – it will pull down the latest version of the OS, and the next time you reboot, it will be ostree 0.

So if you update, and reboot, and its broken, you just reboot, select ostree 1, and you’re back to how your computer was pre-update. Simple as that. If you want to make the rollback stick then you run rpm-ostree rollback and that will make that version ostree 0 again.

This makes updates really safe. I know that you could just btrfs snapshot before you update, but what if you forget. what if you dnf install something and you didn’t snapshot. What if you dnf install something and because you run it without rebooting, your system gets messed up.

Certainly these are not problems that you’ll run into every time you update your computer. But the fact that you never have to worry about it is nice.

You can also rpm-ostree rebase to change which Immutable distro you are running (documentation cautions not to switch between kde and gnome based distros)

So lets say you are running Aurora and decide that you want to get into gaming. You don’t have to reformat your machine, you can just rebase to Bazzite. Or if you realize you should have installed a dx flavor, just rebase. Or if you decide that you don’t want the dx, rebase. Maybe you have a HTPC that you want to try the Steam Gaming Mode version on.

And if anything goes wrong when you rebase, you can just rollback. I tried Steam Gaming Mode version of bazzite on my HTPC, and it turned out to have nvidia bugs at 4k, so it couldn’t finish booting. So I just rolled back. And in a few months I’ll try again.

 

This also leads nicely into layering.  Sometimes you will find a package that really does need to be installed through dnf/rpm. If this happens you can rpm-ostree install that package. This will layer it onto your build. You run the command, and then the next time you reboot, you will have that package installed. If it conflicts with anything, you just rollback.

The downside to layering, is that you won’t be able to rebase. Which the Universal Blue documentation really over inflates in my opinion. I’ve only rebased a couple of times. And as long as you make note of what you layered, you can pin, rollback, rebase, and re-layer.

 

Overall Experience


A lot of people think that an Immutable OS is linux in beginner mode, because the maintainer controls so much. And in some ways that’s correct. But in other ways, its also set up for advanced users who will be given the tools to not shoot themselves in the foot.

There are certainly times where you’ll wonder about a different distro, or if you had X instead of Y. There have been a few times where I gave up on some customization, and decided to use the system default instead. But at the end of the day, I just want to use my computer, so if giving up a little bit of control means I spend a lot less time tinkering. That’s ok by me.

There are a lot more really interesting things I’ve learned though using Fedora Atomic distros, but this is already really long, and I feel like its just skimming the surface.

Leave a Comment

Your email address will not be published. Required fields are marked *