====== systemd ====== //siehe auch [[:admin:linux:systemd|englische Version der Seite]]// ===== Argumente gegen Systemd ===== ==== ideologische ==== * 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 * https://www.reddit.com/r/linux/comments/573z4i/why_is_systemd_pid1/ ==== praktische / sachliche ==== * 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 ===== Argumente für systemd ===== * 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