Thoughts on Operating Systems

· 777 words · 4 minute read

With the launch of the Raspberry Pi 5, and my subsequent purchase of one, I immersed myself in desktop Linux for the first time in a couple years. The nostalgia for my older systems overcame me, and I procured as used Latitude 9420, on which I installed Void Linux. I now find myself on Fedora Silverblue, and although I’m not convinced I’ll ever be fully happy here, it’s an acceptable reproduction of what I actually want.

And what I actually want is FreeBSD.

The appeal of FreeBSD, for me, derives from its development model, simplicity, and filesystem architecture. One of the things that always drove me nuts about Linux is that its distributions are essentially hodgepodges of disparate packages, each with its own release schedule and testing regime. Don’t get me wrong, the distributions are generally very usable, and surprisingly stable for what they are. But there’s simply no beating a coherently developed, full-featured operating system. Because FreeBSD is one software product, a fresh install will report that zero packages are currently installed, compared to hundreds for a fresh install of Linux. There may be no rationale to my obsession with this; it’s just that as the number of installed packages climbs, I cannot help but feel I am losing control of my system.

But even when third-party packages are installed on FreeBSD, they are installed to /usr/local - not to the same directories as the system itself. It’s very unlikely that an installed package is going to break a FreeBSD installation, as it simply does not touch the system. This is so incredibly simple to do - just establishing a standard of installing third-party software to /usr/local (or opt, if anyone would like to start caring about tradition). No need for containers, flatpaks, or anything of the like.

If you ever find yourself sitting in front of a fresh FreeBSD installation, run ps aux. Very few processes are running on a clean system. Basically just the kernel, init, and a handful of gettys to serve the virtual consoles. Plus, standard FreeBSD installations (e.g. ones not produced by the user running make buildWorld with a non-GENERIC kernel), that updates are handled via bindiff. How much more simple can you get?

I may yet try installing FreeBSD on my laptop, but there are a few obstacles:

  • No support for 802.11ac (let alone 802.11ax)
  • No support (that I know of) for LUKS

Obviously GELI is the FreeBSD equivalent of LUKS, but recent changes in my network philosophy have made moving files between my desktop and laptop less trivial, and my current solution is LUKS-encrypted flash drives. And my desktop almost must run Linux, because its main job is to run a handful of games, albeit ten-plus year old Windows games via Proton. Come to think of it, FreeBSD might be able to handle that. Perhaps I’ll investigate.

I digress. The other main advantage FreeBSD carries is native ZFS support. This is one thing I received from Void Linux but do not have in Silverblue. One potential solution to my operating system mismatch is to run Void on my desktop, FreeBSD on my laptop, and facilitate file transfer via flash drives with native-encrypted ZFS datasets. Another point to investigate.

The advantage of Fedora Silverblue is that it replicates the cohesive system development of FreeBSD via rpm-ostree, and the separation of system and third-party packages via toolbox (an abstraction of podman containers). But I was originally drawn to Void because it was written by BSD developers, and focused on stability (while also being a rolling release distribution). Plus, it was fairly easy to set up root-on-ZFS, along with all benefits thereof.

I’m now locked in tension between a desire to run void, and an appreciation of what Silverblue brings. The destabilizing factor is my ongoing renegotiation of usage patterns. I’m doing a lot more in-terminal than I’ve done previously. I can’t remember ever before writing these blog posts in Vim, and I have partly GNOME’s inexplicable decision to replace Gedit with the stripped down “Text Editor”. And my recent discovery of the gemini protocol, and the “Offpunk” browser has meant much of my browsing is done in-terminal now as well. I’ve come to prefer Musikcube as a music player, and I’m using Castero to watch for and play new episodes of BSD Now and the Osterholm Update. Some days, I hit F11 on my terminal and never look back. And that’s making a simpler distribution like Void more and more appealing.

I’m left in an uneasy, but stable position with Silverblue. But I know well that I’m likely to try both FreeBSD and Void Linux on my laptop before too long.