systemd.generator

SYSTEMD.GENERATOR(7)           systemd.generator          SYSTEMD.GENERATOR(7)



BEZEICHNUNG
       systemd.generator - Systemd Unit-Generatoren

ÃBERSICHT
       /Pfad/zum/Generator normales-Verz frühes-Verz spätes-Verz

       /run/systemd/system-generators/*
       /etc/systemd/system-generators/*
       /usr/local/lib/systemd/system-generators/*
       /usr/lib/systemd/system-generators/*

       /run/systemd/user-generators/*
       /etc/systemd/user-generators/*
       /usr/local/lib/systemd/user-generators/*
       /usr/lib/systemd/user-generators/*


BESCHREIBUNG
       Generatoren sind kleine Programme, die sich in
       /usr/lib/systemd/system-generators/und anderen oben aufgeführten
       Verzeichnissen befinden. systemd(1) führt solche Programme sehr früh
       beim Systemstart und zum Zeitpunkt des Neuladens der Konfiguration aus,
       — bevor Unit-Dateien geladen werden. Ihr Hauptzweck besteht in der
       Umwandlung von nicht nativer Konfiguration in dynamisch erstellte
       Unit-Dateien.

       Jeder Generator wird mit drei Verzeichnispfaden, die für die Ausgabe
       der Generatoren verwandt werden, aufgerufen. In diesen drei
       Verzeichnissen dürfen Generatoren Unit-Dateien (reguläre, Instanzen
       sowie Vorlagen) und Teildateien für .d-Verzeichnisse erstellen und
       symbolische Links auf Unit-Dateien erstellen, um zusätzliche
       Abhängigkeiten zu erstellen, Aliase zu erstellen oder bestehende
       Vorlagen zu instantiieren.

       Verzeichnispfade unterscheiden sich durch Priorität:
       â¦/generator.early hat höhere Priorität als die
       Administratorkonfiguration in /etc, während â¦/generator eine
       niedrigere Priorität als /etc, aber eine höhere als die der
       Lieferantenkonfiguration in /usr hat. â¦/generator.late hat eine
       niederigere Priorität als alle anderen Konfigurationen. Siehe den
       nächsten Abschnitt und die Diskussion von Unit-Ladepfaden und
       Unit-AuÃerkraftsetzungen in systemd.unit(5).

       Generatoren werden aus einer Gruppe von Pfaden, wie oben aufgeführt,
       die während der Ãbersetzung bestimmt wird, geladen. System- und
       Benutzergeneratoren werden von Verzeichnissen mit Namen, die auf
       system-generators/ bzw. user-generators/ enden, geladen. Zuerst in den
       Verzeichnissen gefundene Generatoren setzen diejenigen, mit dem
       gleichen Namen in Verzeichnissen weiter hinten in der Liste stehen,
       auÃer Kraft. Ein Symlink auf /dev/null oder eine leere Datei kann zum
       Ausmaskieren eines Generators verwandt und damit dessen Ausführung
       verhindert werden. Bitte beachten Sie, dass die Reihenfolge der zwei
       Verzeichnisse mit der höchsten Priorität in Hinblick auf den
       Unit-Ladepfad invertiert ist und dass Generatoren in /run solche in
       /etc auÃer Kraft setzen.

       Nach der Installation neuer Generatoren oder der Aktualisierung der
       Konfiguration darf systemctl daemon-reload ausgeführt werden. Dies
       löscht die vorherige, von den Generatoren erstellte Konfiguration,
       führt alle Generatoren erneut aus und führt dazu, dass systemd alle
       Units von Platte neu lädt. Siehe systemctl(1) für weitere
       Informationen.

AUSGABEVERZEICHNISSE
       Generatoren werden mit drei Argumenten aufgerufen: Pfade zu
       Verzeichnissen, in denen Generatoren ihre erstellten Unit-Dateien oder
       Symlinks ablegen können. StandardmäÃig sind diese Pfade
       Laufzeitverzeichnisse, die im Suchpfad von systemd enthalten sind, aber
       zu Fehlersuchzwecken kann ein Generator mit anderen Pfaden aufgerufen
       werden.

        1. normales-Verz

           Bei normaler Verwendung ist dies /run/systemd/generator im Falle
           von Systemgeneratoren und $XDG_RUNTIME_DIR/generator im Falle von
           Benutzergeneratoren. Unit-Dateien, die in diesen Verzeichnissen
           abgelegt sind, haben vor der Lieferanten-Unit-Konfiguration
           Vorrang, aber nicht vor der nativen
           Benutzer-/Administrator-Unit-Konfiguration.

        2. frühes-Verz

           Bei normaler Verwendung ist dies /run/systemd/generator.early im
           Falle von Systemgeneratoren und $XDG_RUNTIME_DIR/generator.early im
           Falle von Benutzergeneratoren. Unit-Dateien, die in diesen
           Verzeichnissen abgelegt sind, setzen Unit-Dateien in /usr, /run und
           /etc auÃer Kraft. Dies bedeutet, dass Unit-Dateien, die in diesen
           Verzeichnissen abgelegt sind, Vorrang vor der gesamten normalen
           Konfiguration haben, sowohl von Lieferanten als auch vom
           Benutzer/Administrator.

        3. spätes-Verz

           Bei normaler Verwendung ist dies /run/systemd/generator.late im
           Falle von Systemgeneratoren und $XDG_RUNTIME_DIR/generator.late im
           Falle von Benutzergeneratoren. Dieses Verzeichnis kann dazu
           verwandt werden, den Unit-Dateibaum auszuweiten, ohne irgendeine
           andere Unit-Datei auÃer Kraft zu setzen. Jede vom Lieferanten oder
           vom Benutzer/Administrator bereitgestellte native
           Konfigurationsdatei hat Vorrang.

HINWEISE ZUM SCHREIBEN VON GENERATOREN
       ·   Alle Generatoren werden parallel ausgeführt. Das bedeutet, alle
           Programme werden genau zur gleichen Zeit gestartet und müssen mit
           dieser Parallelisierung umgehen können.

       ·   Generatoren laufen sehr früh beim Systemstart und können sich
           nicht auf irgendeinen externen Dienst verlassen. Sie dürfen mit
           keinem anderen Prozess kommunizieren. Dies betrifft einfache Dinge
           wie die Protokollierung nach syslog(3) oder systemd selbst (dies
           heiÃt: kein systemctl(1))! Nicht grundlegende Dateisysteme wie /var
           und /home werden nach dem Lauf der Generatoren eingehängt.
           Allerdings können sich die Generatoren darauf verlassen, dass die
           grundlegendsten Kernelfunktionalitäten vorhanden sind, darunter
           ein eingehängtes /sys, /proc, /dev, /usr.

       ·   Von Generatoren geschriebene Units werden entfernt, wenn die
           Konfiguration neu geladen wird. Das heiÃt, die Lebensdauer der
           generierten Units hängt eng mit den Neuladezyklen von systemd
           selbst zusammen.

       ·   Generatoren sollten nur zur Generierung von Unit-Dateien und
           Symlinks darauf verwandt werden, nicht für andere Arten von
           Konfiguration. Aufgrund der oben erwähnten Lebenszykluslogik sind
           Generatoren für die dynamische Konfiguration von anderen Diensten
           unpassend. Falls Sie dynamische Konfiguration für andere Dienste
           generieren müssen, erledigen Sie dies in normalen Diensten, die
           Sie vor dem in Frage kommenden Dienst anweisen.

       ·   Da syslog(3) nicht verfügbar ist (siehe oben), müssen
           Protokollmeldungen stattdessen nach /dev/kmsg geschrieben werden.

       ·   Der Generator sollte immer seinen eigenen Namen in einem Kommentar
           am Anfang der erstellten Datei einbinden, so dass der Benutzer
           leicht herausfinden kann, welche Komponente eine bestimmte Unit
           erstellte oder ergänzte.

           Die Anweisung SourcePath= sollte in erstellten Dateien verwandt
           werden, um die Quellkonfigurationsdatei, aus der die Unit erstellt
           wurde, festzulegen. Damit verstehen die Benutzer die Dinge leichter
           und dies hat auch den Vorteil, dass Systemd den Benutzer bezüglich
           Konfigurationsdateien, die sich auf Platte verändert haben, aber
           noch nicht von Systemd gelesen wurden, warnen kann. Der Wert
           SourcePath= muss keine Datei in einem physischen Dateisystem sein.
           Im häufigen Beispiel, dass der Generator nach einer
           Kernelbefehlszeile sucht, sollte SourcePath=/proc/cmdline verwandt
           werden.

       ·   Generatoren dürfen dynamische Unit-Dateien schreiben oder mit den
           normalen Symlinks .wants/ oder .requires/ Unit-Dateien in andere
           Unit-Dateien einhängen. Oft ist es es besser, einfach eine Instanz
           einer Vorlagen-Unit-Datei aus /usr mit einem Generator zu erzeugen,
           statt komplett dynamische Unit-Dateien zu schreiben. Natürlich
           funktioniert dies nur, falls ein einzelner Parameter verwandt
           werden soll.

       ·   Falls Sie vorsichtig sind, können Sie Generatoren in
           Shell-Skripten implementieren. Wir empfehlen allerdings C-Code, da
           Generatoren synchron ausgeführt werden und daher den Systemstart
           verzögern können, falls sie langsam sind.

       ·   Bezüglich der Semantik beim AuÃer-Kraft-Setzen: Es gibt zwei
           Regeln, denen wir zu folgen versuchen, wenn wir über die Semantik
           beim AuÃer-Kraft-Setzen nachdenken:

            1. Benutzerkonfiguration sollte die Lieferantenkonfiguration auÃer
               Kraft setzen. Das bedeutet (hauptsächlich), dass Zeug aus /etc
               Zeug aus /usr auÃer Kraft setzen sollte.

            2. Native Konfiguration sollte nicht native Konfiguration auÃer
               Kraft setzen. Das bedeutet (hauptsächlich), dass von Ihnen
               generiertes Zeug niemals native Unit-Dateien für den gleichen
               Zweck auÃer Kraft setzen sollte.

           Von diesen Regeln ist die erste die wichtigere und bricht manchmal
           die zweite. Daher sollte die Vorgabewahl bei der Entscheidung, ob
           Sie argv[1], argv[2] oder argv[3] verwenden, wahrscheinlich argv[1]
           sein.

       ·   Statt jetzt loszulegen und alle möglichen Arten von Generatoren
           für veraltete Konfigurationsdateiformate zu schreiben, denken Sie
           bitte zwei Mal nach! Es ist oft besser, das alte Zeug als veraltet
           zu markieren, statt es künstlich am Leben zu erhalten.

BEISPIELE
       Beispiel 1. systemd-fstab-generator

       systemd-fstab-generator(8) konvertiert /etc/fstab in native
       Einhänge-Units. Es verwendet argv[1] als Ablageort der generierten
       Unit-Dateien, um dem Benutzer zu erlauben, /etc/fstab mit seinen
       eigenen nativen Unit-Dateien auÃer Kraft zu setzen, aber um auch
       sicherzustellen, dass /etc/fstab jede Lieferantenvorgabe aus /usr auÃer
       Kraft setzt.

       Nach der Bearbeitung von /etc/fstab sollte der Benutzer systemctl
       daemon-reload aufrufen. Dies wird alle Generatoren erneut ausführen
       und systemd veranlassen, alle Units von Platte neu zu laden. Um
       tatsächlich neue Verzeichnisse zu Fstab hinzuzufügen, können
       systemctl start /Pfad/zum/Einhängepunkt oder systemctl start
       local-fs.target verwandt werden.

       Beispiel 2. systemd-system-update-generator

       systemd-system-update-generator(8) leitet default.target temporär auf
       system-update.target um, falls eine Systemaktualisierung angesetzt ist.
       Da dies die Vorgabebenutzerkonfiguration für default.target auÃer
       Kraft setzen muss, verwendet es argv[2]. Für Details zu dieser Logik
       lesen Sie bitte systemd.offline-updates(7).

       Beispiel 3. Fehlersuche in einem Generator

           dir=$(mktemp -d)
           SYSTEMD_LOG_LEVEL=debug /usr/lib/systemd/system-generators/systemd-fstab-generator \
                   "$dir" "$dir" "$dir"
           find $dir

SIEHE AUCH
       systemd(1), systemd-cryptsetup-generator(8),
       systemd-debug-generator(8), systemd-fstab-generator(8), fstab(5),
       systemd-getty-generator(8), systemd-gpt-auto-generator(8),
       systemd-hibernate-resume-generator(8), systemd-rc-local-generator(8),
       systemd-system-update-generator(8), systemd-sysv-generator(8),
       systemd.unit(5), systemctl(1), systemd.environment-generator(7)


ÃBERSETZUNG
       Die deutsche Ãbersetzung dieser Handbuchseite wurde von Helge
       Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Ãbersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Ãbersetzung dieser Handbuchseite finden,
       schicken Sie bitte eine E-Mail an <debian-l10n-
       german@lists.debian.org>.



systemd 242                                               SYSTEMD.GENERATOR(7)