this post was submitted on 04 Jan 2024
-78 points (21.7% liked)

Linux

48310 readers
645 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-init has a larger attack surface compared to runit, openrc, or sysVinit.

  • Systemd-logind relies on systemd, so we need to adapt it for non-systemD distributions to ensure compatibility with certain applications like GNOME.

  • Udev also depends on systemd.

  • SystemD is specific to Linux, which makes porting software to *BSD even more challenging. It's uncertain what the future holds, and there may be circumstances where Linux becomes unusable for you (e.g., compatibility issues with your laptop). Having a good alternative that doesn't require relearning everything is generally beneficial.

  • SystemD-based distributions often come with more than just "systemd-init." They include additional components like logind, resolved, networkd, systemd-timers, etc. However, many people still prefer using the alternatives they were accustomed to before systemd became popular, such as dhcpcd and cron. Consequently, having both sets of tools installed can increase the attack surface.

you are viewing a single comment's thread
view the rest of the comments
[–] Nibodhika@lemmy.world 23 points 10 months ago (14 children)
  • Systemd-init has a larger attack surface compared to runit, openrc, or sysVinit.

So what? Linux Kernel has an even larger attack surface, the size of the attack surface is a moot point without examples of attacks being made

  • Systemd-logind relies on systemd, so we need to adapt it for non-systemD distributions to ensure compatibility with certain applications like GNOME.

Yes, systemd modules depend on systemd, that's like complaining that a GUI application depends on X.

  • Udev also depends on systemd.

It doesn't, that's ridiculous, several distros don't use systemd and still have udev

  • SystemD is specific to Linux, which makes porting software to *BSD even more challenging. It's uncertain what the future holds, and there may be circumstances where Linux becomes unusable for you (e.g., compatibility issues with your laptop). Having a good alternative that doesn't require relearning everything is generally beneficial.

If your laptop doesn't run Linux it will not run BSD since BSD has less hardware compatibility than Linux. Also BSD is a different system, you'll need to relearn a lot of things, how to enable services is just one of them, and a pretty small one at that. And Finally there are forks of systemd that work on BSD, the reason it's not used there is not technical.

  • SystemD-based distributions often come with more than just "systemd-init." They include additional components like logind, resolved, networkd, systemd-timers, etc. However, many people still prefer using the alternatives they were accustomed to before systemd became popular, such as dhcpcd and cron. Consequently, having both sets of tools installed can increase the attack surface.

Again, more attack surface does not mean anything, to add to that example most people use the precompiled kernel that comes with their distro instead of compiling a leaner one to diminish attack surface, because that's irrelevant. You could have said let's your system bloated which would be a somewhat valid point, the answer being if the person cared they would uninstall one of the alternatives, but you chose the most insignificant aspect of this, if there's a vulnerability in your computer it's 99.99999% coming from whatever you exposed in that computer, e.g. SSH, Nextcloud, etc, chances of an attack coming through systemd are so ridiculously small it's not even worth mentioning, and if ever someone discovers an escalation privilege or something similar on systemd the fact that everyone uses it will make the fix available in 24h on most major distros.

There are reasons to hate on systemd, but you didn't provided a single valid one.

[–] Unsafe@discuss.online -3 points 10 months ago* (last edited 10 months ago) (1 children)

Yes, systemd modules depend on systemd, that's like complaining that a GUI application depends on X.

SystemD is not modular. Logind is just an executable that depends on systemD libs. Red Hat could design it to be init-agnostic(similar to elogind). But they didn't. Any assumptions, why?

[–] Nibodhika@lemmy.world 7 points 10 months ago (1 children)

Yes module is not the correct word, but that's nitpicking, the concept is still the same, it's a binary that depends on systemd, that's a developer choice, same as using GTK or Qt, there are up and downsides to choose what your program depends on, the developers of systemd-logind decided to depend on systemd knowing the downsides, and distros decide to use it also knowing of them. As for your question possibly the answer is that the added difficulties of making it system agnostic did not compensated for the low user base, same reason most games don't have a native binary.

[–] Unsafe@discuss.online 2 points 10 months ago

the added difficulties of making it system agnostic did not compensated for the low user base

  • 2003: Udev was launched, providing support for musl, non-systemd distros, and others.
  • 2004: NetworkManager was launched, with Udev as a crucial dependency.
  • 2006: Dbus was created without dependencies on distro-specific packages.
  • 2009: Dbus becomes a dependency for NetworkManager.
  • 2010: Red Hat introduces systemd, with core components including logind, journald, and timers.
  • 2012: Developers made udev less compatible with old kernels, musl-based, and non-systemd Linux distros by merging it with systemd. You can find more information about this here: https://lwn.net/Articles/490413, https://lwn.net/Articles/529314/
  • 2017: PipeWire was launched, with logind as a dependency.
  • 2017: Reimplementations of the bus protocol called dbus-broker were launched. Its compatibility launcher requires systemd.
  • 2020: After systemd had already been adopted by all major distros, systemd-tmpfiles gained the ability to be built as a standalone executable.
  • 2022: WirePlumber was launched, with pipewire as a hard dependency.

Looks like Red Hat makes everything they can systemd-dependent. Including Gnome.

load more comments (12 replies)