Recently, I've been on a big sort out of all my I.T, tools, Operating systems and such. I get this urge from time to time. Things move quickly in the computer world and after a while, I think it pays to have a quick look around and a refresh.
I've been using Arch Linux and Debian as my daily drivers for sometime now. I've noticed there's a great number of new distributions out there, and new ways of setting up and running such setups. I can imagine it can be a bit overwhelming - I certainly ummed and arred a lot. I figured if I write this down it might help a few folks.
There are a good number of distributions listed over at Distro Watch - too many to mention. However, I think it's possible to group them into various categories, simplifying things a bit.
I've spotted some major elements that define a Linux distribution:
With these factors in mind, I've come up with a bit of a guide to the various distributions...
These distributions all use the apt package manager With .deb packages. Some of the major distributions would be:
... any many others
Arch uses the pacman package manager and is one of a number of rolling distributions. Rather than have discrete versions of operating system, Arch is keeps updating constantly, package by package. There are a great number of Arch based distributions, including:
Arch has quite a number of spin-offs and variants. I've been using vanilla Arch on my main desktop for some time now.
Redhat Enterprise Linux and Fedora both use the same package manager, rpm. Fedora forms the basis of many distributions. I've never used a Fedora distribution before. The OStree technology that also helps to manage the OS also underpins Aurora and Bazzite.
Immutable Linux setups seem relatively new to me. The idea is that the operating system is kept under strict version control and is not modifiable by the user - at least not easily. Any additional software is added as a flatpak or other sandboxed, containerised affair. The details might be different but distributions like Bazzite have really taken off in the last few months.
I currently use Endless on the PC connected to my frontroom telly. It's been great!
I don't know much about Suse linux to be honest, except that it features a chameleon. It uses another package manager of its own.
Some distributions seem to be tied to specific hardware or to a specific use case, or are just wildly different to any other distribution.
There are many other weird and wonderful builds of Linux out there, for specific problems and use cases. Often, they are built on one of the big three: Debuntu, Arch or Fedora, but with various modifications. Some are built from the Kernel up, with their own package manager.
I have a desktop machine and a laptop I'd like to sort out. The machines are quite different from one-another, but I decided I wanted to keep things as similar as possible on both - save on the overhead of maintaining two different systems. I had used Debian on my laptop and liked it. Arch, on my desktop, had been pretty good too, but I was running into problems.
Arch has some trouble with keyrings, the AUR and what I perceive as any sort of unified desktop experience. It seems quite easy to shoot yourself in the foot with Arch; you have to be quite invested to get the most out of it. It does have pretty good support for the latest hardware however; at least once I've had to use Arch because other distributions simply didn't have the drivers or kernel support available for the new hardware I had.
Things have changed now - both my systems are quite old, so I've no need for bleeding edge support. I've also done my time with Arch (and Gentoo for that matter); I don't want to be super invested in my OS in that way anymore. I'm very happy to trade cutting edge performance and hardware support for something a little slower and more stable. It's perfectly possible to have a Linux system you don't need to constantly tweak to get a good experience. Having spent my time in the past building Gentoo and Arch setups, I'm ready to move on.
I tried AntiX on my laptop, but quickly got into trouble. Certain things just didn't work and the default desktop seems quite poor from a UX standpoint. I tried Linux Mint Debian Edition (LMDE) and liked it. So much so, I decided to use it on both systems.
Endless is the distribution I use on my machine downstairs with my telly. An immutable distribution makes sense there. But Bazzite, Aurora and the other immutable distros are a little too inflexible for my day-to-day I fear. I'd like to experiment a little with virtual machines, which requires some flexibilty in the kernel, so immutable systems are out for now. I do love the idea though - I think it'll be the way forward in the future.
I also rejected Ubuntu - the popular choice - largely because I'm not sure about a number of decisions Canonical have made. I think the OS is perhaps a little too bloated with a little too much telemetry.
It was suggested that I consider using BTRFS as the filesystem of choice. I was skeptical as the last time I checked, BTRFS wasn't exactly stable. But then this was a good number of years ago. Its subvolumes feature allows the easy taking of snapshots. Using the program timeshift, I'd be able to set-up regular snapshots of my root and home volumes, restoring to a previous state if things go wrong. However, using BTRFS subvolumes for your home and root directories requires a slightly more complex installation process.
Like most Operating systems, LMDE has a Live USB installer image. You can copy this to a USB stick, using programs like Rufus, Ventoy, dd or any number of similar tools. This will enable your computer to boot off this stick into a ready-made LMDE setup, complete with an installer program to put LMDE on your system permanently.
LMDE has an expert install option. This allows you to perform your own disk partitioning from within the installer image. Once your disk(s) are set-up how you want, you mount them at the location '/target' and the installer will take care of the rest. My laptop disk setup looked a little like this:
- /dev/sda1 - vfat for EFI - /boot/efi
- /dev/sda2 - ext4 for boot - /boot
- /dev/sda3 - cryptsetup
- btrfs - subvolume @ - /
- btrfs - subvolume @/home - /home
- btrfs - subvolume @/swap - /swap - contains a file called swapfile
The root, home and swap subvolumes all live inside an encrypted partition, built sing the LUKS and the Cryptsetup tools.
These subvolumes need to be setup and mounted, so the LMDE installer can do it's job:
cryptsetup open /dev/sda3 btrfs
# enter passphrase to continue
mkfs.btrfs /dev/mapper/btrfs
mount /dev/mapper/btrfs /mnt
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
umount /mnt
mkdir -p /target
mount /dev/mapper/btrfs -o subvol=@,compress=zstd /target
mkdir -p /target/home
mount /dev/mapper/btrfs -o subvol=@home,compress=zstd /target/home
mkdir -p /target/boot
mount /dev/sda2 /target/boot
mkdir -p /target/boot/efi
mount /dev/sda1 /target/boot/efi
The swap subvolume needs have its Copy-on-Write (CoW) setting turned off:
sudo btrfs filesystem mkswapfile --size 8g /swap/swapfile
sudo swapon /swap/swapfile
The /target/etc/fstab needs some attention:
/swap/swapfile none swap defaults 0 0
And so does the /target/etc/crypttab
btrfs UUID=xxxxxxxxxx none
swap /swap/swapfile /dev/urandom swap,cipher=aes-xts-plain64
You can find the UUID using the following command:
lsblk -o +label,fstype,UUID
To recap, I used the expert setup tool in the LMDE live usb installer. This lets us set-up the disk however we want, so long as all the required directories are available and mounted at '/target'. With that in place, the installer does it work.
I'm quite pleased with Linux Mint so far. It's doing everything I want so far and doing it well. There are a few issues however: * nomodeset needs to be, er, set in the grub boot line. I still get issues with the nvidia driver on boot. Nothing major but a little annoying during setup. * Cinnamon, the default window manager does seem to go into safemode (whatever that means) a little too often. It's fine though. Restarting it appears to affect nothing. * I have a KVM switch that I switch often. Sometimes cinnamon doesn't really cope. * I still have occasional problems with NFS over to my FreeBSD box. Much less frequent at the moment, than with arch. * Every time Steam updates on launch, I get no indication; it appears like it has crashed but is, in fact, fine. * Alacritty and Kitty terminals don't quite have the right integration with the Window Manager (no cut-and-paste).
Nevertheless, many programs just work, and if they aren't available, the flatpak or appimage versions seem to work rather well. I still get a lot of work done on this system. I feel like it's less of a messy hybrid, like my arch setup became, but that's probably just vibes. Most of the above problems can be laid at Cinnamon's door - the default window manager. Maybe I'll replace it in the near future.
I would say so - certainly over Windows 11. But then I don't compose music in Ableton, do graphic design in Photoshop or build things with Solidworks. For a long time, Linux gaming was non-existent. You were lucky if a game you wanted to play would run in Wine. Ironically, it has been said the only reliable ABI on Linux is Win32 - a rather famous article, apparently. There are certainly a number of things Windows does better than Linux does.
Linux's greatest strength - its open-source nature, its flexibility - is also its weakness. As there are many different ways to set it up, the desktop experience suffers a bit from small incompatibilities here and there. Things like different styles of dialog boxes and file browsers, KDE versus Gnome-based applications and what seems like a million different ways to set-up wifi adaptors. It can be a problem. Not only that, Linux has many developers with different ideas of how things should go.
In the desktop world, nowhere is this more evident than with Wayland versus X11 Xorg. The latter has been discontinued in favour of the former, but many applications still don't support Wayland and many folk seem to consider Wayland to be not ready for the prime time. Either-way, I've found Wayland to be more hassle with little in the way of benefits.
As for the whole SystemD thing - that ship has sailed, spilling a lot of ink in the process. I'm not sure if I care enough about it, but it is a step away from smaller programs doing one thing and doing it well - what was supposed to the Unix Philosophy. There are these who believe such a thing isn't true anymore and maybe never was. I suppose Linux really isn't Unix after all.
Increasingly, I can't really have these things with Windows. I have a soft spot for Windows 7, believe it or not. For a long time, I kept Windows 10 around on a dual-boot, because despite everything I've said, it's good to have a selection of operating systems because whether I like it or not, Windows is still dominant. Any software I make will likely need to run on a Windows box. These days I have a spare laptop available with Windows on it for any testing I need to do.
For the longest time, Windows 11 sales lagged behind Windows 10. That's a big red flag in my book. No-one really wanted the new airquotes 'features' that Microsoft were offering. So much so, they reversed their planned AI features. Of course, with support mostly over for Windows 10, what options do folks have?
Some folks might suggest Apple as an alternative. I suspect Apple is even more of a walled garden than Windows is. It would go against my somewhat punk attitude to buy a new Macbook these days. But a lot of folks I respect use them; I myself owned one a decade or so back and enjoyed it greatly. If you are going to lock yourself in, at least your cage will look nice. Although to be fair, Apple has begun to drop the ball there too, with folks reporting falling standards in the UX.
Linux won't be for everyone. I would personally love some sort of in-between ground. Maybe Serenity, Haiku or ReactOS might fill that void one day? I can dream.
An important fact to remember is Linux is free. We are fortunate to have it as an option at all. We can't really compare it to other paid-for operating systems in quite the same way. Sure, more and more corporations are getting involved in the Linux ecosystem, but for us end-users, it's really great to have this option and - dare I say - proper punk. But I do worry about how long this will last.
Ever noticed that when someone cares about a thing, they are often labelled as zealots, or holding a view because of religious reasons? I certainly have. It's happened a couple of times to me. Truth is, I think most people don't care about their OS; they just want something that works.
When you are deep into software engineering, systems administration, computer science or similar pursuits, I think it might be quite hard not to care about which operating system you spend a large amount of your time in. I have found myself defending the Linux position a few times, and it's never gone down well. Still, my position remains unchanged. I don't think Microsoft has it in them any more to make something that just works, without all the nonsense no-one paid for. I'd rather not have my rights infringed upon, thanks.
People like to compare Windows and Linux, but it's not an easy comparison to make. Windows has been so dominant for so long any other operating system has to play to the Windows play-book - 'Can I run MS Office?', 'Where is the start menu?', 'Why do I need a terminal?'. When you've become used to the way things are, it's hard to change. I know, because I was that person. When I was quite young, I never saw the point of Linux - Windows does everything, and it's easier to use. This may even have been partially true back in the early 2000s. But after trying all three of the major operating systems, I've stuck with Linux for the longest time.
A lot of technical folks like to ignore social and political issues. Even the inventor of the Linux Kernel - Linux Torvalds - is blind to this ( or more likely, is deflecting something he doesn't like), if a recent email on LLMs is anything to go by. Choosing an operating system has become a social and arguably political choice. I'm tired of technical people arguing for technology purely on some sort of benchmark or architectural elegance alone. These things are part of the story, but we can't ignore the social side. After-all, technology is the means to an end, even if we'd like to believe otherwise. A very successful and smart programmer I know once told me "I've tried for many years to tell software engineers that, at the end of the day, software is about people." I said that I, very begrudgingly, have to agree.
I've tidied up a lot of my I.T. as I focus on getting more things done, but there's always more to do. My Linux VPS still needs a lot of work - Nagios, Prometheus and all these sorts of server admin tools need to be looked at. I suppose any computer system is never done. Still, I'm quite pleased with the setups I have now.
I've been spending a lot of time looking at tools, such as Zed, Helix and such like. Sometimes, I like to question the tools I'm using and see if there's any improvements out there. No doubt I've still many more things to find. But for now, it's time to get on with Earendel (among many other projects).