For once I feel a little out of touch after I took a bit of a break from following the news to focus on studying, and suddenly everyone is talking about immutable distributions. What are they exactly? What are the benefits and the disadvantages of immutable systems?
the whole concept of immutable is focused on stability and safety of your system – yes, it is still possible to break an immutable distro, but it’s a LOT harder and takes some actual effort – there’s also a few concepts wrapped up into the “immutable” phrasing:
- immutable filesystem – the root filesystem is set as read only, updates are queued up and applied during an upgrade (some distros require a reboot, some don’t)
- VanillaOS keeps two copies of the root system (ABroot), upgrades the inactive copy and then swaps them out
- NixOS has everything defined in a master config file and keeps an archive of previous generations of the config file allowing you to boot into whichever generation you want
- atomicity – updates are applied individually and checked, if the update breaks then it’s reverted to the previous working state (ie. you are never left with a borked system)
- containerized apps – user space apps isolated or sandboxed in some way like Flatpaks or Docker containers or OCI so if they break, they don’t take anything else down with them
- declarative systems – the whole system (and packages and configs) are defined (declared) in one master config file – back up that config file and if something happens to your system, you just need that one file to do a full rebuild (or make an identical copy of your system on another computer) – NixOS and GNU Guix are the two more well-known in this space
- EDIT: minor side-effect of this is you can easily tell exactly what packages are installed on your system at any given time – no hunting through
history
or trying to remember what you installed last month when you were testing out video players
- EDIT: minor side-effect of this is you can easily tell exactly what packages are installed on your system at any given time – no hunting through
- immutable filesystem – the root filesystem is set as read only, updates are queued up and applied during an upgrade (some distros require a reboot, some don’t)
Have you used Android? Has it ever failed an update or break due to an app install in a way that can’t be fixed by uninstalling it or factory resetting? Android is an immutable Linux OS. Its system files are stored on a read-only partition. They’re only mounted read-write during update. (That’s a lie, this is no longer the case, but it used to be, these days there are two partitions and the whole inactive partition is written during an update, or a volume snapshot pretending to be a partition is created and then merged, but functionally it’s consistent with the lie.) Apps are also stored in read-only form. One implication of this is that upon update, the partition/files you want to update are always in a predictable, unchanged state. That guarantees successful updates. It also allows trivial diff updates. The other implication of these facts is that you can always delete the mutable part of the OS, where your data and the apps’ data is stored, and you’ll always end up with a clean, working OS in a factory state. On Android you can also do this per-app by tapping “Clear data”.
Wouldn’t it be nice if you desktop or server behaved like this? Some folks think so and are trying to implement it.
There are few disadvantages beyond having to change how some systems work to accomodate this model. There’s typically more space wasted.
With tbis update system, I don’t understand why you can’t use your phone while doing it.
You can. Google pixel updates are just a reboot. Sadly many OEMs don’t do A/B updates, like samsung, so your phone can’t be used while updating the system partition
It’s worth mentioning that they often do this to reduce flash size, i.e. save 💰. Virtual AB was introduced to help with this but it’s relatively new. With it, there’s no need to reserve the space for 2x system partition. The needed extra space during update is taken from /data and released post success. There’s also a compressed virtual AB scheme now which helps reduce the space needed from /data to enable really space-crippled devices like CCwGTV and other Android TV things like Sony and other TVs.
I love Universal Blue.
It’s OCI cloud image based Fedora Silverblue/Kinoite/Serica with extra steps/batteries included.
“The reliability of a Chromebook, but with the flexibility and power of a traditional Linux desktop.”
But also probably an easier way for
Nvidia Fedora
users to game on Linux:Easily roll back deployments or 📌 one and rebase to something else easy peasy. (So many different choices) Test betas with no fear!
I’ve actually been gaming on Bazzite for two weeks now:
Jorge’s Blog:
Media:
- High-Tech Lo-Life on YouTube:
- “As Seen on TechSpot”
- “As Seen on GamingOnLinux”
- “As Seen on tom’sHARDWARE”
If you wanna simply make your own image to share with friends/family:
Universal Blue isn’t a distro. It’s more of a reimplementation/enhancement of
ImmutableOCI Cloud Based Images of Fedora.uBlue is great. After using Fedora Silverblue for more than a year I used it to have the same OS on my laptop and desktop. It’s works great and is quite simple if your already familiar with building containers. But the constant reboots and rebuilding an image taking minutes made me switch to NixOS.
The advantage of uBlue over NixOS is imo that the former is configured like any other Linux by placing files in the traditional file system hierarchy (e.g. binaries in /usr/local/bin). NixOS throws most of that over board and makes use of it’s own configuration language and package manager. Getting started with uBlue is definitely easier, while NixOS is a time-consuming rabbit hole (not that uBlue isn’t…). For a tiling wm setup I definitely think NixOS is the better choice, since changing core system components is quicker.
People literally made a distro spin that’s dedicated to rolling back nvidia drivers.
Classic nvidia moment right there.
But Universal Blue does look very interesting, I need to try and use it with distrobox and see if I can hit any walls that aren’t there with a classic setup.