Warum Linuxs systemd nach all den Jahren immer noch umstritten ist

systemd ist 10 Jahre alt, aber die Gefühle in der Linux-Community haben sich nicht gemildert – es ist heute so spaltend wie immer. Obwohl es von vielen großen Linux-Distributionen verwendet wird, hat die harte Opposition nicht nachgegeben.

Die Linux-Boot-Sequenz

Wenn Sie Ihren Computer einschalten, bootet die Hardware und dann (je nach Art des Bootsektor Ihr Computer verwendet) entweder die Master Boot Record (MBR) ausgeführt wird oder die Einheitliche erweiterbare Firmware-Schnittstelle (UEFI) läuft. Die letzte Aktion von beiden besteht darin, die Linux Kernel.

Der Kernel wird in den Speicher geladen, dekomprimiert sich selbst und initialisiert. EIN temporäres Dateisystem wird im RAM erstellt, normalerweise von einem Dienstprogramm namens initramfs oder initrd. Damit können die benötigten Treiber ermittelt und geladen werden. Dies wiederum ermöglicht es dem Userspace-Dateisystem, zu laden und vorzubereiten, um die Userspace-Umgebung einzurichten.

Die Erstellung der Userspace-Umgebung wird durch den init-Prozess gehandhabt, der der erste Prozess ist, der vom Kernel in einem Userspace gestartet wird. Es hat ein Prozess ID (PID) von 1. Alle anderen Prozesse sind entweder direkte oder indirekte Kinder des init-Prozesses.

Vor systemd, der Mainstream-Standard für den Init-Prozess war eine Überarbeitung der Unix System V-Initialisierung. Es standen andere Optionen zur Verfügung, aber System V init war die Standardoption in den meisten Nicht-Berkeley-Softwareverteilung (BSD) abgeleitete Verteilungen. Da es direkt von System V Unix – dem spirituellen Vorfahren von Linux – stammt, betrachten es viele Leute als „die offizielle Methode“, um init zu tun.


Der Init-Prozess startet alle Dämonen und Dienste, die erforderlich sind, damit das Betriebssystem auf sinnvolle, interaktive Weise funktioniert. Diese Daemons kümmern sich um Dinge wie den Netzwerk-Stack, aktivieren andere Hardware in Ihrem Computer und stellen einen Startbildschirm bereit.

Viele dieser Hintergrundprozesse werden nach ihrem Start weiter ausgeführt. Sie können beispielsweise Ereignisinformationen protokollieren, beim Einsetzen oder Entfernen von Geräten auf Hardwareänderungen achten und Benutzeranmeldungen verwalten. Es überrascht nicht, dass das init-System auch Funktionen zur Verwaltung von Diensten enthält.

Wir können benutzen ps um den Prozess zu sehen, der PID 1 hat. Wir verwenden die f (Vollformat-Auflistung) und p (PID)-Optionen:

ps -fp 1

Wir sehen den Prozess mit PID 1 ist systemd. Das Ausführen desselben Befehls unter Manjaro Linux führte zu einem anderen Ergebnis. Der Prozess mit PID 1 wurde identifiziert als /sbin/init. Ein kurzer Blick auf diese Datei zeigt, dass es sich um einen symbolischen Link zu handelt systemd:

ps -fp 1
ls -hl /sbin/init

Verwendung der ppid (Elternprozess-ID) Option mit ps, sehen wir, welche Prozesse direkt von . gestartet wurden systemd:

ps -f --ppid 1

Es ist eine ziemlich lange Liste, wie Sie im Bild unten sehen können.

Die Alternativen

Mehrere Projekte haben versucht, eine Alternative zum traditionellen System V init zu entwickeln. Eines der Hauptprobleme ist, dass bei System V init alle Prozesse seriell nacheinander gestartet werden. Um die Effizienz der Bootsequenz zu verbessern, verwenden viele alternative Projekte Parallelität, um Prozesse gleichzeitig und asynchron zu starten.

Hier sind einige Informationen zu einigen davon:


Es gibt viele andere mit unterschiedlicher Funktionalität und Design. Jedoch keiner von ihnen sorgte für Furore systemd Tat.

Der systemische Weg

systemd erschien 2010 und wurde in verwendet Fedora im Jahr 2011. Seitdem wird es von vielen Distributionen übernommen. Es wurde entwickelt von Lennart Poettering und Kay Sievers, zwei Software-Ingenieure bei RedHat.

systemd ist viel mehr als ein Init-Ersatz. Vielmehr handelt es sich um eine Suite von ungefähr 70 Binärdateien, die die Systeminitialisierung, Daemons und Dienste, Protokollierung und Journaling sowie viele andere Funktionen handhaben, die bereits von dedizierten Modulen in Linux verwaltet wurden. Der Großteil davon hat nichts mit der Systeminitialisierung zu tun.

Einige der Daemons von systemd sind:

  • systemd-udevd: Verwaltet physische Geräte.
  • Systemd-Login: Verwaltet Benutzeranmeldungen.
  • systemaufgelöst: Bietet Netzwerknamensauflösung für lokale Anwendungen.
  • systemvernetzt: Verwaltet und erkennt Netzwerkgeräte und verwaltet Netzwerkkonfigurationen.
  • systemd-tmpfiles: Erstellt, löscht und bereinigt flüchtige und temporäre Dateien und Verzeichnisse.
  • systemd-lokal: Verwaltet die Gebietsschemaeinstellungen des Systems.
  • systembearbeitet: Erkennt und überwacht virtuelle Maschinen und Container.
  • systemd-nspawn: Kann einen Befehl oder einen anderen Prozess in einem leichtgewichtigen Namespace-Container starten und bietet eine ähnliche Funktionalität wie chroot.

Und das ist nur die Spitze des Eisbergs, die auch der Knackpunkt ist. systemd hat längst die Anforderungen an ein Init-System übertroffen, das laut seinen Gegnern die eigentliche Definition von Scope Creep ist.

“Es ist zu groß. Es tut zu viel.“

Gegner von systemd weisen Sie auf die große, kuriose Mischung von Funktionen hin, die es umfasst. All diese Funktionen gab es bereits in Linux, und vielleicht brauchten einige von ihnen eine Auffrischung oder einen neuen Ansatz. All diese Funktionen in einem angeblichen Init-System zu bündeln, ist jedoch architektonisch rätselhaft.


systemd wurde für zu viele kritische Funktionen als Single Point of Failure bezeichnet, aber dies scheint nicht zu rechtfertigen. Zugegeben, es wirft die Unix-Philosophie kleine Tools zu entwickeln, die zusammenarbeiten, anstatt große Softwareteile, die alles aus dem Fenster tun. Während systemd ist nicht streng monolithisch (es besteht aus vielen Binärdateien und nicht aus einem einzigen großen), es enthält viele unterschiedliche Verwaltungstools und Befehle unter einem Dach.

Obwohl es nicht monolithisch ist, ist es groß. Um eine Vorstellung von der Skalierung zu bekommen, haben wir die Textzeilen in der Codebasis des Kernels 5.6.15 gezählt und die systemd Hauptzweig des GitHub-Repositorys.

Dies war eine relativ grobe Metrik. Es zählte Textzeilen, nicht nur Codezeilen. Dazu gehörten also Kommentare, Dokumentation und alles andere. Es war jedoch ein Vergleich auf gleicher Augenhöhe und gab uns einen einfachen Maßstab:

( find ./ -name '*.*' -print0 | xargs -0 cat ) | wc -l

Der Kernel hatte fast 28 Millionen (27.784.340, um genau zu sein) Textzeilen. Im Gegensatz, systemd hatte 1.349.969 oder fast 1,4 Millionen. Mit unserer Happy-Go-Lucky-Metrik, systemd kommt mit etwa 5 Prozent der Größe des Kernels heraus, was verrückt ist!

Als weiterer Vergleich ergab sich für eine moderne Implementierung von System V init für die Arch Linux-Distribution eine Zeilenzahl von 1.721 Zeilen.

Pöttering hat offensichtlich keine Rücksicht auf die Institut für Elektro- und Elektronikingenieure (IEEE) Computer Society, noch die Tragbare Betriebssystemschnittstelle (POSIX)-Standard. Tatsächlich ist er ermutigte Entwickler, POSIX . zu ignorieren:

„Also, besorgen Sie sich eine Kopie von The Linux Programming Interface, ignorieren Sie alles, was es über POSIX-Kompatibilität sagt, und hacken Sie Ihre erstaunliche Linux-Software weg. Es ist ziemlich entlastend!“


Es gab Vorwürfe, dass systemd ist ein Red Hat-Projekt, das nur Red Hat nützt, aber es wird zwangsweise in die breitere Linux-Welt eingespeist. Ja, es wurde innerhalb von Red Hat geboren und wird von ihm regiert und gesteuert. Von den 1.321 Mitwirkenden arbeitet jedoch nur ein Bruchteil für Red Hat.

Was sind die Vorteile von Red Hat?

Jim Whitehurst, der Präsident von IBM, der sagte einst der CEO von Red Hat:

„Red Hat hat viele verfügbare Optionen in Betracht gezogen und sogar Canonicals Upstart für Red Hat Enterprise Linux 6 verwendet. Letztendlich haben wir uns für systemd entschieden, weil es die beste Architektur ist, die die Erweiterbarkeit, Einfachheit, Skalierbarkeit und klar definierte Schnittstellen bietet, um die Probleme zu lösen, die wir sehen heute und in der Zukunft voraussehen.“

Whitehurst sagte auch, dass sie auch Vorteile in eingebetteten Systemen sehen. Red Hat arbeitet mit „den größten Embedded-Anbietern der Welt zusammen, insbesondere in der Telekommunikations- und Automobilindustrie, wo Stabilität und Zuverlässigkeit an erster Stelle stehen“.

Das scheinen technisch stichhaltige Gründe zu sein. Sie können das Bedürfnis des Unternehmens nach Verlässlichkeit verstehen, und es ist nicht unvernünftig, dass Red Hat auf seine eigenen Interessen achtet, aber sollten alle anderen nachziehen?

Das systemd Kool-Aid trinken?

Einige Gegner von systemd sagen, dass Distributionen und Leute einfach blind dem Beispiel von Red Hat folgen und es übernehmen.

Aber genau wie der Satz „trinken die Kool-Aid“ ist das nicht ganz richtig. Geprägt 1978 nach Sektenführer Jim JonesEr zwang seine über 900 Anhänger, Selbstmord zu begehen, indem er eine mit Zyanid versetzte Flüssigkeit mit Traubengeschmack trank, der Satz beschämt Kool-Aid fälschlicherweise. Die Gruppe hat tatsächlich Flavor Aid getrunken, aber Kool-Aid ist seitdem von diesem Pinsel geteert.


Außerdem folgen Linux-Distributionen Red Hat nicht blindlings; sie adoptieren systemd nach ernsthafter Überlegung. Die Debatte tobte am Debian Mailinglisten schon lange. Im Jahr 2014 stimmte die Community jedoch für die Annahme systemd als die Standard-Init-System, aber auch Alternativen zu unterstützen.

Debian ist ein wichtiges example weil es nicht von RedHat abgeleitet ist, Fedora, oder CentOS. Auf Debian wird von Red Hat keine Steuerung angewendet. Und Debian hat wie PID 1 viele Nachkommen, darunter Ubuntu und seine vielen Ableger.

Entscheidungen der Debian-Gemeinschaft sind weitreichend. Sie werden auch heftig debattiert und über die Verwendung abgestimmt die Condorcet-Abstimmungsmethode. Auch die Community trifft solche Entscheidungen nicht auf die leichte Schulter.

Es hat im Dezember 2019 erneut abgestimmt weiter konzentrieren systemd und weiter nach Alternativen zu suchen. Das Gegenteil von blind folgen, das ist eigentlich ein Lehrbuch example Demokratie und Wahlfreiheit bei der Arbeit.

Die Grenzen der Wahl

Sie können im Allgemeinen nicht wählen, ob Sie verwenden möchten systemd mit einer bestimmten Linux-Distribution. Vielmehr entscheiden die Distributionen selbst, ob sie es verwenden möchten, und Sie können wählen, welche Linux-Distribution Sie bevorzugen. Vielleicht ist eine Linux-Distribution, die Sie lieben, umgestiegen systemd. Wie bei einem Lieblingsmusiker, der das Genre wechselt, kann dies erschütternd sein.

Leute, die Debian verwenden, Fedora, CentOS, Ubuntu, Bogen, Nur, und openSUSEund widersprechen der Annahme von systemd, könnten das Gefühl haben, dass sie davon abgehalten werden, die Distribution ihrer Wahl zu verwenden. Wenn sie bei einer der Architekturentscheidungen, dem Scope Creep oder der Missachtung von POSIX stark genug sind, finden sie es möglicherweise unhaltbar, diese Distribution weiter zu verwenden.


Es gibt natürlich ein Spektrum. Auf der einen Seite stehen die Leute, die die Probleme nicht verstehen (oder sich gar nicht darum kümmern), und auf der anderen Seite die leidenschaftlichen Gegner. Irgendwo in der Mitte sind diejenigen, die Veränderungen nicht mögen, sich aber nicht genug darum kümmern, um das Schiff zu springen. Aber was ist mit den Verteilungsflüchtlingen, die aufgrund ihrer Vorlieben oder Prinzipien nicht bei ihrer gewählten Verteilung bleiben können?

Leider ist es nicht so einfach, einfach das gewünschte Init-System zu installieren. Nicht jeder hat die technische Fähigkeit dazu, ganz zu schweigen von den Schwierigkeiten, die auftreten, wenn Anwendungen oder Desktop-Umgebungen wie GNOME, haben Abhängigkeiten von systemd.

Wie wäre es mit einem Wechsel zu einer anderen Distribution? Einige wie Devuan, erschien als nicht-systemd Abzweigungen von Distributionen (in diesem Fall Debian), die übernommen wurden systemd. Die Verwendung von Devuan sollte ähnlich der Elterndistribution sein, aber das ist nicht bei allen Nicht-systemd Gabeln. Zum example, wenn du gehst Fedora und gehe zu AntiX, Gentoo, oder Slackware, werden Sie eine ganz andere Erfahrung machen.

Es geht nirgendwo

Ich mag einiges von dem systemd tut (einfache und standardisierte Kontrollmechanismen für Prozesse). Ich verstehe den Grund für einiges von dem nicht, was es tut (binäre Protokolle). Ich mag auch einiges von dem, was es tut (das Überarbeiten von Privatordnern – wer hat danach gefragt?).

Distributionen wie Debian machen die clevere Sache und untersuchen Alternativen, um sich die Optionen offen zu halten. Jedoch, systemd ist auf Dauer drin.


Wenn Sie Linux-Rechner für andere verwalten, lernen Sie systemd sowie Sie System V init kennen. Auf diese Weise können Sie Ihre Aufgaben erfüllen, egal auf welche Sie stoßen.

Verwenden Sie Linux einfach zu Hause? Wählen Sie in diesem Fall eine Distribution, die sowohl Ihren technischen Anforderungen entspricht als auch Ihre Linux-Ideologie ergänzt.

Systemd wird die Funktionsweise Ihres Linux-Home-Verzeichnisses ändern

Related Posts