6 ms·
Systemd, 10 years later: a historical and technical retrospective (2020)
- dijit 2y agoSSL. certificate expired
- throwway120385 2y agoTLS still works though.
- abnry 2y agoI still haven't fully grasped the Systemd drama, or systemd for that matter, but boy do I love it. I enjoy how Linux has those turf wars nobody outside of it knows about.
- jandrese 2y agoSystemD is great when it works, which is most of the time. But when it breaks or you have to do something that SystemD doesn't support it becomes an enormous pain in the ass. It's like being back in Windows land again. Some DBus message is not appearing and it stalls out your boot process, finding where it was supposed to come from and why it didn't appear is a nightmare. If you want to use a different daemon than the one SystemD provides for some service it will fight you every step of the way, sometimes even undoing whatever you had to do to make the process work in a random update. As someone who experiments with weird networking stuff from time to time I've been kicked in the nuts by NetworkManager on several occasions.
- tuatoru 2y agoYah, Networkmanager is a rootkit.
- sophacles 2y ago> As someone who experiments with weird networking stuff from time to time I've been kicked in the nuts by NetworkManager on several occasions. nit: NetworkManager is not the one provided by systemd in the first place - that's systemd-networkd. That aside I do wierd networking stuff for a living and here's how I see the available tooling: * NetworkManager - great for a laptop where you're moving between networks and don't need anything too fancy. * systemd-networkd - great for servers and other mostly static networking setups, even weird ones. * If you're doing anything weird dynamically (e.g. experimenting) - disable the above or move the interfaces you are experimenting on to a fresh netns and do everything by hand with the ip command (and maybe udchpc or dhclient if you need a dhcp client, but be aware of how to write your own callback scripts for how to handle various associated events).
- creshal 2y agoNow for the weird part: Redhat wrote both NM and sd-nd, and decided what servers really need is NM by default, and getting a server to actually use sd-nd is like pulling teeth on RHEL. Completely baffling.
- ChocolateGod 2y agoNetworkManager can read old style sysconfig network configuration, which is still used to this very day even if Red Hat wishes you wouldn't, and you really shouldn't.
- sophacles 2y agoI don't know why Redhat would do that, but I've never used RHEL - I quit the redhat and derivatives in the 90's due to rpm hell, and never looked back.
- creshal 2y agoA new job forced me to get intimately familiar with how fractally dysfunctional RHEL and derivatives still are, and the only thing more baffling than Redhat's self-sabotaging decision making process is why anyone would voluntarily use it. I hope we can finish the Debian migration soon.
- pdw 2y agoI know this is a completely unimportant tangent. But I'm always amused that systemd skeptics insist on the "SystemD" spelling. Where does that come from? I never see anybody talk about NtpD, InetD or VsftpD. But somehow systemd needs to be SystemD. As I said, amusing.
- Analemma_ 2y agoI'm pretty sure it's just ingroup signaling: it's not the only example of "spelling something wrong because you really hate it". For years I've seen people on forums who want to show their dislike say "MAC" instead of "Mac", "MicroSoft" and so on.
- ssl-3 2y agoIn what way is strange capitalization of a technical word usement indicative specifically of hate within a group of haters? And what does this mean of the amateur radio operators who call themselves HAMs?
- philistine 2y agoWell if people are unhappy about MAC adresses on Macs, that's their perogative.
- Enginerrrd 2y agoHere's one for you: I can't remember the exact details, but I was trying to get do something with a samba share folder via systemd unit file and the way systemd handles the escape characters used by the samba client was not compatible for windows network shares that used spaces in the name.
- hi-v-rocknroll 2y agoBecause it completely violates the UNIX philosophy and mission creeps into taking over essentially every part of the system. It was shoved down the throats of every user because the major distros kowtowed to a FOSS diva with a spotty track record, creating a monoculture built on awfulness and bloat.
- 7bit 2y agoI appreciated it. I fucking hated all these init scripts and find it muuuuuch easier to get services running under systemd. I don't care about philosophy when it gets in my way of managing systems.
- palata 2y agoHad it not been for the philosophy, Linux would not have been a thing. If you don't care about philosophy, consider going to Windows?
- ranger207 2y agoI seem to remember a lot of debates on whether or not Linux followed that philosophy compared to a microkernel
- lmm 2y agoProbably less than it might. I expect microkernels to eventually displace Linux, whether explicitly or by gradually turning Linux into a microkernel.
- qu4z-2 2y agoWhy would they have to go to Windows when systemd is bringing Windows to Linux?
- mariusor 2y ago> Had it not been for the philosophy, Linux would not have been a thing I'm not entirely sure what you mean by this, but linux (the kernel) is very much not a "do one thing and do it well" kind of program. You'd need a microkernel for that.
- SahAssar 2y agohttps://www.youtube.com/watch?v=o_AIw9bGogo https://www.youtube.com/watch?v=o_AIw9bGogo (The Tragedy of systemd) is an interesting talk on this topic from the view of someone (Benno Rice) in BSD land. Highly recommended. EDIT: this is mentioned in the article, thanks koalacola
- koalacola 2y agoIt's all in the article.
- SahAssar 2y agoAh, sorry. I commented on the topic before reading the article.
- pxc 2y agoI'll second this recommendation! Benno Rice is an insightful, energetic, witty, and just plain enjoyable tech speaker. 'What UNIX Cost Us'[1] is another favorite of mine that the audience on this post might enjoy: https://www.youtube.com/watch?v=9-IWMbJXoLM https://www.youtube.com/watch?v=9-IWMbJXoLM
- Xenoamorphous 2y agoApologies for the off topic comment but found very funny that the autogenerated subtitles for the video had “eunuchs” for UNIX.
- FelipeCortez 2y agonot exactly a coincidence, as the name is meant to imply that it is a castrated version of Multics :)
- felbane 2y agoThank you for the first genuine laugh I've had all day.
- 2y ago
- walterbell 2y agohttps://archive.is/FMfu4 https://archive.is/FMfu4 > Perhaps as BPF subsumes Linux into making it a managed-runtime hybrid kernel with subsystems becoming increasingly componentized and instrumented (with early signs in the proposal to add Linux Security Module hooks to BPF programs), as pidfd/process descriptors allow for reliable supervision to be distributed across self-contained processes, as the native Linux mount API becomes more event-driven on its own, and as a generation of Rust fanatics in their undying religious zeal insist that all men are obligated to offer sacrifices to the borrow checker, a new shift may emerge where once again, the init system is made to cease mattering. Alpine, Devuan, Gentoo and other devs have kept init choice available.
- DiabloD3 2y ago*Debian. apt-get install sysvinit-core
- lmm 2y agoWhat good is being able to install sysvinit if it doesn't run your services? Debian killed first-class sysvinit, the downgrading of Debian/kFreeBSD is proof enough. (And more importantly it killed all other well-behaved cooperative init options - this isn't about systemd vs sysvinit, it's about systemd vs standards-based init systems that play nice)
- capitainenemo 2y agoDevuan is still an option.
- walterbell 2y agoIncluding Devuan on Arm!
- ChocolateGod 2y ago> Alpine, Devuan, Gentoo and other devs have kept init choice available. Nothing stopped anyone, including yourself, from modifying or forking a distro like Fedora to make it support non-systemd, it's just you can't expect others to do it for you.
- renewiltord 2y agoUnlucky. Posted to HN the day after SSL expired. You need to turn on certbot-auto to renew your LE cert. I recall the initial systemd stuff that was constantly posted etc. but now I routinely write unit files and it's really nice. I'm sure the constraints that systemd introduced were a pain in the ass for maintainers but for a user it's been tremendous. Admittedly, some times I just a service unit instead of a mount unit for FUSE and so on, and I still have trouble with `After` and `Before` and `Wants` but overall I rather like it. Now I have to go check what happened about PulseAudio which is the other Poettering work that everyone and their uncle hated (or maybe it was just Ulrich Drepper who hated systemd). It's funny to me that in the end, my teenage self was some sort of equivalent of a k-pop stan: applying Con Kolivas's scheduler patches, and choosing Poettering over Drepper or whatever. And now all that memory has faded but the names.
- deleted 2y ago[deleted]
- thequux 2y agoPulse was only really janky in the early years; by 2010 it was as solid as anything else in tech. Even then, it was absolutely an improvement over the previous system which either needed manual configuration per program to choose whether to use ALSA, OSS, EsoundD, or Arts with success of portaudio and other sound systems too keep things interesting. Even if you did get things working, I distinctly recall having to restart Firefox in order to play music because Firefox had the only available connection to the sound device.
- DaSHacka 2y ago> Pulse was only really janky in the early years; by 2010 it was as solid as anything else in tech. Then why was PipeWire introduced as a PulseAudio replacement, and why have so many people sung its praises? I think more people continued to have issues with Pulse for far longer than you realize.
- NekkoDroid 2y ago
- Spivak 2y agoReading the full history of all the attempts at modernizing sysv I really do think Lennart deserves all the credit for making a car when everyone else made faster horses. It's the true hacker spirit to look at problems with dizzying complexity and say, "eh give me a weekend." systemd really is a jewel of open source that did so many things right from the beginning that by the time it was done it made other hard problems outside of service management tractable.
- 7bit 2y agoMan I love systemd. Never has it been easier for me to setup a binary as a service. I dread the memories of customizing or writing init scripts and dependencies. I don't get all the hate, that primarily argues about the philosophy of Linux, when the philosophy made everything just harder..but I guess some people just want to suffer for their believes, mich like some Catholics
- palata 2y agoI hate that "modern" developers think Linux == Ubuntu and write software that only supports Ubuntu. Same thing for systemd. "But it is just harder to learn how to write proper software that would work on a machine slightly different than my own"...
- Spivak 2y agoWhat does "proper software" have to do with systemd? Sometimes upstream provides unit files but normally it's on the packager to provide the integration into your distro. I've seen some software depend on libsystemd for the sd_notify but I think after the whole security kerfuffle there won't be many of those anymore.
- chronid 2y agoThe "hate" was not about the philosophy of linux. It was about the udev/systemd maintainers writing "fuck you Gentoo developers" in a mailing list when they wanted udev to support only systemd, actually that udev should be part of systemd (for no real reason) and reimplementing things (sometimes badly for years) instead of reusing what was in place. It was about pretty big bugs (I remember a bug around coredumps being cut at ~700MB in size, which the systemd maintainers responded with the equivalend "well that's your problem not ours, journald is not fast enough and so we cut the max size" and was only closed eventually - ~3 years - probably because some RH customer screamed loudly enough). And the original discussions were even before systemd decided to hardcode what essentially is random IP addresses into resolved ("maintainers should change those values if they don't like them!") and other network services (NTP? I don't remember now anymore). It was about the billion libraries (later on there have been some security fun issues) it brought in and made your stuff link to (I vaguely remember something to parse qr codes?). It was about not-documented DBUS interfaces and making DBUS a core part of the system... Most complex services still had heavy, long prestart script written in bash anyway at that point in time even when using systemd, so the script complexity was not really gone (and I think postgresql for example still has something like that). Now, Redhat pushed hard for it and you cannot just ignore what they do and go your own way since the number of maintainers they employ is massive along the entire stack, from kernel to GNOME - Systemd was convenient to use and people went for it even with all the issues it had/has for good reasons (same as pulseaudio), but thinking the only discussion at the time was about the "linux philosophy" is a strawman and changing history a fair bit. :)
- floam 2y agoMaybe someone can fix this to point to http://blog.darknedgy.net/technology/2020/05/02/0/ http://blog.darknedgy.net/technology/2020/05/02/0/
- deleted 2y ago[deleted]
- ChrisArchitect 2y agoYou mean 14 years later? (2020) Discussion then: https://news.ycombinator.com/item?id=23204666 https://news.ycombinator.com/item?id=23204666
- zamadatix 2y agoSeems to have been (2020)'d the same instant you posted :).
- Dwedit 2y agoTrying to decide what the worst "systemd" story was... "systemd-tmpfiles --purge" deleting your /home directory was pretty bad.
- crest 2y agoThe funniest to watch was systemd deciding to kill user processes on "last logout" so it would happily kill your elected PostgreSQL cluster leader as soon as the last follower is done catching up the WAL via rsync (over SSH). It was the perfect whack-a-mole game, always killing the leader once the cluster healed. Obviously you had to mark any service user as a system account. How else could systemd purge left over processes (e.g. GNOME tracker and gvfsd)?!? You don't expect developers of the inevitable perfect Linux desktop to fix their code? No lets break the system and take down the well behaving applications with the fallout unless the operator knows (and has permission) to restore the old behaviour. Oh and I hope you didn't expect screen/tmux/dtach/nohup to work.
- Izkata 2y agoThis is one of the settings Ubuntu changes from the default, so I think a lot of people are unaware of it.
- pxc 2y agoFor those curious, loginctl enable-linger <user> will allow you to use systemd user services for users that are not logged in: https://manpages.org/loginctl https://manpages.org/loginctl If you're using systemd as a service manager (which you probably should do, if your hosts are running systemd?), you don't need the user running your services to be a system user. You can just have (either) your services launch from a systemwide systemd service, or make sure your user has lingering enabled if you're using systemd user services. If you're not using systemd to manage your application's services, you can still use the methods above if you just have systemd launch your process supervisor of choice (which you should definitely do if your hosts are running systemd and you're using some other process supervisor). If you want to leave user processes running when you've started them manually and no user session exists anymore, you can unset KillUserProcesses in logind.conf: https://www.man7.org/linux/man-pages/man5/logind.conf.5.html https://www.man7.org/linux/man-pages/man5/logind.conf.5.html
- cyberax 2y agoSystemd itself is a fine idea, but its maintainers and governance are not. They screwed up the libsystemd first by bringing tons of dependencies (including libxz), and then inventing a braindead delayed loading mechanism. That required adding custom ELF sections. It's funny that they used "macOS does this!" as an argument for the delayed loading, when in reality macOS removed that functionality about a decade ago (for being braindead). While all they needed to do was simply split libsystemd into two libraries.
- NekkoDroid 2y ago> and then inventing a braindead delayed loading mechanism. That required adding custom ELF sections. What are you talking about??? dlopen is hardly a new "delayed loading mechanism" and having a custom ELF section where the dlopen'd libraries are listed is just a positive thing for package managers, so that it can be automatically detected during build just like used SO files (for writing the build metadata files).
- cyberax 2y ago> What are you talking about??? This: https://github.com/systemd/systemd/blob/main/docs/ELF_DLOPEN_METADATA.md https://github.com/systemd/systemd/blob/main/docs/ELF_DLOPEN... > dlopen is hardly a new "delayed loading mechanism" Yes, it's a well-known anti-pattern that libraries like glibc are trying to minimize. When your fuckup requires a change in the basic system architecture, you are probably doing it wrong. _All_ they needed to do was split libsystemd into libcoresystemd and libjournald. Only the latter requires libxz and other compressors.