systemd

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
systemd
Maintainer Lennart Poettering, Kay Sievers (Red Hat Inc.)
Erscheinungsjahr 30. März 2010
Aktuelle Version 231
(25. Juli 2016)
Betriebssystem Linux
Programmiersprache C[1]
Kategorie Systemsoftware
Lizenz GNU LGPL 2.1+[2]
(Freie Software)
wiki.freedesktop.org/www/Software/systemd
systemd-Komponenten

systemd ist ein Hintergrundprogramm (Daemon) für Linux-Systeme, das als init-Prozess als erster Prozess (Prozess-ID 1) zum Starten, Überwachen und Beenden weiterer Prozesse dient. Es wurde von Lennart Poettering, Kay Sievers (Red Hat Inc.) und anderen in C[1] programmiert und wird als freie Software unter der GNU Lesser General Public License (LGPL) veröffentlicht.[2]

Der Name entspricht mit dem abschließenden „d“ dem für Daemons üblichen Namensschema: systemd ist der Daemon, der das System startet und betreut.

Geschichte[Bearbeiten | Quelltext bearbeiten]

Die Ideen und Konzepte zu systemd entstanden aus der Betrachtung von bereits bestehenden modernisierten init-Systemen[3] wie launchd von Mac OS X und SMF (Service Management Facility) von Solaris. Es wurde am 10. April 2010 veröffentlicht. Distributionen, die systemd als vorgegebenen init-Dienst verwenden, sind Fedora seit Version 15, openSUSE seit Version 12.1, Mandriva 2011, Mageia seit Version 2, Arch Linux seit Oktober 2012, Red Hat Enterprise Linux seit Version 7,[4] Tizen[5] sowie siduction seit Version 2013.2,[6] SUSE Linux Enterprise Server seit Version 12,[7] Ubuntu seit Version 15.04[8] und Debian ab Version 8.[9]

Ab Version 221 enthält systemd sd-bus, eine unabhängige D-Bus-Programmierschnittstelle, die bei der Komplexität zwischen libdbus und GDBus angesiedelt ist. sd-bus unterstützt sowohl das klassische dbus1 im Userspace als auch kdbus als Backend und soll so den reibungslosen Übergang zur Interprozesskommunikation im Kernel ermöglichen.[10]

Technik[Bearbeiten | Quelltext bearbeiten]

Systemd ist abwärtskompatibel zu SysVinit-Skripten. Allerdings werden bewusst Features benutzt, die nur unter Linux zur Verfügung stehen, nicht aber auf anderen unixoiden Betriebssystemen. Es kann daher nur auf Systemen mit Linux-Kernel laufen.

Es soll den gegenseitigen Abhängigkeiten von Prozessen besser gerecht werden, durch mehr Parallelisierung zu einer besseren Auslastung beim Systemstart führen und somit weniger Verzögerungen verursachen als das ältere, klassische SysVinit oder das inzwischen auch von Ubuntu aufgegebene Upstart.

Grundlegendes Konzept dafür ist es, weitgehend alle Prozesse gleichzeitig zu starten. Um nicht, wie bei anderen zwar grundsätzlich auf Parallelisierung setzenden Systemen, anhand der in einem Modell erfassten wechselseitigen Abhängigkeiten der Prozesse teilweise noch mit Serialisierung zu arbeiten, werden die D-Bus-Verbindungen und Sockets zur Interprozesskommunikation schon vor dem Start des zugehörigen Dienstes bereitgestellt und vom Kernel eventuell auflaufende Nachrichten bis zur Bereitschaft des Dienstes gepuffert. Ähnliches wird für Anfragen an Dateisysteme mittels autofs bewerkstelligt.

Daneben kann es nur gelegentlich benötigte Dienste ereignisbasiert erst bei Bedarf starten und so beim Systemstart weniger Dienste starten. Damit nimmt es Aufgaben wahr, die bei klassischen Unix-Systemen von inetd übernommen werden.

Weiterhin sollen alle Shell-Boot-Skripte durch deklarative Konfigurationsdateien ersetzt werden, in denen definiert wird, wie die jeweiligen Dienste gestartet werden. Diese Dateien sind in der Regel deutlich einfacher zu schreiben als init-Skripte und vermeiden den erheblichen Overhead von Shell-Skripten.

Kritik[Bearbeiten | Quelltext bearbeiten]

Systemd polarisiert die Community und wird von den Gegnern teils äußerst stark kritisiert und beschimpft. Die Kritik vermischt sich dabei mit persönlichen Angriffen auf die Entwickler, insbesondere Poettering und Sievers.[11][12] Die Diskussion, ob man in Debian weiter SysV-Init verwenden oder auf systemd oder aber ein anderes Init-System umsteigen sollte, führte zu monatelangen Streitereien und schließlich zu einer Abstimmung („General Resolution“),[13][14][15] zahlreichen Rücktritten[16] und einem Fork[17] unter dem Namen Devuan.

Der Hauptkritikpunkt an systemd liegt in seinem Anspruch, deutlich mehr verschiedene Aufgaben als das alte SysV-Init erledigen zu wollen, was es recht kompliziert und fehleranfällig mache und überdies die Unix-Philosophie verletze, dass ein Programm ein Problem gut lösen sollte, anstatt viele Aufgaben schlecht zu lösen. Im September 2016 wurde ein Bug bekannt, der jedem unpriviligierten Benutzer eine Denial of Service-Attacke auf systemd und die damit verbundenen Prozesse ermöglicht.[18] Der Musl-Entwickler Rich Felker sagte dazu, systemd sei ein großer monolithischer Prozess, der bei einem Fehler nicht teilweise ausfalle, sondern das ganze System zum Absturz bringe. Der kürzlich entdeckte Bug sei weniger ein ernstes Sicherheitsproblem, sondern zeige vielmehr einen grundlegenden Designfehler auf.[19] Vielfach wurde bemängelt, dass systemd Log-Dateien im Binärformat und nicht als einfache Textdateien speichert. Ein weiterer Kritikpunkt besteht in der Entscheidung, systemd explizit nur für Linux zu entwickeln.[11] Wiederholt wurde kritisiert, die Entwickler würden dazu neigen, Programmierfehler zu ignorieren oder zu bestreiten.[20][21][22][23] Die Devuan-Entwickler äußerten die Befürchtung, Debian und die anderen Grossdistributionen seien nun von Red Hat in einem „Vendor-Lock-in“ gefangen.[24]

Theodore Ts’o kritisierte die zu starke Ausrichtung auf die Gnome-Desktop-Umgebung; es bestehe die Gefahr, dass viele Systemkomponenten mit anderen Desktops nicht mehr funktionieren würden. Dies könne langfristig zur völligen Unbenutzbarkeit anderer Desktops führen, wenn es keine Alternative zu systemd mehr gebe. Linus Torvalds gab an, er habe keine feste Meinung zu systemd; einige Eigenschaften wie binäre Logs seien irrsinnig, aber das seien Detailfragen und kein grundsätzliches Problem. Die systemd-Entwickler hätten generell eine zu großzügige Haltung gegenüber Programmfehlern und Kompatibilitätsproblemen.[20][21] InfoWorld berichtete, systemd-Entwickler hätten Programmierfehler ignoriert und Bugreports geschlossen, ohne die Fehler zu beheben, was dazu geführt habe, dass Torvalds mit Kay Sievers einen der führenden systemd-Entwickler vom Kernel-Development ausgeschlossen habe. In der Gesamtschau sei durch systemd eine Spaltung der Linux-Community eingetreten, die Linux langfristig schaden werde.[22][23] Ende Oktober 2015 berichtete Slashdot, BusyBox-Entwickler Denys Vlasenko habe die systemd-Unterstützung aus BusyBox entfernt. Vlasenko erklärte, die für systemd Verantwortlichen seien unfreundlich zum Rest der Welt, somit gebe es für den Rest der Welt keinen Anlass, mit ihnen zu kooperieren.[25][26]

Einbindung von Google-Diensten in den Code[Bearbeiten | Quelltext bearbeiten]

Im September 2014 wurde bekannt, dass eine Komponente des systemd in bestimmten Fällen DNS-Anfragen an die Google-Nameserver weiterleitet, ohne dass der Administrator dies eingestellt hat, was zu Diskussionen um die Vertraulichkeit, Sicherheit und Integrität von Nutzerdaten führte. Der zuständige Debian-Maintainer wies die Kritik zurück.[27] Dieser Sachverhalt wurde im Juli 2015 erneut festgestellt.[28] Poettering verteidigte diese Einstellung mit der Begründung, er wolle ein funktionsfähiges System sicherstellen.[29]

Ebenfalls im Juli 2015 wurde auf Github moniert, dass Google-Zeitserver als default bzw. fallback fest in den Code des systemd eingebunden sind.[30] Auch diese Entscheidung wurde von Poettering verteidigt, obwohl er einräumte, dass die Google-Server ungenaue Daten lieferten.[31][32][33] Ein Google-Entwickler kritisierte diese Einstellung.[34][35]

Literatur[Bearbeiten | Quelltext bearbeiten]

  • Thorsten Leemhuis: Sammelstelle – Log-Informationen beim Journal von Systemd abrufen. c’t 13/2014, Seite 168

Weblinks[Bearbeiten | Quelltext bearbeiten]

Kritik:

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. a b systemd. In: Analysis Summary. Ohloh, abgerufen am 15. August 2011.
  2. a b Lennart Poettering: License. In: systemd git. freedesktop.org, abgerufen am 3. Februar 2013.
  3. Interview mit Lennart Poettering, Entwickler Systemd. golem.de, 27. Mai 2011, abgerufen am 18. März 2013 (deutsch).
  4. Lennart Poettering: The Biggest Myths. Abgerufen am 3. Februar 2013 (englisch).
  5. Mikko Ylinen: Tizen IVI Architecture. Abgerufen am 3. Februar 2013 (PDF; 3,8 MB, englisch).
  6. Release Notes: Release Notes for siduction 2013.2. Abgerufen am 22. Oktober 2014.
  7. Release Notes: SUSE Linux Enterprise Server 12 Release Notes. Abgerufen am 2. März 2015.
  8. Release Notes: Ubuntu 15.04 Release Notes. Abgerufen am 23. April 2015.
  9. Debian 8 "Jessie" veröffentlicht. 25. April 2015, abgerufen am 26. April 2015 (deutsch).
  10. The new sd-bus API of systemd, 19. Juni 2015
  11. a b Ferdinand Thommes: Systemd als Schaltzentrale für das Linux-System. In: LinuxUser, Ausgabe 04/2014. Abgerufen am 26. Februar 2016.
  12. Ferdinand Thommes: Linus Torvalds kritisiert Systemd-Entwickler scharf. In: ComputerBase. 3. April 2014, abgerufen am 24. August 2016.
  13. Thorsten Leemhuis: Debian-Abstimmung zum Init-System: Keine Grundsatzentscheidung erforderlich. In: Heise online. 19. November 2014, abgerufen am 26. Februar 2016 (deutsch).
  14. Thorsten Leemhuis: Debian entscheidet sich für Systemd – zumindest fürs Erste. In: Heise online. 11. Februar 2014, abgerufen am 26. Februar 2016 (deutsch).
  15. Thorsten Leemhuis: Debian: Wahl zum Standard-Init-System führt zu Zank. In: Heise online. 2. November 2014, abgerufen am 26. Februar 2016 (deutsch).
  16. Oliver Diedrich: Debian: Systemd-Streit vertreibt Entwickler. In: Heise online. 17. November 2014, abgerufen am 26. Februar 2016 (deutsch).
  17. Oliver Diedrich: Devuan: Jetzt solls los gehen. In: Heise online. 13. Januar 2015, abgerufen am 26. Februar 2016 (deutsch).
  18. Assertion failure when PID 1 receives a zero-length message over notify socket #4234. In: Github issue #4234. Abgerufen am 5. Oktober 2016 (englisch).
  19. Tom Spring: Hack Crashes Linux Distros with 48 Characters of Code. In: Threatpost. Kaspersky Lab, 3. Oktober 2016, abgerufen am 6. Oktober 2016 (englisch).
  20. a b Kristian Kißling: Linus Torvalds stört sich nicht an Systemd. In: Linux-Magazin. 18. September 2014, abgerufen am 24. August 2016.
  21. a b Steven Vaughan-Nichols: Linus Torvalds and others on Linux's systemd. In: ZDNet. 14. September 2014, abgerufen am 24. August 2016 (englisch).
  22. a b Paul Venezia: Systemd: Harbinger of the Linux apocalypse. In: InfoWorld. International Data Group, 18. August 2014, abgerufen am 26. August 2016 (englisch).
  23. a b Silviu Stahie: Linus Torvalds Blocks All Code from Systemd Developer for the Linux Kernel. In: Softpedia. 3. April 2014, abgerufen am 26. August 2016 (englisch).
  24. Ferdinand Thommes: Devuan veröffentlicht erste Beta ohne Systemd. In: ComputerBase. 29. April 2016, abgerufen am 22. Dezember 2016.
  25. Denys Vlasenko: remove systemd support. 22. Oktober 2015, abgerufen am 7. November 2016 (englisch).
  26. Busybox Deletes Systemd Support. Slashdot, 31. Oktober 2015, abgerufen am 7. November 2016 (englisch).
  27. Debian Bug report logs - #761658; Please do not default to using Google nameservers. Abgerufen am 23. August 2016 (englisch).
  28. Source der Datei systemd/configure.ac. In: Github. Abgerufen am 24. August 2016.
  29. FallbackDNS shouldn't have values set at compile time #494. In: Github issue #494. Abgerufen am 24. August 2016 (englisch).
  30. Source der Datei systemd/configure.ac. In: Github. Abgerufen am 24. August 2016 (englisch).
  31. timeX.google.com provide non standard time #437. In: Github issue #437. Abgerufen am 24. August 2016 (englisch).
  32. timesyncd: default NTP pool instead of Google NTP #439. In: Github issue #439. Abgerufen am 24. August 2016 (englisch).
  33. Do not provide default NTP servers. Fixes #437. #444. In: Github issue #444. Abgerufen am 24. August 2016 (englisch).
  34. Systemd soll Googles Zeitserver nicht mehr verwenden. In: golem.de. 1. Juli 2015, abgerufen am 24. August 2016 (deutsch).
  35. Kristian Kißling: Keine Zeit für Systemd? In: Linux-Magazin. 1. Juli 2015, abgerufen am 24. August 2016 (deutsch).