Use systemd if you want. It’s not perfect, but nothing is. There are certainly good reasons to use systemd, including, but not limited to, that it’s the default on most distros and you don’t want to mess with init systems. My only complaint is that too much software and documentation is written with the expectation that you have systemd for no good reason, which makes it harder to leave, which makes more people stick with it, which is an excuse to neglect support for other init systems even more.
Yeah. That was my point. It’s a self fulfilling cycle of people using it because it’s all that’s supported, and it being all that’s supported because people use it. I think that is a problem. That’s the same reason most software is for Windows. I don’t think that’s a good reason.
You get a lot more transparency with the other init systems. Systemd is a big system that does lots of things and it’s not always possible to see everything it’s doing, because it’s doing a lot.
It also likes to hide things behind port redirections and binary storage of things that have always been text before so you pretty much have to use their tools to even read them
I assume there’s an advantage to the binary formats though. More efficient in terms of storage size? Easier to quickly search by a particular field even in huge files? Maybe something like that. (I genuinely don’t know)
I can actually understand what’s going on with other init systems. They’re basically just a list of stuff that gets run before you even log in. I do not understand everything that systemd does. I like understanding what my computer is doing. Most people don’t care about that, and there’s nothing wrong with that, but systemd is not what I want. I feel forced into using it anyway though, because it can be a lot of work to avoid it, and there’s no reason for that beyond the fact that not enough people care.
I get it. I’m in a small niche within a small niche. Nobody owes me an easy alternative to systemd. I’d still like one though.
Agreed. Was just looking at Podman’s documentation the other day, and even though it’ll run on distributions without systemd, for a second I thought cgroups might not even work without systemd. Glad that’s not the case though, but I’m predicting a few problems down the road simply because I plan to use Alpine.
Debian lets you switch and AFAIK it mostly works fine. They provide both sysvinit and runit as alternatives. Packages are only required to provide systemd units now, however a lot of core packages still provide sysvinit scripts, and Debian provides a package orphan-sysvinit-scripts that contains all the legacy sysvinit scripts that package maintianers have chosen to remove from their packages.
That’s just in the official repository, of course. Third-party repos can do whatever they want.
None of the others are as deeply integrated into everything as systemd, they pretty much just handle starting things up so dropping in a replacement should be fairly straightforward. At least, it was until everything switched to systemd. Which is probably my biggest issue with it: that it integrates to the point you can’t replace it anymore.
Honestly I don’t know. I just know that desktop environments and a lot of other packages have hard dependencies on Systemd, at least on Arch and Debian based systems. Those packages include: base, flatpak, polkit, xdg-desktop-portals, and vulkan-intel. So yeah, it’s nearly impossible to not break anything.
It’s not systemd doing all the things completely unrelated to system initialization that it does that I have a problem with. It’s systemd doing them worse than the existing tools that do those things that the systemd equivalents replace and Lennart Poettering being completely unable to fathom why anyone would ever want to use any piece of software other than his. systemd talks big game about being modular, but makes breaking changes to how those modules communicate without warning anyone, so if you dare to be a “systemd hater” as he calls them and replace one of those modules with an equivalent he isn’t involved with, Heaven help you when he breaks the API of systemd that they hook into and the developers of your equivalent scramble to implement the binary protocol he thought up yesterday so that their alternative continues to work.
I don’t want software on my system that is managed like that. It’s the same reason I prefer Firefox over anything Chromium based.
Borderline impossible if you aren’t using a distro designed with that in mind. Pretty much everything that isn’t a program you directly start (e.g. sound system, desktop environment, bluetooth daemon etc.) either only provide a systemd unit to start them (which you’ll have to manually translate into e.g. a shell script if you want it to work with your new init system) or is entirely reliant on systemd to function.
Your choices of distro if you don’t want systemd are Debian, Void, Artix, and Gentoo, and afaik that’s about it.
Replacing components of the systemd suite (e.g. using connman or networkmanager instead of systemd-networkd) isn’t actually that bad as long as your DE has support for them, but replacing systemd itself is something you are building your entire system around.
It still leaves sysvinit as an option. Debian doesn’t lock you into systemd. Heck, it doesn’t even lock you into Linux – you can use Debian on top of the FreeBSD kernel if you so desire
Lennart Poettering being completely unable to fathom why anyone would ever want to use any piece of software other than his
What’s behind this? I’m sure it’s definitely not 100 % a single guy working on systemd, and tbh hating software because of the person who wrote it seems rather silly.
And what about those API changes you mentioned? Genuinely curious, I thought it always at least mentions them in release notes during betas.
You can look up Lennart Poettering yourself, but he was also involved in PulseAudio which if you learned Linux in the 00’s might give you pause, and has had some minor beef with Linus Torvalds before. His Wikipedia page has something like 5 paragraphs for controversies and 2 for his actual career.
I think focusing on him is a mistake, but I also understand people who were still mad about PulseAudio latching on to him if they also had issues with Systemd. This article goes into some of it, but I can’t vouch fully for its accuracy. I will say that the dates of 2008 for PulseAudio’s release and 2012ish for when it became actually fairly functional lines up pretty roughly with my own memory, and systemd was released in 2010 and adopted by Arch and Debian in early 2012, so PulseAudio was barely fixed before the same developer started pushing Systemd, and succeeded in getting the normally very conservative Debian developers on board.
It appears I was mistaken – systemd does announce changes to internal interfaces on their mailing list although I can’t be bothered to find out how much warning they give – but I believe my point stands. Regardless of whether he gives adequate warning, he’s still very much a dick about it (“gentoo users, this is your wakeup call”) and he still seems to be doing the embrace-extend-extinguish thing. It used to be possible to run systemd-logind without systemd – it no longer is – and that mail I just linked is about making udev hard dependent as well.
Of course Poettering does not do all the development himself, but he does lead the project and it is his hubris and inability to accept that one size does not fit all that is responsible for the project being as hostile to outside implementations as it is.
Again, it’s not the systemd project making alternatives to widely used applications and daemons (or even bringing development of those applications under the systemd umbrella) that I mind. It’s Poettering’s “my way or the highway” attitude and apparent belief that if your system is not either 0% systemd or 100% systemd then you do not deserve to have a system that works.
I think it would not actually be easy to test this. The massive combinations of hardware and software configurations in use out in the world make it nearly impossible to conclusively say one way or the other.
For instance consider the hypothetical of a service with a bug that increases its startup in certain circumstances. If Systemd triggered this bug and OpenRC didn’t because of some default setting in each, perhaps a timeout setting, would you say OpenRC is conclusively better at start up time? Not really, they just got lucky that their default bypassed someone elses bug. Just off the top of my head other things that would probably cause hell in comparisons are disk access speeds, RAM bottlenecks, network load, CPU and GPU temp and performance etc.
You can perhaps test for specific use cases and sets of services, but I think this is more useful for improving each init system than it is as a comparison between them.
Is boot time that much of an issue besides for arbitrary competitive reasons? I haven’t tried any optimizations and boot time on my headless server is less than two seconds.
It comes in handy for people who wants to run Linux on their notebook without being an engineer and look at Mac users with envy because of their “ready to work” time on their macbooks of 1-2 seconds after they open the lid.
Fun. You can dick around with your init scripts without having to worry about the right triggers or spawn classes or anything. Your system is hackable with bash. Systemd: here are a list of approved keywords, don’t insert that there, why are using cron when you can use me?
oh, you haven’t seen nothing yet. you know the lisp-y, hackable goodness you get in emacs? what if an init system was that hackable, and configured with a lisp? go give GNU shepherd a try.
Systemd, as a replacement init system, is fine-ish. It’s sometimes slow and when it decides a service is lost there’s not much to do aside from killing the thing and restarting it.
Systemd, the full blown ecosystem that wants to replace literally everything by systemd-thesamethingasbeforebutfromscratch however, invites scepticism, especially when there are no particular flaws in the existing versions of things. DNS resolution, DHCP clients, NTP sync, etc. worked perfectly well.
From reading all of these comments, I think I have to agree. It seems like systemd as “the tool” is ok (I know there’s some argument there too), but systemd as the project and ecosystem seems to go a bit against the soul of GNU and Unix.
Can someone persuade me to not use systemd without using the word ‘bloat?’
Use systemd if you want. It’s not perfect, but nothing is. There are certainly good reasons to use systemd, including, but not limited to, that it’s the default on most distros and you don’t want to mess with init systems. My only complaint is that too much software and documentation is written with the expectation that you have systemd for no good reason, which makes it harder to leave, which makes more people stick with it, which is an excuse to neglect support for other init systems even more.
I think the reason is that almost everyone uses systemd
Kind of circular reasoning
Circles are superior geometric forms. Peak design!
https://youtu.be/thOifuHs6eY
Here is an alternative Piped link(s):
https://piped.video/thOifuHs6eY
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I’m open-source; check me out at GitHub.
I’m not sure if this counts as reasoning, more like they just feed each other, with all starting from the original lack of documentation
That just sounds like a reason to not bother supporting Linux, when Windows is so much more popular
Yes that’s what lots of companies/people do
Yeah. That was my point. It’s a self fulfilling cycle of people using it because it’s all that’s supported, and it being all that’s supported because people use it. I think that is a problem. That’s the same reason most software is for Windows. I don’t think that’s a good reason.
My question was just curiosity. If there’s a good reason to switch to something else, I’d like to know, you know?
You get a lot more transparency with the other init systems. Systemd is a big system that does lots of things and it’s not always possible to see everything it’s doing, because it’s doing a lot.
It also likes to hide things behind port redirections and binary storage of things that have always been text before so you pretty much have to use their tools to even read them
I assume there’s an advantage to the binary formats though. More efficient in terms of storage size? Easier to quickly search by a particular field even in huge files? Maybe something like that. (I genuinely don’t know)
“Lennart just thinks they’re neat.”
I can actually understand what’s going on with other init systems. They’re basically just a list of stuff that gets run before you even log in. I do not understand everything that systemd does. I like understanding what my computer is doing. Most people don’t care about that, and there’s nothing wrong with that, but systemd is not what I want. I feel forced into using it anyway though, because it can be a lot of work to avoid it, and there’s no reason for that beyond the fact that not enough people care.
I get it. I’m in a small niche within a small niche. Nobody owes me an easy alternative to systemd. I’d still like one though.
Exactly. Other systems are clearly doing one thing: init. Systemd wants to do everything
Agreed. Was just looking at Podman’s documentation the other day, and even though it’ll run on distributions without systemd, for a second I thought cgroups might not even work without systemd. Glad that’s not the case though, but I’m predicting a few problems down the road simply because I plan to use Alpine.
If you try to switch a distro that’s already using Systemd to some other init system, you’ll have so many broken things to fix!
deleted by creator
I was just trying to make fun of how hard it is to replace Systemd. I am still gonna make the switch when I get some free time.
Debian lets you switch and AFAIK it mostly works fine. They provide both sysvinit and runit as alternatives. Packages are only required to provide systemd units now, however a lot of core packages still provide sysvinit scripts, and Debian provides a package
orphan-sysvinit-scripts
that contains all the legacy sysvinit scripts that package maintianers have chosen to remove from their packages.That’s just in the official repository, of course. Third-party repos can do whatever they want.
Ah ok. Is that different for runit or the other typical alternatives?
None of the others are as deeply integrated into everything as systemd, they pretty much just handle starting things up so dropping in a replacement should be fairly straightforward. At least, it was until everything switched to systemd. Which is probably my biggest issue with it: that it integrates to the point you can’t replace it anymore.
Honestly I don’t know. I just know that desktop environments and a lot of other packages have hard dependencies on Systemd, at least on Arch and Debian based systems. Those packages include: base, flatpak, polkit, xdg-desktop-portals, and vulkan-intel. So yeah, it’s nearly impossible to not break anything.
It’s not systemd doing all the things completely unrelated to system initialization that it does that I have a problem with. It’s systemd doing them worse than the existing tools that do those things that the systemd equivalents replace and Lennart Poettering being completely unable to fathom why anyone would ever want to use any piece of software other than his. systemd talks big game about being modular, but makes breaking changes to how those modules communicate without warning anyone, so if you dare to be a “systemd hater” as he calls them and replace one of those modules with an equivalent he isn’t involved with, Heaven help you when he breaks the API of systemd that they hook into and the developers of your equivalent scramble to implement the binary protocol he thought up yesterday so that their alternative continues to work.
I don’t want software on my system that is managed like that. It’s the same reason I prefer Firefox over anything Chromium based.
Is it difficult to replace systemd?
Borderline impossible if you aren’t using a distro designed with that in mind. Pretty much everything that isn’t a program you directly start (e.g. sound system, desktop environment, bluetooth daemon etc.) either only provide a systemd unit to start them (which you’ll have to manually translate into e.g. a shell script if you want it to work with your new init system) or is entirely reliant on systemd to function.
Your choices of distro if you don’t want systemd are Debian, Void, Artix, and Gentoo, and afaik that’s about it.
Replacing components of the systemd suite (e.g. using connman or networkmanager instead of systemd-networkd) isn’t actually that bad as long as your DE has support for them, but replacing systemd itself is something you are building your entire system around.
IIRC Debian was one of the first distros implementing systemd.
It still leaves sysvinit as an option. Debian doesn’t lock you into systemd. Heck, it doesn’t even lock you into Linux – you can use Debian on top of the FreeBSD kernel if you so desire
Extremely. When things like your DE starts being dependent on systemd, you don’t want to replace it.
I had posted about the monopoly that systemd has, and was down voted to oblivion.
What’s behind this? I’m sure it’s definitely not 100 % a single guy working on systemd, and tbh hating software because of the person who wrote it seems rather silly.
And what about those API changes you mentioned? Genuinely curious, I thought it always at least mentions them in release notes during betas.
You can look up Lennart Poettering yourself, but he was also involved in PulseAudio which if you learned Linux in the 00’s might give you pause, and has had some minor beef with Linus Torvalds before. His Wikipedia page has something like 5 paragraphs for controversies and 2 for his actual career.
I think focusing on him is a mistake, but I also understand people who were still mad about PulseAudio latching on to him if they also had issues with Systemd. This article goes into some of it, but I can’t vouch fully for its accuracy. I will say that the dates of 2008 for PulseAudio’s release and 2012ish for when it became actually fairly functional lines up pretty roughly with my own memory, and systemd was released in 2010 and adopted by Arch and Debian in early 2012, so PulseAudio was barely fixed before the same developer started pushing Systemd, and succeeded in getting the normally very conservative Debian developers on board.
https://linuxreviews.org/Lennart_Poettering#So_Much_Drama
that is such a great article. I can practically taste the edit warring.
It appears I was mistaken – systemd does announce changes to internal interfaces on their mailing list although I can’t be bothered to find out how much warning they give – but I believe my point stands. Regardless of whether he gives adequate warning, he’s still very much a dick about it (“gentoo users, this is your wakeup call”) and he still seems to be doing the embrace-extend-extinguish thing. It used to be possible to run systemd-logind without systemd – it no longer is – and that mail I just linked is about making udev hard dependent as well.
Of course Poettering does not do all the development himself, but he does lead the project and it is his hubris and inability to accept that one size does not fit all that is responsible for the project being as hostile to outside implementations as it is.
Again, it’s not the systemd project making alternatives to widely used applications and daemons (or even bringing development of those applications under the systemd umbrella) that I mind. It’s Poettering’s “my way or the highway” attitude and apparent belief that if your system is not either 0% systemd or 100% systemd then you do not deserve to have a system that works.
that was from 2014.
As a gentoo user, he can go eat some dicks, my system today runs just fine.
If you actually want a reason, then most people experience faster boot up times using runit instead of Systemd. I haven’t tried it yet though.
maybe if you ran systemd you wouldn’t have to boot up so often that actual boot times mattered that much.
I’m curious if there’s any quantitative evidence to show this.
There is none. It’s all conjecture or circumstantial.
I think it would be pretty easy to qualitatively test this
But then it wouldn’t fit the “systemd = devil” narrative if it was actually tested and found out to be false lol
I think it would not actually be easy to test this. The massive combinations of hardware and software configurations in use out in the world make it nearly impossible to conclusively say one way or the other.
For instance consider the hypothetical of a service with a bug that increases its startup in certain circumstances. If Systemd triggered this bug and OpenRC didn’t because of some default setting in each, perhaps a timeout setting, would you say OpenRC is conclusively better at start up time? Not really, they just got lucky that their default bypassed someone elses bug. Just off the top of my head other things that would probably cause hell in comparisons are disk access speeds, RAM bottlenecks, network load, CPU and GPU temp and performance etc.
You can perhaps test for specific use cases and sets of services, but I think this is more useful for improving each init system than it is as a comparison between them.
Is boot time that much of an issue besides for arbitrary competitive reasons? I haven’t tried any optimizations and boot time on my headless server is less than two seconds.
It comes in handy for people who wants to run Linux on their notebook without being an engineer and look at Mac users with envy because of their “ready to work” time on their macbooks of 1-2 seconds after they open the lid.
On a server, it solves nothing.
I maybe reboot my computer once a month. Why care?
Fun. You can dick around with your init scripts without having to worry about the right triggers or spawn classes or anything. Your system is hackable with bash. Systemd: here are a list of approved keywords, don’t insert that there, why are using cron when you can use me?
oh, you haven’t seen nothing yet. you know the lisp-y, hackable goodness you get in emacs? what if an init system was that hackable, and configured with a lisp? go give GNU shepherd a try.
I’m an avid GUIX user, is Shepherd already incorporated into it?
yes.
Systemd, as a replacement init system, is fine-ish. It’s sometimes slow and when it decides a service is lost there’s not much to do aside from killing the thing and restarting it.
Systemd, the full blown ecosystem that wants to replace literally everything by
systemd-thesamethingasbeforebutfromscratch
however, invites scepticism, especially when there are no particular flaws in the existing versions of things. DNS resolution, DHCP clients, NTP sync, etc. worked perfectly well.From reading all of these comments, I think I have to agree. It seems like systemd as “the tool” is ok (I know there’s some argument there too), but systemd as the project and ecosystem seems to go a bit against the soul of GNU and Unix.
“building codes.”
It’s like the rules systemd breaks except more noticeable when people have fucked around and now find out.
What rules?
Perhaps the most asinine reason I can give, I really like the color scheme and log design used in OpenRC, makes for a very nice init scroll of text
That’s a great reason! Why use a computer at all if you can’t look cool while you use it?
Easy:
Less Code in Kernelspace means safer OS
I want a Mikrokernel Linux. Maybe RedoxOS will be suitable.
Yeah! So it’s… uhh… overloaded…? There! Didn’t use bloat!