Choosing a Linux distro (the hard way)

By Colin Hoad | Jan 16, 2025
RSS

Deciding on a development environment for my OPL language server project proved to be more of a challenge than I was initially expecting. I may have made the road harder than it needed to be by deciding from the outset to make use of my ASUS X71Q laptop, a veritable beast of a machine… from 2010. Yes, it may only have 4GB of RAM and a dual core Pentium T4200 2GHz processor, but I've since fitted it with twin 1TB SSD hard disks and it was already running a triple boot of Windows XP, Windows 7 and Linux Mint. A few years on the clock, perhaps, but it's served me well up to now, and I used it to develop my VS Code syntax highlighting extension, so I figured it would be up to the task of coding a language server in Pascal. It's also got a lovely big 17" screen and a very responsive keyboard, along with in-built Altec Lansing speakers for the all-important uplifting trance and synthwave music that I like to listen to while coding.

Well, the first issue I ran into was installing the Free Pascal compiler (FPC) and Lazarus IDE. Despite upgrading every package to the latest version for Mint 21.3 ("Virginia"), the numerous package dependencies that FPC and Lazarus seemed to demand resulted in my OS getting completely rinsed. That's a technical term meaning “it wouldn't boot”. I made copious use of Timeshift (highly recommended for anyone embarking on upgrades or package changes with their own Linux OS!) to roll back to a prior working state, but no matter what I tried, I just couldn't get Mint to embrace FPC and Lazarus. Admittedly Mint is not explicitly listed as a supported OS for FPC, but as a Debian-derived distro, I didn't think it was unreasonable to expect it to work. After significant amounts of googling, I came across thread after thread of people running into similar problems, and the only solution that seemed to work was to run FPC and Lazarus as containers. This wasn't a road I wanted to go down; so, much as I like Mint, I felt we had to part company.

Where to next? Well, I'd had a pleasant experience installing and using Fedora on another machine, and other users had told me it was a good distro if you just wanted something that works. Given my frustrations with Mint by this point, I felt it was the right way to go. I duly imaged a USB stick with the latest Fedora ISO using Balena Etcher and set to work. Early impressions were good, the installation setup booted without any issues and it let me delete the old ext4 Linux Mint partition and set up Fedora's preferred btfrs (amusingly pronounced “butter FS”). Disaster soon struck, however, as once the installer got underway it popped up an error message saying it was unable to install the bootloader. It did give me the option to continue anyway, which I did, but after it completed and rebooted… my triple boot system had been completely hosed (another technical term) and all I was presented with was a grub rescue prompt. Urgh.

I battled valiantly with various online tutorials, but eventually concluded I wasn't going to get anywhere with Fedora, at least not on this old machine. Most of the advice I found said I would need to start over - wipe the entire disk and set up all three operating systems from scratch. That felt like quite the nuclear option (and in any case, I didn't relish losing my saved games for Doom 3 sitting on the Windows 7 partition) so I once again found myself wondering if there might yet be another Linux distro I could use.

Reader, I found it. Presenting… Kubuntu! Essentially Ubuntu, but with a KDE Plasma desktop environment instead of GNOME. Given I am not a gnomic sort of guy - and I do really like Plasma - this already felt auspicious. I booted into Kubuntu via the ISO image on my USB stick and used that to obliterate the mess of partitions Fedora had created (all three of them…) after which I was able to head into the installer proper. The ‘automatic’ partitioning option had zero respect for my existing installs of Windows XP and 7 (classic Linux…), so I had to pick the manual option. However, this proved very simple to use: I initially created a single ext4 partition for all remaining space on my primary hard disk, and the installer helpfully pointed out that this would result in an unbootable OS. It gave me the option to add a smaller, 200MB EFI bootable partition alongside the ext4 partition, and with this in place, the installer happily made its way through the rest of the installation, letting me set up Wifi connectivity and user credentials in parallel. The machine rebooted, and… once again I had my three OS options in the grub boot menu, including my freshly pressed Kubuntu!

After checking all three operating systems still worked (and playing a little Doom 3, just to be extra sure), I nervously ran my apt commands to get FPC and Lazarus installed… which they did, without any issues at all! I then installed VS Code (via Snap) and faced the final hurdle: getting Node.js, VSCE and Yeoman installed - all of which are pre-requisites for managing extensions in VS Code. Under Mint, this had worked (after upgrading various packages), but in Kubuntu I was once again standing at the gates of dependency hell. Essentially, while I could get a version of Node.js running, it was considered to be too old to support the installation of VSCE and Yeoman. The only obvious option would be to upgrade my Kubuntu from 22.04 to 24.10 in the hopes that the latest Kubuntu repositories supported a later version of Node.js - but I already knew that the demands of 24.10 would kill my laptop, as I'd already seen this with Linux Mint's “Wilma” edition. There seems to be something deep in the guts of these later builds of Debian-derived distros that causes driver dyspepsia, leading to incredibly slow boots (10-15 minutes!) and subsequent graphics and sound driver instability.

I must admit at this point I was starting to think I might have to abandon using my poor old ASUS laptop or give in to the Redmond behemoth, but after a bit more google-fu I stumbled across something called Node Version Manager (nvm) that lets you explicitly install any version of Node.js you like. I installed nvm and duly went about getting the very latest version of node, which installed without any issues at all. From there it was plain sailing: I was able to get npm, VSCE and Yeoman installed and running without any griping from Kubuntu, and after rebooting my laptop (which took mere seconds) everything was still A-OK! Not wishing to tempt fate, I quickly headed into Timeshift to make a restore point…

I am now ready to make some real progress, both with Pascal itself and with my OPL language server project. And you know what, it may have been a hard slog getting to this point - and others might have concluded far earlier on that the better solution would be to use a newer machine - but I've learned a heck of a lot about Linux through this journey, and I like to think that's worth it all by itself. Plus my dear old ASUS laptop gets to live a little bit longer, albeit on borrowed time!