systemd free

Way back in February of this year when I concluded my rant about systemd I said:

“Given that Ubuntu is tied closely to systemd and will be implementing the ridiculous systemd-homed.service shortly, and that Mint is based on Ubuntu and will perforce probably follow, I have now given up on Mint and moved to another distro which will not do so. In my next post I will discuss which distro, and why I chose it.”

Well, my apologies for the delay in writing this. All I can say is, “I’ve been busy”.

I am happy to say that my chosen distro has been MX Linux for over 9 months now (I completed my move to MX at the end of last year).

As to why, firstly it is important to understand that MX does not ship without systemd, rather it gives the user the choice to implement systemd as PID1 (init) if he/she chooses. By default though MX ships with SysVinit enabled. MX has in place an api “shim” which intercepts any/all calls to systemd from any running applications (such as Gnome) in order not to break those applications whose developers have been foolish enough to embed systemd dependencies.

Here is what the MX team themselves have to say about systemd:

“Systemd is an init & service manager, largely written by the developers of pulseaudio & udev. It is more integrated than prior init systems, and can better do parallel operations during startup. Its service manager and dbus implementation are integrated in the init system, so they all run under PID1 (the first program ID)

Obviously there are strong disagreements whether this is a good idea or not. Traditionally the init program running under PID1 was as small as possible so there was less that could go wrong which made your system unbootable. Also configuration files & log files from these processes were fairly simple text files for ease of troubleshooting. Systemd violates these traditions. Logs are binary files by default. Boot dependencies are taken care automatically instead of manually in config files. Arguably it adds functionality e.g. in better control of the state of services, and faster boot times because of the dependency optimization.

The systemd argument is largely an argument about the Unix philosophy:

Write programs that do one thing and do it well.
Write programs to work together.
Write programs to handle text streams, because that is a universal interface.

Some people feel that Systemd doesn’t follow that philosophy very well.

Finally, which init system to use is by no means an open and shut case for many people. For now, MX Linux still gives users the choice.”

I approve of systems which gives users choice. My choice is not to use systemd.

In a blog post in July 2019, the MX team said:

“There has been a lot of speculation and questions concerning if the next MX release would finally follow debian and move to systemd.

And of course, we did ask for help with porting systemd-shim over to MX-19’s debian-buster base system.

When we asked that question, a lot of people assumed that we wanted the shim to avoid using systemd. But most MX user’s know that MX has shipped with both systemd and sysVinit for years. The actual reason for requesting help with porting systemd-shim wasn’t to avoid systemd, but to keep it.”

In the discussion which followed many commenters seemed to completely misunderstand the MX dev’s position. This led “m_pav” to say:

“I don’t think you’re reading the post right and your understanding appears to be off the mark. MX Linux ships with systemd, but by default boots with sysvinit. If you’re using MX, then your machine has systemd installed, but it’s never loaded unless you explicitly choose it at the grub boot screen.

A simple way to explain our build is, systemd-shim provides a transport layer to systemd libraries so that certain apps that require systemd can operate in a non-systemd environment and the beauty of it all is, systemd is not active at all. It really is that simple.

Another way to look at it is, it’s like having an unsavory but necessary app installed that you never directly use. The unsavory app has useful libraries that provide not only the ability to operate, but also improved functions in many other popular apps. There is no need to directly use the unsavory app because the other apps which depend on it use only what they need, which is provided through the “shim” we provide called systemd-shim. To sum it all up, having the unsavory systemd installed is not only necessary, but it’s actually a benefit for those who prefer sysvinit, not an encumberance.”

Further, on the “About us” page on the MX site they say:

“Our Positions

Systemd

Because the use of systemd as a system and service manager has been controversial, we want to be clear about its function in MX Linux. Systemd is included by default but not enabled. You can scan your MX system and discover files bearing systemd* names, but those simply provide a compatibility hook/entrypoint when needed.

MX Linux uses systemd-shim, which emulates the systemd functions that are required to run the helpers without actually using the init service. This means that SvsVinit remains the default init yet MX Linux can use crucial Debian packages that have systemd dependencies such as CUPS and Network Manager. This approach also allows the user to retain the ability to choose his/her preferred init on the boot screen (GRUB). For details, see the MX/antiX Wiki.

Non-free software

MX Linux is fundamentally user-oriented, so includes a certain amount of non-free software to assure that the system works out of the box as much as possible.”

So MX most categorically does not exclude systemd. It is there if you want it. Most users seem not to want it though because MX has been number one on the distrowatch page ranking for some time now. I think that this may be in no small part due to the fact that MX comes top in the specific distrowatch search for distributions where init is “not systemd.

OK, so if I am so anti systemd why did I choose a distribution which still includes it, albeit inactive and including an api shim to mimic systemd where needed? Why not be purist and use say devuan or NuTyx or one of the many BSD distros? Simple really, I’m a pragmatist. Part of the answer can be seen in the MX dev team’s comment above about non-free software where they say:

“MX Linux is fundamentally user-oriented, so includes a certain amount of non-free software to assure that the system works out of the box as much as possible.”

I tried several distros before settling on MX. MX gives me the freedom from systemd that I want, whilst still allowing me to use the desktop I want (MATE) and all the applications I want and need and have become accustomed to using over the years. Devuan for example has all the painful aggravation (common to debian as well) of having to find and install the libdvd packages and all the codecs required for multimedia on the desktop. It also ships with a non-standard firefox (not the mozilla-binary version) which means that you cannot just port over your existing home directory structure including the mozilla sub-directories and configuration files. That is just a pain. MX has a superb set of MX-specific tools which can ease the transition from your old distro – so installing codecs is simple for example. I am also a huge fan of the apt package manager so any distro without that will immediately suffer. Moving to a BSD would have been a step too far when I have been a linux user for well over 20 years. I know where things are in a linux distro. BSD distros look and feel too old fashioned and just plain wierd in places. A bit like my recent move to riding an automatic motorcycle (actually a Honda CMX1100 DCT) my “muscle memory” gets confused by the lack of certain controls and the movement of others. Maybe I’m getting old (indisputably) but I like to know where things are on my desktop.

Give MX a try if you haven’t already. I think you may like it.

Permanent link to this article: https://baldric.net/2022/10/09/systemd-free/