de:admin:linux:systemd

systemd

  • systemd ist monolitisch
    • widerstrebt der Unix-Philosophie („do one thing and do it well“) * Kontrollsucht
  • gewollte Dominanz gegenüber anderen Projekten, also wieder eigene Formate, obskures Verhalten etc.
    • tötet andere Projekte durch Bindung von Entwicklerressourcen
  • Poettering ist ein arrogantes Arschloch
    • Kay als Positivbeispiel
    • komisches Kleinkindverhalten bei Bugs, die ihn nicht interessieren
  • PID-1/0 sollte so sparsam wie möglich, stabil wie möglich, und änderungsarm wie möglich sein. Alles darüber kann ein Daemon machen
  • DNS
    • Google war default DNS in systemd-networkd
  • NTP
    • Die wollten nicht, das systemd den allgemeinen NTP benutzt, sondern einen eigenen sub-ntp anlegt(for free, also ohne probleme, nur ein "Ja" entfernt und es läuft), und Poettering wollte das partout einfach nicht
  • Abwärtskompatibilität
  • mangelnde Kompatibilität mit anderen Tools
  • udev
  • Format der Logs
    • binär. Checksumme kaputt → Datei kaputt.
      • Lösung: zusätzlich in syslog loggen
    • Logging in Syslog heißt doppelte Logs
      • Lösung: Journal ausschalten
    • nicht mit Text-Tools durchsuchbar, journald wird benötigt
    • Checksummen gingen auch mit Textdateien
  • sehr viele Codezeilen
    • schlechtere Wartbarkeit
    • schlechtere Verständlichkeit
    • der Code, um Bash-Scripts mit systemd zu starten, ist größer als sysvinit
  • einzelne Komponenten von systemd (journald, networkd) funktionieren nicht ohne systemd-init
  • Komplexität
  • Größe
  • Abhängigkeiten der einzelnen Komponenten untereinander
    • systemd mit PID1 hängt nicht nur von PID0 sondern auch von PID2 und PID>2 ab
  • die unersetzbarkeit des einen Modules durch das andere, weil alle untereinander derart Abhängig sind, das jede Änderung durch alle abhängigen Module getragen wird und werden muss
  • Höherer Bedarf an Systemressourcen
  • INI-Dateien als Frankenprogrammiersprache (Alternative: openRC)
    • man muss mehr tippen, wenn man sehr viele Services oder Timer anlegt muss man sich eventuell ein Grundgerüst kopieren
  • es ist in C geschrieben und u.a. daher recht schnell und effizient in dem, was es tut
  • es kann mehrere Services gleichzeitig starten (nicht wie bei sysv)
  • man kann tatsächliche Abhängigkeiten definieren (die nicht wie bei sysv in Shellscripts überprüft werden)
  • die meisten Distributionen nutzen es (Debian, Ubuntu, CentOS, Fedora, Arch Linux)
  • es funktioniert
  • Zuletzt geändert: 2020-01-26 13:58