Systemd: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(33 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''systemd''' ist ein Ersatz für den System V init Daemon in Linux.
+
[[Kategorie:systemd]]
= Besonderheiten =
+
=Grundlagen=
; Abwärtskompatibilität zu SysVinit-Scripten
+
*[[Systemd Grundlagen]]
: systemd ist abwärtskompatibel, jedoch werden Features benutzt, welche nur unter Linux verfügbar sind.
+
*[https://wiki.ubuntuusers.de/systemd/ Systemd ubuntu-users]
: Somit ist er nur auf Systemen mit Linux-Kernel lauffähig.
+
=Systemctl=
; Parallelisierung
+
*[[Systemd systemctl]]
: Es werden möglichst viele Prozesse gleichzeitig beim Booten gestartet um das System optimal aus zulasten.
+
=Service examples=
; Abhängigkeits-Regeln
+
*[[Systemd Service examples]]
: 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''')
+
=Service timers=
; cgroups
+
*[[Systemd Service timers]]
: Anstelle von ProzessIDs werden cgroups benutzt. Dies bedeutet, dass Dienste nicht mehr "Abhauen" können. Selbst durch doppeltes Forken.
+
=Loginctl=
; Ereignis basiertes Starten von Diensten
+
*[[loginctl]]
: Ä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 (01/2015) =
+
=Journald=
 +
*[[Systemd journald]]
 +
=Timedatectl=
 +
*[[Systemd timedatectl]]
  
{|
+
=Mounts=
 
+
*[[Systemd mounts]]
 
+
=Netzwerkkarten=
{|
+
*[[Systemd link]]
! Distribution !! Status
 
|-
 
| '''Fedora''' || Fedora seit version 15 Standard
 
|-
 
| '''openSUSE''' || openSUSE seit 12.1 Standard
 
|-
 
| '''Mandriva''' || seit Mandriva 2011 Standart
 
|-
 
| '''Debian''' || seit debian 8 jessie Standart
 
|-
 
| '''Ubuntu''' || seit 15.04
 
|-
 
| '''Arch''' || seit Oktoper 2012
 
|-
 
| '''Red Hat''' || seit version 7
 
|}
 
 
 
systemd wurde als externe Abhängigkeit für '''GNOME 3.2''' vorgeschlagen.
 
 
 
= Units =
 
 
 
Systemd wird über Dateien mit einem INI-Datei ähnlichen Format konfiguriert. In der Terminologie von systemd sind dies "Units". Bei Ubuntu vorinstallierte Units sind im Ordner /lib/systemd/system/ gespeichert. Falls sich jedoch eine Unit mit gleichem Namen im Verzeichnis /etc/systemd/system/ befindet, so wird diese bevorzugt und jene unterhalb von /lib ignoriert. Damit hat man die Möglichkeit, eine Unit an eigene Gegebenheiten anzupassen, ohne dass man befürchten muss, dass sie bei einer Systemaktualisierung überschrieben wird. Es existieren verschiedene Typen von Units, die von systemd je nach Endung des Dateinamens unterschiedlich behandelt werden:
 
 
 
 
 
{| class="wikitable"
 
! Typ !! Beschreibung
 
|-
 
| .device ||  Legt Gerätedateien an
 
|-
 
| .device ||  Legt Gerätedateien an
 
|-
 
| .device ||  Legt Gerätedateien an
 
|-
 
| .device ||  Legt Gerätedateien an
 
|-
 
| .device ||  Legt Gerätedateien an
 
|-
 
| .device ||  Legt Gerätedateien an
 
|-
 
| .device ||  Legt Gerätedateien an
 
|-
 
|}
 
 
 
 
 
 
 
 
 
{{{#!vorlage Tabelle
 
<rowclass="kopf">Typ
 
Beschreibung
 
+++
 
`.device`
 
Legt Gerätedateien an
 
+++
 
`.mount`
 
Ein- und Aushängen von [:mount:Dateisystemen]
 
+++
 
`.path`
 
Startet die Unit via [:inotify:]
 
+++
 
`.service`
 
Für [:Dienste:]
 
+++
 
`.socket`
 
Stellt Verbindungen zwischen Prozessen her
 
+++
 
`.target`
 
Definiert eine Gruppe von Units
 
+++
 
`.timer`
 
Für wiederkehrende Aufgaben, ähnlich [:cron:]-Jobs
 
}}}
 
 
 
= Administration =
 
== Runlevel / Targets ==
 
{| class="wikitable"
 
! 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
 
|}
 
 
 
== systemctl ==
 
 
 
aktivieren/deaktivieren systemstart
 
*systemctl enable
 
*systemctl disable
 
service steuern
 
*systemctl start
 
*systemctl stop
 
*systemctl status
 
*systemctl reload
 
*systemctl restart
 
service files anzeigen
 
*systemctl list-units
 
*systemctl list-unit-files
 
 
 
==Service File==
 
Beispiel:
 
*/etc/systemd/system/firewall.service
 
<pre>
 
Description=firewall
 
After=network.target syslog.target
 
 
 
[Service]
 
RemainAfterExit=yes
 
ExecStart=/usr/local/sbin/firewall start
 
ExecStop=/usr/local/sbin/firewall stop
 
User=root
 
 
 
[Install]
 
WantedBy=multi-user.target
 
</pre>
 
 
 
==Änderungen==
 
Nach Änderungen
 
*systemctl daemon-reload
 
 
 
 
 
= journalctl =
 
systemd verwendet standardmäßig ein zentrales Protokoll bzw. Journal, in das von journald alle Logmeldungen geschrieben werden. Zur Abfrage des Journals dient der Befehl journalctl.
 
 
 
 
 
== FAQ ==
 
; 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.
 
* <code>systemd.unit=multi-user.target</code> (entspricht Runlevel 3)
 
* <code>systemd.unit=rescue.target</code> (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 =
 
= Links =
 +
* https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal
 +
* https://www.heinlein-support.de/sites/default/files/was_man_ueber_systemd_wissen_sollte.pdf
 
* http://de.wikipedia.org/wiki/systemd
 
* http://de.wikipedia.org/wiki/systemd
 
* http://en.wikipedia.org/wiki/systemd
 
* http://en.wikipedia.org/wiki/systemd
 
* https://wiki.archlinux.org/index.php/Systemd
 
* https://wiki.archlinux.org/index.php/Systemd
 
* http://www.heise.de/open/artikel/Das-Init-System-Systemd-Teil-1-1563259.html?artikelseite=4
 
* http://www.heise.de/open/artikel/Das-Init-System-Systemd-Teil-1-1563259.html?artikelseite=4
 +
* https://www.digitalocean.com/community/tutorials/how-to-use-journalctl-to-view-and-manipulate-systemd-logs
 +
* https://www.admin-magazin.de/Das-Heft/2014/10/Systemstart-mit-Systemd-unter-Linux

Aktuelle Version vom 19. September 2024, 13:04 Uhr