2 KiB
2 KiB
title | data |
---|---|
systemd.generator(7) | 2019-03-14 |
systemd.generator(7)
Dynamische Systeme sind schwierig
- ➤ Devices, Mountpoints, Services, Timer möglichst als Unit
- Transitionstechnologie für
/etc/fstab
und SysV init-Skripte - Hooks für den Bootprozess (System-Update, Resume, Debug ...)
- Umgebungsvariablen setzen
- ➤ Generatoren generieren beim Boot dynamisch Units
Calling convention
# /path/to/generator normal-dir early-dir late-dir
- Generatoren sind in
/run/systemd/{system,user}-generators/*
/etc/systemd/{system,user}-generators/*
/usr/lib/systemd/{system,user}-generators/*
/usr/local/lib/systemd/{system,user}-generators/*
Generierte Units
- neu generieren mit
systemctl daemon-reload
- generierte Units landen in
normal-dir
➤/run/systemd/generator
early-dir
➤/run/systemd/generator.early
late-dir
➤/run/systemd/generator.late
Templating
- generierte Units dürfen auch sein
- Templates
- Instanzen von Templates (
getty@tty1.service
)
- Generatoren können auch Symlinks in
.wants/
,.target
und.requires/
erstellen
Abhängigkeiten vermeiden
- kein syslog oder journal benutzen
- keine Units starten
- keine nicht essentiellen Dateisysteme verwenden (aber /proc, /usr, /sys und /dev)
- Generatoren werden parallel ausgeführt
Performance
kann Boot verlangsamen ➤ Nicht mit bash implementieren, lieber C
Debugging
dir=$(mktemp -d)
SYSTEMD_LOG_LEVEL=debug /usr/lib/systemd/system-generators/systemd-fstab-generator "$dir" "$dir" "$dir"
find $dir
- syslog(3) ist nicht vefügbar
- keine Magie versuchen
Nicht geeignet für
- Ersatz von init-Skripten ➤ systemd-sysv-generator(8)
- dynamische Konfigurationsdateien
➤
ExecStartPre=
oder Service mitBefore=
Beispiele
-
systemd-fstab-generator(8)
-
systemd-debug-generator(8)
-
systemd-getty-generator(8)
-
systemd-sysv-generator(8)
-
systemd.environment-generator(7)
Source
man 7 systemd.generator