TL&DR

The Linux landscape is looking lit

Blathery backdrop

Tooling around creating/customizing Linux distributions is reaching broad production quality. systemd, mkosi, virtme-ng, virt-manager are all changing the face of distribution creation and the distribution landscape is going to radically change as a result of this. Further tooling like distrobox/toybox makes living with an immutable Linux base very plausible.

I spend a fair amount of time in yocto land; much like gentoo, you are starting from a rather low level, so arriving at a modern distribution requires a fair amount of time/effort/coordination and you need to solve incredibly high level issues at the same time as low level issues are eating your face. When I was consulting, I delivered 2 discrete a/b partitioned OSes to different customers; both were provisioned using docker with partition selection being handled of a modified version of systemd-bootd (formerly known as gummiboot).

a/b partitioning is kinda trivial to implement when shipping appliances, and I remain convinced that the modern distribution that gets this right is going to sweep the board. Why should an OS update require any protracted work on the part of the receiving machine. The only valid case I can see is where the structure of the OS fundamentally changes, which is reasonable when the OS is in flux and only when the OS is in major flux. The common path should take the length of a standard reboot. Somehow Windows makes every update I ever installed some Sisyphean task. Traditional distributions like Fedora and Ubuntu have these discrete (non rolling) junctions where their dependency graph needs to be broadly revisited, and with Ubuntu at least I have felt this sting on more updates than not. Managing a fleet of appliances running Ubuntu as the underlying OS is something you only think is a good idea once. The more power user you try to be, the larger the dildo of consequences lurking in yonder shadows. Hell, even Mac OS, the technical gold standard manages to burn something like 10-20 min updating itself. Chrome OS might get this right, but a glorified browser appliance is not a really fit for an apples to apples comparison with real OSes.

Sorry, to clarify, this is trivial if you remove corner cases. The corner cases I removed in the past were non-EFI and grub. Grub might be a perfectly nice piece of software, but I hate it with a passion and Fedora’s continued use of it makes me want to bite them. Over in Arch land, any sane person has been living with systemd-bootd and bootctl. EFI puts amd64 devices on the same footing as uboot devices, and in these contexts you are not going to get a Nobel Prize for implementing a/b partitioning in this context.

systemd-bootd is highly readable by the by; that is an easy project to recommend the curious to consume.

Immutable Linux Contenders

  • particleos - the reference OS made by the authors of mkosi. I got the installer booted and the OS installed once in virt-manager and only once. Having completed the install, it failed to find /usr. (or was it root). I am clearly too stupid to be its audience.
  • openSUSE Aeon - shipping! Functional distrobox and other tooling, which makes the idea of replacing your existing distro with something with an immutable rootfs feasible. Gnome centric.
  • kde-linux - Also shipping! I have now installed this in virt-manager and on baremetal hardware. Uses mkosi to a limited extent, and a limited extent which continues to function when the rest of mkosi blows up. Good show. Gets OTA updates! I love KDE (at this point) and this looks really well positioned to get a lot of stuff normally half arsed implemented out of a wiki (if you have infinite time) baked into the base system. Not only
  • bazitte - highly praised immutable steam OS alternative. Bootc based. Looks powerful, and hence a little complicated. rollback info

Opinionated Distros

  • Omarchy - Arch, with Hyprland dialed in and web pages as first class citizens. Addresses the last mile problem regarding usability. The bit distributions have kinda consistently failed at.