Ansichten eines Informatikers

systemd war eine massive Fehlentscheidung

Hadmut
10.7.2018 0:46

Da haben sie richtig Mist gebaut.

Einige Linux-Distributionen sind vor einiger Zeit als init-beiwerk und start-service für das System auf systemd umgestiegen. Umstritten, aber gefeiert.

Mittlerweile halte ich das für eine der übelsten Fehlentscheidungen der letzten Zeit im Bereich der Linux-Distributionen.

Ich hatte schon so viel Ärger mit dem Mist, weil

  • Zwar sehr viel oberflächlich, aber alles nur so ein bisschen und nichts richtig dokumentiert ist.
  • Das Ding überkomplex ist und mit jedem Release mehr Systemfunktionen übernimmt, die es nicht übernehmen soll.
  • Man da nicht sagen kann, ich will nur diese Funktion aber jene nicht, das Zeug wird zwangsweise reingedrückt.
  • Viele Funktionen nicht konfigurierbar sind. Beispielsweise übernimmt das Ding die DNS-Auflösefunktion, aber es gibt da überhaupt nichts zu konfigurieren.
  • Das Debugging ist eine Katastrophe. Immer wieder passiert es, dass irgendein System beim Booten an irgendwas hängt, aber nicht sagt, was. Auf der Console wird angezeigt, dass man jetzt auf einen wichtigen Job wartet – aber nicht, auf welchen.
  • Es gibt zwar für sowas eine Notfall-Debug-Console auf Terminal 9, die kann man aber auch vergessen. Neulich hatte ich den Fall, dass systemd beim Booten in einer Endlosschleife Fehlermeldungen ausgepsuckt hat – auf alle Terminals, auch auf 9. Und sich damit die eigene Debug-Console unbrauchbar gemacht hat.
  • Es gibt immer wieder Probleme mit der Komplexität und unauflösbaren Abhängigkeiten. Bei Ubuntu schaffen sie es nicht, den dnsmasq erst dann zu starten, wenn die interfaces alle oben sind – deshalb werden manche Interfaces nicht bedient, weil sie beim Start des Daemons noch nicht da waren. Ähnliche Probleme hatte ich vor einiger Zeit mit Postfix, das nicht auf einem bestimmten Interface hören konnte, weil es mit einer Fehlermeldung abbricht, wenn das Interface nicht da ist – systemd (bzw. die Schreiber der Distributionspakete) schafft es nicht, das Zeug in der richtigen Reihenfolge zu starten.
  • Die blicken da bei mancher Distribution längst selbst nicht mehr durch. Bug reports werden meist übergangen.
  • Gerade habe ich das Problem, dass sich der hostname einer Maschine nicht mehr ordentlich ändern lässt. Wenn man /etc/hostname ändert (oder hostnamectl gebraucht), kommt die Maschine nach dem nächsten Reboot mit dem alten Hostnamen wieder hoch, die /etc/hostname auf den alten Namen zurückgesetzt. Vermutlich (aber noch nicht sicher verifiziert) über den Cache des DHCP, der weiter den alten Namen mitteilt. Dass da irgendeine Software undokumentiert in /etc/hostname wurmwurstet, das geht gar nicht.

Dazu kommt, dass ich den starken Eindruck habe, dass die Leute bei den Distributionen immer weniger Ahnung vom Fach haben und immer öfter nicht mal mehr das Problem verstehen.

Ich halte systemd deshalb für eine grobe Fehlentscheidung. Die Grundidee ist gar nicht mal schlecht, aber die Umsetzung ist in großer Haufen elender Murks.