Systemd

Aus xinux.net
Zur Navigation springen Zur Suche springen

systemd ist ein Ersatz für den System V init Daemon in Linux.

Besonderheiten

Abwärtskompatibilität zu SysVinit-Scripten
systemd ist abwärtskompatibel, jedoch werden Features benutzt, welche nur unter Linux verfügbar sind.
Somit ist er nur auf Systemen mit Linux-Kernel lauffähig.
Parallelisierung
Es werden möglichst viele Prozesse gleichzeitig beim Booten gestartet um das System optimal aus zulasten.
Abhängigkeits-Regeln
Um bei der Parallelisierung dennoch sicher zustellen dass Dienste welche von anderen Diensten benötigt werden rechtzeitig vor diesen zu starten. (z.B. D-Bus)
cgroups
Anstelle von ProzessIDs werden cgroups benutzt. Dies bedeutet, dass Dienste nicht mehr "Abhauen" können. Selbst durch doppeltes Forken.
Ereignis basiertes Starten von Diensten
Ähnlich inetd kann systemd Dienste bei Bedarf starten.
Dies kann z.B. über einen Socket oder Bus geschehen.
Binärscripte
Langfristig sollen Shell-Skripte komplett verschwinden und anstelle eines Init-Skripts jeder Dienst eine Konfigurationsdatei erhalten in welcher definiert wird wie dieser zu starten ist.

Verfügbarkeit (08/2011)

Distribution Status
Fedora Ursprünglich geplant für Fedora 14 ist es nun seit Fedora 15 Standard
openSUSE Wurde für openSUSE 11.4 in erwägung gezogen, jedoch verschoben
Mandriva Wird in Mandriva 2011 systemd übernehmen (Mandriva 2011 RC1 mit systemd verfügbar)
Debian Pakete in unstable
Gentoo Unterstüzt systemd und verfügbar in testing
paldo Übernahm systemd und Standard seit Aprill 2011

systemd wurde als externe Abhängigkeit für GNOME 3.2 vorgeschlagen.

Administration

Runlevel / Targets
SystemVinit Runlevel Systemd Target Kommentar
0 runlevel0.target, poweroff.target System herunterfahren
1, s, single runlevel1.target, rescue.target Einzelnuzer Modus
2, 4 runlevel2.target, runlevel4.target, multi-user.target Benuzerdefiniert, Standardmäsig identisch zu 3
3 runlevel3.target, multi-user.target Multi-user, Shell. Anmeldung über mehrere Consolen und7oder netzwerk
5 runlevel5.target, graphical.target Multi-user, Grafisch. Gewöhnlich alle Dienste aus 3 sowie grafische Oberfläche
6 runlevel6.target, reboot.target Reboot
emergency emergency.target Notfall Shell
Wie setze ich das Runlevel beim Booten?
Unter systemd werden Runlevel als Targets bezeichnet. Um das Boot "Target" beim Booten zu setzen hängt man z.B. einen der folgenden Kernel Parameter an.
  • systemd.unit=multi-user.target (entspricht Runlevel 3)
  • systemd.unit=rescue.target (entspricht Runlevel 1)


Wie setze ich das Standard Target?
Für Runlevel 3
# systemctl -f enable multi-user.target
Für Runlevel 5
# systemctl -f enable graphical.target

Links