Finally upgraded my main workstation to some more modern hardware and at the same time switched back to Gentoo Linux for my OS.

I finally upgraded my system to something that can handle my daily workload a bit better. I bought myself a new dual 10-core Xeon system. I had to buy it piecemeal from Amazon and it was a challenge getting it all shipped, built, and tested before the return policies expired. I had a few misordered parts, and a few failed parts but in the end I got it all finished the day before the last return window expired.

The misordered parts were just me not reading the spec details as closely as I should have. As for failed parts, I had to return/replace the motherboard and 2 memory DIMMS. Amazon’s return policy is pretty good and even for vendors that didn’t let me return through Amazon things were pretty easy.

The system is great. The dual 10-core Xeon’s give me 20 cores and 40 threads with hyperthreading on. I went with 64GB of RAM because I was always bumping up close to the 32GB I had in my previous system. Also with this build I decided to use an NVME drive for booting. I was a little wary of that decision because I’d never used on in a system I’ve built myself before. In hindsight I don’t know what I was so worried about. It wasn’t much different from using a regular SATA drive. I chose f2fs for the filesystem to help manage the writes on the drive. I also mounted some of the more active areas of the filesystem as tempfs (using RAM) to both make it faster and ease up on the amount of writes that need to be done on the NVME drive.

With this new hardware I decided to take more control of the software I run on it. I chose to install Gentoo Linux on it so I can decide exactly what software gets installed and how. Well - as much as you can decide on those things. Gentoo gives you tons more freedom and options in that regard than Ubuntu. I have a lean installation with just the software I need - all compiled from source for MY hardware.

One of the first things I worried about was doing all the portage compilations & builds on the NVME drive, but a tip I found on the Gentoo forums (sorry, lost the link) gave a suggestion to mount /var/tmp/portage on tmpfs, which puts it in unused RAM. That folder is where portage does all of it’s builds and a good chunk of it’s disk I/O lands in that folder. Putting it in tmpfs makes builds very fast (as does having 40 cores to throw at gcc). I think it took only about 15 minutes to compile all of Firefox. I didn’t time it exactly as there were many dependencies also being built, but from the time that I noticed it had started compiling the actual Firefox package and the time that it completed was around 15 minutes. Not bad. OpenOffice took longer, but I kicked that off just before going to bed, so I don’t know exactly how long it took.

Another nice thing that I love about Gentoo is the choice of init systems. I really hate systemd. I’ve gotten used to it using Ubuntu for many years, and administering CentOS/RedHat machines at work, but I really hate it. Why does my init system need to muck around with my DNS resolution? I just want the init system to start the services I tell it to start and leave the rest to me. I know how to configure my system and I don’t need systemd to take over vast chunks of the system. With OpenRC on Gentoo, it takes probably 1/10th of the time to boot that Ubuntu took. And, I know exactly what it is doing at every step. There are many things I hate about systemd but I’ll save that for another post.

All the software I need for work was easily installable on Gentoo. The main package I need was NoMachine’s nxclient that I use to control my work laptop from my home workstation. I was able to unpack the downloadable tarball and it ran flawlessly on the first try.

There are a few packages that I’ve had trouble with. AppImage programs work well, but I wish opensource vendors would provide ebuilds. Actually, maybe that’s not such a good idea. Most of these AppImage programs are really Electron apps. I don’t want to install any form of the nodejs toolchain on my system if I don’t have to. That just seems like a gigantic mess to me. If the bits necessary to run the app are “wrapped-up” in an AppImage, it is at least manageable for an end user. When I close the app it should all be tucked safely back in it’s container. So far the apps I’ve had to run from AppImage packages are: Joplin, Bitwarden, Session (IM client), and Sengi (Mastodon client). I really hate to admit it, but I’ve also started to like VSCodium (recompile of Microsoft’s VS Code without the tracking telemetry). Unfortunately, the current (at the time of this writing) version (1.58.2) AppImage package has a bug. It doesn’t detect Python installations on the host system when it launches and the built-in terminal comes up. It looks like it is trying to use either the Python on the build system, or something that is supposed to be in the package but is not. Either way, it’s broken for me. It should use the python installed on the host. I raised an issue on the VSCodium git repo. I don’t think too many people are using the AppImage package though, so who knows if/when it will be addressed.

I managed to get the Matrix client Element working, but they sure don’t make it easy. The Download page on their site throws up a modal dialog on the page that explains how to setup the repository for Debian/Ubunto. That’s it. No tarball, no AppImage, no Flatpack - just take the .deb file and don’t bother us. Luckily, I was able to find a URL that got me to the actual repository where the .deb files are served from. I downloaded the latest .deb file and tried unpacking it with ar x element-desktop_1.7.33_amd64.deb. Then you have to untar the 2 files that are inside. The result was a self-contained ‘Element’ directory that had all the program code in it, and the usual XDG desktop and icon files in a ‘usr’ folder. I copied the ‘Element’ folder to /opt/Element and put the .desktop and icon folders under ~/.local/share and it all “just worked”.

There’s still a few things I need to get setup, but the system is running great and I’m really happy to be back in Gentoo.