table of contents
- bookworm 4.18.1-1
- bookworm-backports 4.24.0-2~bpo12+1
- testing 4.24.0-2
- unstable 4.24.0-2
SYSTEMD-SYSEXT(8) | systemd-sysext | SYSTEMD-SYSEXT(8) |
BEZEICHNUNG¶
systemd-sysext, systemd-sysext.service - Aktivierung von Systemerweiterungsabbildern
ÜBERSICHT¶
systemd-sysext [OPTIONEN…] BEFEHL
systemd-sysext.service
BESCHREIBUNG¶
systemd-sysext (de)aktiviert Systemerweiterungsabbilder. Diese können die /usr/- und /opt/-Hierarchien dynamisch zur Laufzeit mit zusätzlichen Dateien erweitern. Dies ist besonders für unveränderbare Systemabbilder nützlich, bei der eine /usr/- und/oder /opt/-Hierarchie auf einem schreibgeschützten Dateisystem vorübergehend zur Laufzeit erweitert werden soll, ohne daran dauerhafte Veränderungen vorzunehmen.
Systemerweiterungsabbilder sollten Dateien und Verzeichnisse auf eine ähnliche Art wie bei einem normalen Betriebssystembaum enthalten. Werden eine oder mehrere Systemerweiterungsabbilder aktiviert, werden ihre /usr/- und /opt/-Hierarchien mittels »overlayfs« mit den gleichen Hierarchien auf dem Systembetriebssystem kombiniert und die /usr/ und /opt/ des Abbildes werden darüber eingehängt (»zusammengeführt«). Werden die Erweiterungen deaktiviert, wird der Einhängepunkt auseinandergenommen — dadurch wird die unveränderte Version der Hierarchie des Systems wieder sichtbar (»auseinandernehmen«). Durch das Zusammenführen werden die Ressourcen der Erweiterung plötzlich unterhalb der /usr/- und /opt/-Hierarchien auftauchen, als ob sie Teil des grundlegenden Betriebssystemabbildes selbst wären. Beim Auseinandernehmen werden die Ressourcen wieder verschwinden und an der Stelle verbleiben nur die Dateien, die mit dem zugrundeliegenden Betriebssystemabbild selbst ausgeliefert wurden.
Dateien und Verzeichnisse, die sich im Erweiterungsabbild außerhalb der /usr/- und /opt/-Hierarchien befinden, werden nicht zusammengeführt und haben daher keine Auswirkung, wenn sie in ein Systemerweiterungsabbild aufgenommen werden. Insbesondere werden Dateien, die in /etc/ und /var in einem Systemerweiterungsabbild enthalten sind, nicht in den entsprechenden Hierarchien nach der Aktivierung auftauchen.
Systemerweiterungsabbilder sind streng schreibgeschützt und die Hierarchien /usr/ und /opt/ des Rechners werden ebenfalls schreibgeschützt, solange sie aktiviert sind.
Systemerweiterungen sollen rein ergänzend sein, d.h. sie sollen nur Dateien enthalten, die im zugrundeliegenden Betriebssystemabbild nicht enthalten sind. Allerdings erlaubt der zugrundeliegende Mechanismus (Overlayfs) auch das Überdecken und Entfernen von Dateien, allerdings wird empfohlen, dies nicht zu verwenden.
Systemerweiterungsabbilder können in den folgenden Formaten bereitgestellt werden:
Diese Abbildformate sind die gleichen, die systemd-nspawn(1) mittels der Schalter --directory=/--image= und die der Diensteverwalter mittels RootDirectory=/RootImage= unterstützt. Ähnlich wie dort können sie optional Verity-Authentifizierungsinformationen tragen.
Es wird automatisch in den Verzeichnissen /etc/extensions/, /run/extensions/, /var/lib/extensions/, /usr/lib/extensions/ und /usr/local/lib/extensions/ nach Systemerweiterungen gesucht. Die ersten zwei aufgeführten Verzeichnisse sind nicht zum Überbringen von großen Binär-Abbildern geeignet, allerdings weiterhin zum Überbringen von Symlinks darauf. Der Hauptort zur Installation von Systemerweiterungen ist /var/lib/extensions/. Alle in diesen Suchverzeichnissen gefundenen Verzeichnisse werden als Verzeichnis-basierte Erweiterungsabbilder und alle Dateien mit der Endung .raw werden als plattenbasierte Erweiterungsabbilder betrachtet.
Während des Systemstarts werden Systemerweiterungsabbilder automatisch aktiviert, falls der systemd-sysext.service aktiviert ist. Beachten Sie, dass dieser Dienst erst ausgeführt wird, wenn die zugrundeliegenden Dateisysteme, auf denen Systemerweiterungen gefunden werden können, eingehängt wurden. Das bedeutet, dass sie nicht dazu geeignet sind, Ressourcen auszuliefern, die von Subsystemen verarbeitet werden, die in der frühsten Systemstartphase ausgeführt werden. Insbesondere sind Betriebssystemabbilder nicht dazu geeignet, System-Dienste oder systemd-sysusers(8)-Definitionen auszuliefern. Siehe Portierbare Dienste[2] für einen einfachen Mechanismus (ähnlich zu Betriebssystemabbildern) zum Ausliefern von Systemdiensten in Plattenabbildern. Beachten Sie die unterschiedlichen Isolationsmechanismen bei diesen zwei Varianten: Während Systemerweiterungen direkt das zugrundeliegende Betriebssystemabbild mit zusätzlichen Dateien erweitern, die auf eine ähnliche Art auftauchen, als wenn sie vom Betriebssystemabbild selbst ausgeliefert worden wären und daher keinerlei Sicherheitsisolationen implizieren, implizieren portierbare Dienste ein Sandboxing auf die eine oder andere Art auf Ebene des Dienstes. Es wird garantiert, dass der systemd-sysext.service sein Hochfahren beendet, bevor basic.target erreicht wird; d.h. zum Zeitpunkt, zu dem reguläre Dienste initialisieren (solche, die DefaultDependencies=no nicht verwenden), sind die Dateien und Verzeichnisse, die die Systemerweiterungen bereitstellen, in /usr/ und /opt/ für den Zugriff bereit.
Beachten Sie, dass es kein Konzept zum Aktivieren/Deaktivieren installierter Systemerweiterungsabbilder gibt: alle installierten Erweiterungsabbilder werden beim Systemstart automatisch aktiviert. Sie können allerdings ein leeres Verzeichnis in /etc/extensions/ anlegen, das den entsprechenden Namen wie die Erweiterung (ohne .raw) hat, um eine Erweiterung mit dem gleichen Namen in einem Systemverzeichnis mit niedrigerer Priorität zu »maskieren«.
Es wird ein einfacher Mechanismus zur Versionskompatibilität durchgesetzt: Ein Systemerweiterungsabbild muss eine Datei /usr/lib/extension-release.d/extension-release.$name transportieren, die auf seinen Abbildnamen passen muss, die mit der Datei »os-release« verglichen wird: die enthaltenen Felder ID= müssen übereinstimmen, außer »_any« wurde für die Erweiterung gesetzt. Falls die ID= der Erweiterung nicht »_any« ist, muss das Feld SYSEXT_LEVEL= (falls definiert) passen. Falls Letzteres nicht definiert ist, müssen stattdessen die Felder VERSION_ID= übereinstimmen. Falls die Erweiterung das Feld ARCHITECTURE= definiert und der Wert nicht »_any« ist, muss er auf die Architektur des Kernels passen, wie diese von uname(2) berichtet wird, aber die verwandten Architekturkennzeichner sind die gleichen wie bei ConditionArchitecture= (in systemd.unit(5) beschrieben). Systemerweiterungsabbilder sollten keine Datei /usr/lib/os-release ausliefern (da diese in den /usr/-Baum des Rechners integriert würde und damit die Versionsdaten des Rechnerbetriebssystems außer Kraft setzen würde, was nicht wünschenswert ist). Die Datei extension-release folgt dem gleichen Format und der gleichen Semantik und transportiert den gleichen Inhalt wie die Datei os-release des Betriebssystems aber sie beschreibt die Ressourcen, die im Erweiterungsabbild transportiert werden.
VERWENDUNGEN¶
Der primäre Einsatzfall für Systemabbilder sind unveränderbare Umgebungen, bei denen optional Fehlersuch- und Entwicklungswerkzeuge verfügbar gemacht werden sollen, die aber nicht im unveränderbaren, grundlegenden Betriebssystemabbild enthalten sind (z.B. strace(1) und gdb(1) sollen eine optionale Ergänzung sein, um die Fehlersuche/Entwicklung zu vereinfachen). Systemerweiterungsabbilder sollten nicht als ein generisches Software-Paketierungs-Rahmenwerk missverstanden werden, da kein Abhängigkeitsschema verfügbar ist: Systemerweiterungen sollten alle Dateien transportieren, die sie selbst benötigen, außer denen, die bereits in dem zugrundeliegenden Betriebssystemabbild ausgeliefert sind. Typischerweise werden Systemerweiterungsabbilder zum gleichen Zeitpunkt gebaut, zu dem auch das zugrundeliegende Betriebssystemabbild gebaut wurde — innerhalb des gleichen Bausystems.
Ein anderer Anwendungsfall für das Konzept der Systemerweiterung ist das temporäre Außerkraftsetzen von Ressourcen, die vom Betriebssystem bereitgestellt werden, durch neuere, beispielsweise um eine lokal kompilierte Entwicklungsversion einer systemnahen Komponenten über das unveränderbare Betriebssystemabbild zu installieren, ohne das Betriebssystem komplett neu zu bauen oder das dem Namen nach unveränderbare Abbild zu verändern (z.B. ein lokal gebautes Paket mit DESTDIR=/var/lib/extensions/mytest make install && systemd-sysext refresh zu »installieren« und es unter /usr/ bereitzustellen, als ob es im Betriebssystemabbild selbst installiert wäre). Dieser Fall funktioniert unabhängig davon, ob das /usr/ des Rechners als unveränderbares Plattenabbild verwaltet wird oder ein traditionell durch einen Paketverwalter gesteuerter (d.h. schreibbarer) Baum ist.
BEFEHLE¶
Die folgenden Befehle werden verstanden:
status
merge
unmerge
refresh
list
-h, --help
--version
OPTIONEN¶
--root=
--force
--no-pager
--no-legend
--json=MODUS
EXIT-STATUS¶
Bei Erfolg wird 0 zurückgeliefert.
SIEHE AUCH¶
systemd(1), systemd-nspawn(1)
ANMERKUNGEN¶
- 1.
- Spezifikation für auffindbare Partitionen
- 2.
- Portable Dienste
Ü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 die Mailingliste der Übersetzer.
systemd 252 |