From just a purely end-user perspective, systemd is an application that I’ve come to like a lot. And I think that its adoption by all Linux distributions will make it easier to manage Linux systems.
But it has come under heavy criticism from some quarters – for trying to be a Swiss-army-knife-type application. One that does practically anything and everything, which the critics claim is against the UNIX/Linux philosophy of coding an application to do one thing and do it well.
For those who are not yet familiar with systemd, here’s a short and to-the-point description of that it is:
systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux control groups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. It can work as a drop-in replacement for sysvinit.
To the critics, all those capabilities are exactly the problem with systemd. And they feel so strongly about their position that they set up a website where they listed all the ills of systemd. And I must say that many of the points they list on that website make sense. Here’s the first one:
systemd flies in the face of the Unix philosophy: “do one thing and do it well,” representing a complex collection of dozens of tightly coupled binaries1. Its responsibilities grossly exceed that of an init system, as it goes on to handle power management, device management, mount points, cron, disk encryption, socket API/inetd, syslog, network configuration, login/session management, readahead, GPT partition discovery, container registration, hostname/locale/time management, and other things. Keep it simple, stupid.
That makes sense, if you think about it and what could go wrong. Here’s another point:
systemd doesn’t even know what the fuck it wants to be. It is variously referred to as a “system daemon” or a “basic userspace building block to make an OS from”, both of which are highly ambiguous. It engulfs functionality that variously belonged to util-linux, wireless tools, syslog and other projects. It has no clear direction, other than the whims of the developers themselves. Ironically, despite aiming to standardize Linux distributions, it itself has no clear standard, and is perpetually rolling.
I’m really not sure where I stand on that, because I really don’t mind having an application that does a bunch of stuff, provided it does them well. One question I have is this: If the guys behind http://boycottsystemd.org/ are right, and I’m not sure whether they are or not, even though some of the issues they raise make sense, why did the people responsible for the development of the major Linux distributions accept it as a replacement for old init system?
By the way, systemd is the default on Fedora and will be in Ubuntu and Debian by the next major release of those distributions.
I have been using GNU/Linux since 2005.
For me to see the prompt back again waiting for a command in a terminal was really exciting.
I was really disappointed by MS Windows 9x/MS Dos/MS NT and how things were hidden and complicated for me (what for?).
The services and how to control them in Linux was so easy and simple that you had not to be worried if everything went wrong, you could open them, look inside and easily modify them or find a solution. Everything well documented with an exciting community writing good books.
Nowadays I tell one of my friends how Linux is good blah blah blah, so I convinced him to switch from MS to Ubuntu 14 .. whatever (the latest one). Everything is nice, I show him how the kernel is working better for some applications, how powerful etc..
Then I had the bad idea to install compiz (sudo apt-get …) because I wanted to show him how nice are desktop effects and how many WM you can have. Yes maybe I messed up with the packages but I am a *beep* user, I do what I want.
Well the system does NOT BOOT anymore, I repeat: IT DOES NOT BOOT because systemd is waiting for a service to start that never finishes. I have never seen Windows not booting after you install a userland application.
How do I debug systemd? What should I modify? I read the doc you can find on the internet but for me it is a bit .. undocumented. I am sorry I am just a user, not a Wizard. I may sound a bit rough, sorry, but I am a bit frustrated.
So now I see only 2 solutions for me: 1 CRUX 2. FreeBSD .. and my friend reinstall the OS (the Windows way).
I think that’s a factor of how systemd handles services that’s been discussed elsewhere. And I think it has been fixed in later releases.
Hi Finid,
thank you for the hint.
I cannot wait however for someone else to fix a binary or things I do not know because not easily accessible or understandable to me. upstart was definitively better in my opinion, I am just focusing on init task, the stuff that gives me control on MY machine. Systemd is a plethora of things.
I will not say systemd is good or bad, to remain in topic, but I am definitively biased toward bad. I know I lack a lot of knowledge about systemd, I watched slides (and read a lot of articles) RH showed to introduce systemd, time ago, and they were really interesting and funny but reality, for me, is what I described above.
I cannot imagine if such a problem would happen on a server in production. What do you do then when you search for help in duckduckgo and no one helps??
I’ll try to remain positive here and I will try to get a better knowledge but I am not really happy to use my free time on something where I really do not even understand the sense of such complicated system for a GNU/Linux distro ..
Cheers.
I’m not entirely sold on Systemd myself, but I’m just a user, not a distro dev, so there’s not much I can do here.
If you’re interested, there are a few distros that have not switched to Systemd, so you might want to take a look at those. Im not entirely certain, but I believe Gentoo is one. There’s a fork of Debian that also does not use Systemd.
At times like this, let Startpage.com be your best ally.
It manages deamons in every way, which means it will be easier to get things working. Instead of having runlevels, starting services one after another and having to use a pidfile for every application running, it is much more flexible in when to run what. People who are against systemd are just stuck in the past.