this post was submitted on 29 Jun 2023
144 points (96.2% liked)

Linux

50790 readers
1199 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

SystemD is blamed for long boot times and being heavy and bloated on resources. I tried OpenRC and Runit on real hardware (Ryzen 5000-series laptop) for week each and saw only 1 second faster boot time.

I'm old enough to remember plymouth.service (graphical image) being the most slowest service on boot in Ubuntu 16.04 and 18.04. But I don't see that as an issue anymore. I don't have a graphical systemD boot on my Arch but I installed Fedora Sericea and it actually boots faster than my Arch despite the plymouth (or whatever they call it nowadays).

My 2 questions:

  1. Is the current SystemD rant derived from years ago (while they've improved a lot)?
  2. Should Linux community rant about bigger problems such as Wayland related things not ready for current needs of normies?
(page 2) 50 comments
sorted by: hot top controversial new old
[–] [email protected] 4 points 2 years ago

SystemD is blamed for long boot times

That is and always was nonsense. Systemd shortens boot times by starting things in parallel. That's one of its key features.

There are some things to note about that:

Systemd only starts services in parallel when it isn't told otherwise by Before and/or After settings in the service files. This makes it pretty easy to make systemd slow by misconfiguring it. You can use the systemd-analyze program to see which services held up your boot.

Systemd has a very long default timeout (90 seconds) for starting or stopping a service. It's appropriate for the big, lumbering servers that systemd was probably designed for, but it might be wise to shorten the timeout on desktops, where a service taking more than 5 seconds to start is almost certainly broken. It's a setting in /etc/systemd/system.conf.

Is the current SystemD rant derived from years ago (while they’ve improved a lot)?

I'm an early adopter of systemd. I installed it on my Debian desktops pretty much as soon as it was available in Debian, and I later started moving servers to it as well. I had long been jealous of Windows NT's service manager, and systemd is exactly what I had hoped would come to Linux one day.

Yes, the rant you're talking about is old, and yes, systemd is better now than it was then, but not in the sense of what the rant was complaining about. The rant was already patent nonsense when it was written, which has given me a very dim view of the anti-systemd crowd.

Besides systemd proper, they also spent a lot of time ranting about the journal system, which redirects syslog entries into a set of binary log files. They complained that this would make logs impossible to read in emergencies. This isn't even close to being true—any emergency bootable Linux image worth its salt has a copy of journalctl on it—and the binary nature of systemd's logs has caused me serious problems on exactly zero occasions.

[–] [email protected] 4 points 2 years ago (8 children)

As service manager systemd nice, but look all services:

systemd + systemd/journal + systemd/Timers
systemd-boot
systemd-creds
systemd-cryptenroll
systemd-firstboot
systemd-home
systemd-logind
systemd-networkd
systemd-nspawn
systemd-resolved
systemd-stub
systemd-sysusers
systemd-timesyncd

That's look as overkill. I use only systemd, journald, systemd-boot, systemd-networkd, systemd-resolved and systemd-timesyncd, but that a lot systemd. Feel like system make monolith.

systemd-nspawn for example. Systems manager for containers. Seriously. Why than exists? I don't understand. Really, someone use that daemon?

[–] [email protected] 4 points 2 years ago (2 children)

How you would replace those in non-SystemD setup? Asking for learning purposes.

[–] [email protected] 4 points 2 years ago (2 children)

In fact, this is a difficult question.

In Linux, it is usually customary to use the K.I.S.S. methodology, In any case, it was once customary to use it. This in some way meant that there were a huge number of applications performing exactly one task. For example, chron only started timers, ntpd only adjusted the time, grub only loaded the system and nothing else. It also allowed you to change the components at your discretion. With systemd this principle was somewhat lost, since one service with a huge number of its own daemons absorbs more and more functions. This is what causes concern. In some sense, if systemd at some point becomes even more monolithic, it will no longer be possible to change only part of its functionality. For example, I'm not sure if it's possible to disable journald and leave only rsyslog.

On the other hand, the now-forgotten init.V fully adhered to the principle of K.I.S.S. since he was literally the initiator of a set of scripts that could contain anything. If you want, change the user at startup via exec, if you want via su. Isolate the application with any available program. It was as flexible as possible, but on the other hand, the entry threshold was quite high. The complexity of writing scripts for init.V was much higher than systemd.

Therefore, there is no single answer. On the one hand, init.V have maximum modularity, on the other hand, systemd have ease of use.

[–] [email protected] 3 points 2 years ago (3 children)

Sys V init systems were really not K.I.S.S. since it was anything but simple to write an init script in a way that worked without e.g. having the environment of the calling user leak into your script and influence its behaviour or breaking things when called by the wrong user,... Not to mention all the re-implementations of the same functionality and the difficulty of writing an init script that worked on more than one exact OS, distro and version.

load more comments (3 replies)
load more comments (1 replies)
[–] [email protected] 3 points 2 years ago* (last edited 2 years ago)

or maybe I didn't understand the question. If you about that change daemons to non systemd, then:

systemd-boot -> grub, lilo, efistub

systemd-networkd -> some system scripts (different for different distributions), netplan, NetworkManager

systemd-resolved -> dnsmasq, bind, set directly on 8.8.8.8

systemd-timesyncd -> chrony, ntp

journal -> rsyslog

systemd -> init.V, openRC

[–] [email protected] 3 points 2 years ago (1 children)

AFAIK, nspawn is mostly a debugging tool for working with the init system without having to actually boot a live system/VM. At least that's all I've ever used it for.

[–] [email protected] 2 points 2 years ago* (last edited 2 years ago)

It also a use case. =)

The documentation for systemd-nspawn itself says:

systemd-nspawn — Spawn a command or OS in a light-weight container

The developers themselves position the daemon as a simple alternative to LXD containers.

load more comments (6 replies)
[–] [email protected] 3 points 2 years ago

I am for most part quite happy with it. For all the complexity it brings, it also allows you to do a lot of stuff easily and reliable that would have been a nightmare with previous systems.

My biggest nitpick is that some commands are needlessly obtuse, e.g. trying to find an error message in journalctl is a mess when you aren't already deeply familiar with the tool. It will show you messages that are months old by default, will give exactly the same output for typos in the unit name as it will for no error messages and other little things like that.

[–] [email protected] 3 points 2 years ago (1 children)

I go crazy over boot times, systems is faster on every machine I’ve tried it on. The biggest difference I’ve seen is replacing grub, both systems-boot and car-boot seem to shave off a decent amount.

[–] [email protected] 4 points 2 years ago

systemd-boot vs. GRUB should make no appreciable difference other than default timeouts and those are configurable.

[–] lightrush 3 points 2 years ago
  1. Is the current SystemD rant derived from years ago (while they’ve improved a lot)?

No it's almost always been derived from people's behinds.

  1. Should Linux community rant about bigger problems such as Wayland related things not ready for current needs of normies?

Yes.

Systemd is spectacular in many ways. Every modern OS has a process management system that can handle dependencies, schedule, manage restarts via policy and a lot more. Systemd is pretty sophisticated on that front. I've been able to get it to manage countless services in many environments with great success and few lines of code.

[–] [email protected] 3 points 2 years ago (2 children)

I'm honestly a big fan. Systemd-init has tons of options like run targets, sandbox options, users you want things to run as, etc. System-oomd has tons of qol stuff for desktop users to help with stutter and responsiveness. I am also kind of excited for UKI that systemd-boot is set to support.

load more comments (2 replies)
[–] [email protected] 2 points 2 years ago

I make plymouth do the verbose mode because it's cool and hacker-y. Also I like when it says "failed" and I know what failed. For a few weeks I kept having to manually start firewalld and I never would have known otherwise, update seems to have fixed that though.

Tbf, I really only have experience with fedora and thus systemd, so, I like it but I "don't know what I'm missing" in a sense.

[–] [email protected] 2 points 2 years ago

As a guy that's been installing Linux since you had to compile network drivers and adjust the init scripts to use them; SystemD rocks.

[–] [email protected] 2 points 2 years ago* (last edited 2 years ago)

Yes. Yes it is. systemd isn't bad for boot times, but more for tying so many goddamn things to init, PID1, creating just about the best attack point one could ever ask for. Wayland not being ready can be solved by not using it for the time being. Just use X. Also, it's still called plymouth.

[–] [email protected] 1 points 2 years ago

I can't like it bc its complicated.

I am on Guix works great with shepherd.

load more comments
view more: ‹ prev next ›