SYSTEMD.GENERATOR(7) | systemd.generator | SYSTEMD.GENERATOR(7) |
systemd.generator - Systemd Unit-Generatoren
/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/* /lib/systemd/system-generators/*
/run/systemd/user-generators/* /etc/systemd/user-generators/* /usr/local/lib/systemd/user-generators/* /usr/lib/systemd/user-generators/*
Generatoren sind kleine Programme, die sich in /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 für .d-Verzeichnisse für Unit-Ergänzungsdateien 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.
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.
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.
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.
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.
Die Anweisung SourcePath= sollte in erstellten Dateien verwandt werden, um die Quellkonfigurationsdatei, aus der die Unit erstellt wurde, anzugeben. 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.
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.
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 /lib/systemd/system-generators/systemd-fstab-generator \
"$dir" "$dir" "$dir" find $dir
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-xdg-autostart-generator(8), systemd.unit(5), systemctl(1), systemd.environment-generator(7)
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 die Mailingliste der Übersetzer.
systemd 247 |