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: 1.Einfache Verzeichnisse oder
Btrfs-Teildatenträger, die den Betriebssystembaum enthalten
2.Plattenabbilder mit einer
GPT-Festplattenbezeichnung gemäß der Spezifikation für
auffindbare Partitionen[1]
3.Plattenabbilder, denen eine
Partitionstabelle fehlt, mit einem nackten Linux-Dateisystem (z.B. Squashfs
oder Ext4)
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: statusBeim Aufruf ohne ein Befehlsverb oder wenn
status angegeben ist, wird der derzeitige Zusammenführungsstatus
angezeigt, separat für sowohl /usr/ als auch /opt/.
merge
Führt alle derzeit installierten
Systemerweiterungsabbilder in /usr/ und /opt/ zusammen, indem diese
Hierarchien mit dem Dateisystem »overlayfs«
übereinandergehängt werden und dadurch die zugrundeliegenden
Hierarchien mit denen aus den Erweiterungsabbildern kombiniert werden. Dieser
Befehl wird fehlschlagen, wenn die Hierarchien bereits zusammengeführt
sind.
unmerge
Trennt alle derzeit installierten
Systemerweiterungsabbilder von /usr/ und /opt/ auf, indem die vorher durch
merge erstellten »overlayfs«-Dateisysteme
ausgehängt werden.
refresh
Eine Kombination von unmerge und
merge: Falls bereits eingehängt, wird die bestehende
»overlayfs«-Instanz temporär ausgehängt und dann
durch eine neue Version ersetzt. Dieser Befehl ist nach der
Installation/Entfernung von Systemerweiterungsabbildern nützlich, um
das »overlayfs«-Dateisystem entsprechend zu aktualisieren. Falls
zum Zeitpunkt der Ausführung dieses Befehls keine Systemerweiterungen
installiert sind, dann wird das Äquivalent von unmerge
ausgeführt, ohne eine neue »overlayfs«-Instanz zu
etablieren. Beachten Sie, dass es derzeit einen kurzen Moment gibt, zu dem
weder das alte noch das neue »overlayfs«-Dateisystem
eingehängt sind. Daraus folgt, dass alle durch eine Systemerweiterung
bereitgestellten Ressourcen kurzzeitig verschwinden — selbst wenn sie
dauerhaft während einer refresh-Aktion bestehen bleiben.
list
Zeigt eine kurze Liste der installierten
Erweiterungsabilder an.
-h, --help
Zeigt einen kurzen Hilfetext an und beendet
das Programm.
--version
Zeigt eine kurze Versionszeichenkette an und
beendet das Programm.
OPTIONEN
--root=Agiert relativ zu dem festgelegten
Wurzelverzeichnis, d.h. richtet die
»overlayfs«-Einhängung nicht auf den Hierarchien /usr/
und /opt/ auf der obersten Stufe des Rechners ein, sondern unterhalb eines
festgelegten Wurzelverzeichnisses.
--force
Bei der Zusammenführung von
Systemerweiterungen in /usr/ und /opt/ werden
Versionsinkompatibilitäten ignoriert, d.h. das Zusammenführen
wird erzwungen, unabhängig davon, ob die im Erweiterungsabbild
enthaltenen Versionsinformationen zu denen des Rechners passen oder
nicht.
--no-pager
Leitet die Ausgabe nicht an ein
Textanzeigeprogramm weiter.
--no-legend
Gibt die Legende nicht aus, d.h. die
Spaltenköpfe und die Fußzeile mit Hinweisen.
--json=MODUS
Zeigt die Ausgabe als JSON formatiert.
Erwartet entweder »short« (für die kürzest
mögliche Ausgabe ohne unnötigen Leerraum oder
Zeilenumbrüche), »pretty« (für eine
schönere Version der gleichen Ausgabe, mit Einzügen und
Zeilenumbrüchen) oder »off« (um die
standardmäßig aktivierte JSON-Ausgabe auszuschalten).
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 <[email protected]> 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 Übersetzersystemd 252 |