I use plasma, BTW
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.
for no good reason
I think the reason is that almost everyone uses systemd
Kind of circular reasoning
Circles are superior geometric forms. Peak design!
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)
deleted by creator
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.
Your choices of distro if you don’t want systemd are Debian, Void, Artix, and Gentoo, and afaik that’s about it.
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.
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.
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.
“gentoo users, this is your wakeup call”
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
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.
But then it wouldn’t fit the “systemd = devil” narrative if it was actually tested and found out to be false lol
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?
Easy:
Less Code in Kernelspace means safer OS
I want a Mikrokernel Linux. Maybe RedoxOS will be suitable.
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?
Yeah! So it’s… uhh… overloaded…? There! Didn’t use bloat!
I don’t care whether you use GNOME, KDE Plasma, Sway or Weston, as long as you use Wayland.
My Nvidia card says no to Wayland+KDE :( incredibly laggy and unresponsive ui
There’s a lot of improvements with Plasma 6 and NVIDIA 545 on my RTX 3060 Ti, so that’s something to look forward to.
It’s getting better for sure, but there are still a lot of issues for me (Plasma 5, Nvidia 545). I think I might stick with it for now until I run into some major dealbreaker for me. Right now I can only game without glitches if I limit my monitors refresh rate to 60hz and even then you will run into issues.
Fingers crossed gaming will be better in Wayland by the time Plasma 6 comes out
I wish it worked well on my system
I wish it worked well
on my system
While you blissfully ignore it, systemd is planning the downfall of humanity. Don’t fall for its lies.
Yes, very sad. Anyway.
I, for one, welcome our new systemd overlords…
Now I want to do some PRs for systemD.
The only correct take right here
systemd isn’t perfect, but it’s definitely a net plus for me when compared with older init system. In case anyone’s interested, this talk summarizes the key points pretty well: https://www.youtube.com/watch?v=o_AIw9bGogo
This was an excellent listen, thank you for the link. I had no idea what was involved in it when I started, nor the roles of initd and launchd before it and what systemd was trying to replace.
The funny thing is that the guy giving the talk, Benno Rice, is primarily FreeBSD/openRC and not Linux, so he seemed fairly agnostic in presenting the various sides, not just from Unix and then Linux but also from the Apple viewpoint, who have also been playing a kind of parallel but separate role in this.
Very cool. Not a beginner level talk, definitely, but there was nothing I couldn’t figure out coming from Windows/Mac tech. Really informative, thank you again.
You’re welcome, glad you liked it!
Here is an alternative Piped link(s):
https://www.piped.video/watch?v=o_AIw9bGogo
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I’m open-source; check me out at GitHub.
I’m from the era of untangling hacky init scripts from every flavour of Linux to get something to work or add something new. Systemd was like coming up for air.
That’s like saying “I drive drunk but it’s worked out really well for me”.
I am not interested in being preached at unless you have a workable alternative and a good reason why should I switch over.
I don’t even know what systemd is ☠️
It is between systemc and systeme
deleted by creator
Oversimplified: It’s the service that handles starting and stopping of other services, including starting them in the right order after boot. Many people hate it because of astrology and supersticion. Allegedly it’s “bloated”. But still it has become the standard on many (most?) distros, effectively replacing init.
I like init. It’s simple. I like systemd as well. It’s convenient. Beyond that i don’t have very strong feelings on the matter.
Also, see important answer by topinambour-rex.
I think the arguments against the “bloat” are not towards systemd as an init system, but rather are because systemd does so many things other than being an init system. I also don’t mind systemd, but I absolutely hate
systemd-resolved
. I do not want my init system to proxy DNS queries by setting my resolv.conf to 127.0.0.53. Just writesystemd-
and press tab, that’s “the bloat”. I’m not saying that the systemd devs should not develop any new tools, but why put them all inside one software package?systemd-homed
is cool, but useless for 99% of users. Same with enrolling FIDO2 tokens in a LUKS2 volume withsystemd-cryptenroll
. Far from useless or “bad”, but still bloat for an init system.Now that you mention it, I find systemd messing with my DNS settings incredibly annoying as well, so I can’t help but agree on that point. At this production system at work, when troubleshooting, I often need to alter DNS between local, local (in chroot), some other server in the same cluster, and a public one. This is done across several service restarts and the occasional reboot. Not being able to trust that resolv.conf remains as I left it is frustrating.
On the newest version of our production image, systemd-resolvd is disabled.
• systemd is an init system commonly used in distros like Linux Mint, Arch, Manjaro, Ubuntu, Debian, etc.
• init systems have a process id of 1 and manage services like a login manager, network, firewall service, etc.
• a process id is assigned to every process in a linux system.
the average user usually doesn’t worry about the init system, although more experienced/techy users may care about it.
Thank you, Callyral. I didn’t know either. But now I’m trying to learn Linux again after 30 years of not touching it, so this is helpful.
If I may ask an additional possibly stupid question (coming from Windows/Mac): as an init system in Linux, after you get past BIOS and POST at power up, is systemd also responsible for the initial OS software boot process (the “bootstrap” or Boot Manager in DOS/Windows) or is that another process altogether?
Or, asked another way, does systemd load the Linux kernel, and if not, what does?
Just so you know, I have no real skin in this game yet; I’m just trying to figure out where systemd starts and stops so that I can follow the [endless] debate, lol.
Or, asked another way, does systemd load the Linux kernel, and if not, what does?
Immediately after the BIOS/POST, the first thing that starts is the boot loader. This is usually a piece of software called GRUB. There’s a part of GRUB in the Master Boot Record on the drive, that the loads the rest of GRUB from /boot. /boot has to be a basic partition so that the MBR code can mount it, so for example if you use something a bit fancier (like LVM) then you’ll usually have a separate small ext2 or FAT partition just for /boot.
GRUB shows a list of available kernels, and other operating systems (if any are installed), based on a config in /boot.
Once you select a kernel to boot (or wait a few seconds for it to automatically choose the default option), it starts loading the kernel. There is a small disk image called the “initial ramdisk” in /boot, usually with a name like
initrd
orinitramfs
. This is a small ramdisk that contains all the drivers needed to mount your root partition - for example, drive drivers (NVMe, SATA, etc), file system drivers (ext4, ZFS, XFS, etc), LVM, RAID drivers if needed, and so on. If the root disk is on an NFS network share (not as common any more, but still doable), it also needs to contain network drivers for your network card. It also contains a few basic utilities, usually provided by BusyBox.Some Linux distros (such as Debian) build a custom initramfs, whereas others (like Fedora) have a generic one containing all possible drivers.
The initial ramdisk then mounts the root partition and hands control over to the Linux kernel, which starts actually booting the OS. The very first process the kernel starts running is the init process, which these days is usually systemd but can be a different one like sysvinit or runit.
Hope that helps :)
Okay, yeah. This makes much more sense now. I really appreciate it. I’ve been seeing the GRUB menu in LiveUSB boots but didn’t understand that it was part of the initial boot process for general Linux systems (for whatever reason I had it stuck in my head that it was just for USB booting). And you’ve placed systemd exactly where it makes sense to me as the init process for that OS.
That is extremely helpful. Thank you so much for taking the time to write the entire boot order, because it just got crystal clear for me. Much appreciated!
System deez nuts
I just use systemctl because I know how to use it and know all the ins and outs of any bullshit I might encounter. No way I’m switching. I like not being stumped on issues I can’t fix for weeks.
As an OpenRC user, Systemd is fine. I prefer openRC but I have systemd on my server and all its LXC containers and I have had no issues with it.
Ok, but listen, though, systemd is the embodiment of evil…
DE wars? Get off my lawn sonny, before I chastise you for using vim.
No need for a DE on Emacs OS.
Just a shame about the crappy text editor that comes with it :(
If you think the init wars are stupid, take a look at the FSF people’s (attempted) war against Libreboot and their absolute humiliation by the project leader..
To be fair, while it’s the Libreboot creator’s project and they can do whatever they want with it, I can see why people are upset that Libreboot has had the “Libre” in it’s name seemingly neglected.
The FSF is an ideological organisation. It’s important that they exist. It’s also important that pure free software exists. Pragmatism is also important, but without any purity, the “extreme” of software freedom gets watered down, and so the window of an “acceptable” amount of proprietary-ness shifts as a new, less hardline “extreme” takes it’s place, if that makes sense. We should be striving for full software freedom, even if it’s currently just a dream.
Libreboot was a pure libre software project. Now it isn’t. Originally, a fork called osboot was created with the new blob reduction policy. That was fine, because it was a different name that didn’t mislead (also because nobody knew osboot as the fully free BIOS replacement). Then that policy became Libreboot policy. Libreboot is no longer fully libre, despite it having been exactly that for it’s whole life. It had an established name as the fully free BIOS replacement. It was known for that. Hence the upset.
Also, I see Canoeboot as a success. Rowe seems to be doing it out of spite, but it’s achieved what the GNU project wants. It has successfully pushed Rowe to at least provide some sort of fully free release again.
I agree with your point on the necessity of FSF and pure free software. Your comment seems to describe pretty well the Overton Window
Wtf, I didn’t know that Libreboot wasn’t fully libre any more. I agree with the FSF’s ideology here. The only reason to run Libreboot over Coreboot was 100% FOSS, and if that’s not the case, then there is no point to it anymore.
Thanks for mentioning the other projects, I’ll take a look
The point isn’t just pragmatism. The point is that you’re running closed source software either way. Even ideologically, running out of date closed source software because it’s built into the chip isn’t actually any better than running a current version of the same software from a drive. Maybe that distinction made sense in the 90s when mircocode updates weren’t a thing most people dealt with, although honestly even back then it was a little weird. Now it’s complete garbage. The FSF is an important organization, which makes it all the more important to call them out when they’re wasting time and money on stupid nonsense.
Yeah, I wish someone released software to my exact requirements out of spite. They can release it out of race hate if they like
Here is an alternative Piped link(s):
their absolute humiliation by the project leader.
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I’m open-source; check me out at GitHub.
I just use whatever that does the job. Sometimes I switch to systemd free distros just to know what it’s like (currently checking out dinit version of Artix)
I think most of the discrimination arises from a way of thinking which puts minimalism, simplicity and speed as the first priority and starts a unhealthy obsession over it. Sometimes keeping things too minimal can require more work than doing the actual work. This can also be seen in people who rave about WMs vs DEs and Wayland vs X.
Oh and I use XFCE btw. I feel like that’s the DE which gives me enough control over everything while not bombarding me with a truck ton of settings. I started using DEs again because I was spending all my time ricing away with window managers (and none of my rices were not even that good).
I sure love
journalctl -u
taking five second to give me ten lines of logs. Which I have to use because older, more robust services got replaced by default and the replacements got tightly integrated into everything else making it a pain to switch back, AND these replacement exhibits all the flaws that were fixed in older solutions.Granted, this will only improve going forward, but why reinvent everything just to put
systemd-
in front of the name.It works instantly for me actually. Looks like a skill issue.
That’s actually a fair point, though I still think systemd does it in a way that’s both too obfuscated and too proprietary, which preferences tying everything to itself rather than being able to work alongside and integrate smoothly with other tools that already exist.
It feels a bit like change for change sake at times… I know there are underlying reasons, but it breaks too many of the core philosophies of *NIX for my taste
I love being bombarded by a truck ton of settings, that’s why I’ve been exclusively on KDE for years. Settings are awesome!
You do you. No offence to KDE, I just prefer gtk over qt. Xfce has been my fallback desktop for a long time. So maybe I got attached to it.
At the level I care about, which is “I want this daemon to start when I boot up the computer”, systemd is much better. I can write a ~5 line unit file that will do exactly that, and I’ll be done.
With init, I needed to copy-paste a 50-line shell script that I don’t really understand except that a lot of it seemed to be concerned with pid files. Honestly, I fail to see how that’s better…
Yeah, that does sound better. What are the arguments for init?
The only arguments against I have seen so for is systemd does a lot more than just handing system startup (
systemd-resolved
is one such example) and files that was previously stored as text now require systemd’s own tool to read (journalctl
?).So not the actual startup function, just everything else.
Mmm I have a general dislike of systemd because it doesn’t adhere to the “do one thing and do it well” approach of traditional Unix systems.
It’s a big old opaque blob of software components that work nicely together but don’t play well with others, basically.
Edit: but it solved a particular set of problems in serverspace and it’s bled over to the consumer Linux side of things and generally I’m ok with it if it simplifies things for people. I just don’t want a monoculture to spring up and take root across all of Linux as monocultures aren’t great for innovation or security.
Based on the video someone posted, it’s not very portable either.
I feel that little part of my brain that wants to add yet another standard itching. Easily starting something at boot is good, but I don’t see why that has to come with loss of modularity.
Afaik they don’t care about being portable to instead focus as much as possible on being fast and whatever
Ubuntu btw
I also want to use my computer and not think about init systems. That’s a large part of the reason why I don’t like systemd.
Personally, I’m a fan of my init system starting things up and not getting involved in literally every other part of my system beyond that