From Arch to Artix: A Journey
I recently migrated my laptop from Arch to Artix, and the main reason was to get rid of Systemd. I’m not an ideological purist, someone who hates the very architecture of Systemd, and I want to add my experience to the Great Internet Information Chum Bucket.
As I said, I’m not opposed to Systemd in principle, like some. I used to care about init systems; when I first started with *nix systems, it was with SysVinit on Solaris, and I came to really dislike the mess of shell scripts and directories, and slow boot times. One thing I’ve always disagreed with folks about was the principle of “simple” init systems. All (many) of these do is push complexity down into bash scripts, and as much as I love bash, it’s a horrible language for managing a complex dependency systems like an init process. So I jumped ship to Upstart when it first appeared on Gentoo, and was sanquine about the move to systemd. And I have quite enjoyed it! The user tooling is fantastic, and far better than anything available for SysVinit (back in the day, at least). It actually does boot dependencies more sanely (more predictably) than Upstart, and for once there’s an init system that doesn’t treat users like 2nd class citizens. I run all sorts of timers and jobs in non-root systemd services. But there are some uncomfortable parts, especially as systemd expanded and I started using it on virtual servers. The first was probably journalctl. Gone are the days when you can jump into a directory (/var/log) and find everything you need (log-wise) to debug an issue. No, now you have to get your logs through a tool, journalctl. I didn’t so much mind it, except that frequently when I’d log into a VM remotely and try to query the logs, it’d take – literally – 30 seconds to respond. Unpacking compressed databases into memory, I presume, but the end result was that it’s slow, and obfuscated, and I need the tool to work to be able to do any forensics. Aside from being an unpleasant experience, this makes me extremely uncomfortable. But I learned to live with it and moved on. Until the next issue: systemd-homed. TBF, I never did figure this out; I had absolutely no use for it, and it was only weakly forced on me and was easily ignored. There were some dirty log messages on boot, but since my system still worked I ignored it. But why? At that point, I had two things in an otherwise great experience, harshing my mellow. When the third issue came up, it was the first real disruption: DNS, and systemd-resolved. I had to set it up and use it because, at some point, my Arch laptop was occasionally giving me grief about name resolution without it. This wasted so much of my time, and I’m not convinced I’ve got everything working correctly. Frequently when changing networks, or even suspending and resuming, DNS will become unavailable, and I have to exercise a menagerie of tools to get DNS and networking functioning properly. I didn’t have these issues on this laptop prior to systemd-resolved; sure, I’d have outages (the problem I was trying to fix), but they were transient and didn’t require losing an hour getting it running again. systemd-resolved is actually horrible, and was the real crack that got me looking at alternatives. The straw that broke the Boston Dynamics’ Dog’s Back (no camels were harmed) was systemd-coredump. A few days ago, surf (web browser) started acting up and in the process of upgrading packages and recompiling, I got a build that would segfault on startup. What would also happen is that systemd-coredump would immediately begin consuming all of the CPU and memory on my laptop, making it unresponsive. I have no idea what it thought it was doing; the dumps I cleaned out – once I found where it was hiding them - were not very large. But this was unacceptable. Why is systemd getting involved in core dumps, and doing it so incompetently?
I do like Arch, so I was happy to see Artix. I’m in the middle of the migration; as I type this, my computer is busily recompiling and re-installing packages. With any luck, I’ll only have to spend two or three days getting things working again. At the end, I should be free of systemd; the real question is whether the getting rid of the bad parts will be worth the loss of the good parts. I’ll miss the tools, and the excellent job description files, and the non-root friendliness. I’ll miss NetworkManager, as much as I hate it for being slow and stupid and like a car you have to turn on-and-off 5 times before it starts – despite all that, nmcli is a great tool, and (again) very non-root user friendly, and I don’t know how connman will do.