SYSTEMD-SYSEXT(8) systemd-sysext SYSTEMD-SYSEXT(8) BEZEICHNUNG systemd-sysext, systemd-sysext.service, systemd-confext, systemd-confext.service- Aktivierung von Systemerweiterungsabbildern UBERSICHT systemd-sysext [OPTIONEN] BEFEHL systemd-sysext.service systemd-confext [OPTIONEN] BEFEHL systemd-confext.service BESCHREIBUNG systemd-sysext (de)aktiviert Systemerweiterungsabbilder. Diese konnen die /usr/- und /opt/-Hierarchien dynamisch zur Laufzeit mit zusatzlichen Dateien erweitern. Dies ist besonders fur unveranderbare Systemabbilder nutzlich, bei der eine /usr/- und/oder /opt/-Hierarchie auf einem schreibgeschutzten Dateisystem vorubergehend zur Laufzeit erweitert werden soll, ohne daran dauerhafte Veranderungen vorzunehmen. Systemerweiterungsabbilder sollten Dateien und Verzeichnisse auf eine ahnliche 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 daruber eingehangt (>>zusammengefuhrt<<). Werden die Erweiterungen deaktiviert, wird der Einhangepunkt auseinandergenommen -- dadurch wird die unveranderte Version der Hierarchie des Systems wieder sichtbar (>>auseinandernehmen<<). Durch das Zusammenfuhren werden die Ressourcen der Erweiterung plotzlich unterhalb der /usr/- und /opt/-Hierarchien auftauchen, als ob sie Teil des grundlegenden Betriebssystemabbildes selbst waren. 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 ausserhalb der /usr/- und /opt/-Hierarchien befinden, werden nicht zusammengefuhrt 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 schreibgeschutzt und die Hierarchien /usr/ und /opt/ des Rechners werden ebenfalls schreibgeschutzt, solange sie aktiviert sind. Systemerweiterungen sollen rein erganzend sein, d.h. sie sollen nur Dateien enthalten, die im zugrundeliegenden Betriebssystemabbild nicht enthalten sind. Allerdings erlaubt der zugrundeliegende Mechanismus (Overlayfs) auch das Uberdecken und Entfernen von Dateien, allerdings wird empfohlen, dies nicht zu verwenden. Systemerweiterungsabbilder konnen in den folgenden Formaten bereitgestellt werden: 1. Einfache Verzeichnisse oder Btrfs-Teildatentrager, die den Betriebssystembaum enthalten 2. Plattenabbilder mit einer GPT-Festplattenbezeichnung gemass der Spezifikation fur auffindbare Partitionen[1] 3. Plattenabbilder, denen eine Partitionstabelle fehlt, mit einem nackten Linux-Dateisystem (z.B. Erofs, Squashfs oder Ext4) Diese Abbildformate sind die gleichen, die systemd-nspawn(1) mittels der Schalter --directory=/--image= und die der Diensteverwalter mittels RootDirectory=/RootImage= unterstutzt. Ahnlich wie dort konnen sie optional Verity-Authentifizierungsinformationen tragen. Es wird in den Verzeichnissen /etc/extensions/, /run/extensions/ und /var/lib/extensions/ nach Systemerweiterungen gesucht. Die ersten zwei aufgefuhrten Verzeichnisse sind nicht zum Uberbringen von grossen Binar-Abbildern geeignet, allerdings weiterhin zum Uberbringen 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. Beim Aufruf in der Initrd wird das zusatzliche Verzeichnis /.extra/sysext/ in die nach Erweiterungsabbilder zu durchsuchenden Verzeichnisse eingeschlossen. Beachten Sie allerdings, dass standardmassig eine striktere Abbildrichtline fur dort gefundene Abbilder gilt, siehe unten. Dieses Verzeichnis wird durch systemd-stub(7) mit Erweiterungsabbildern gefullt, die in der EFI-System-Partition des Systems gefunden wurden Wahrend des Systemstarts werden Systemerweiterungsabbilder automatisch aktiviert, falls der systemd-sysext.service aktiviert ist. Beachten Sie, dass dieser Dienst erst ausgefuhrt wird, wenn die zugrundeliegenden Dateisysteme, auf denen Systemerweiterungen gefunden werden konnen, eingehangt wurden. Das bedeutet, dass sie nicht dazu geeignet sind, Ressourcen auszuliefern, die von Subsystemen verarbeitet werden, die in der fruhsten Systemstartphase ausgefuhrt werden. Insbesondere sind Betriebssystemabbilder nicht dazu geeignet, System-Dienste oder systemd-sysusers(8)-Definitionen auszuliefern. Siehe die Seite Portierbare Dienste[2] fur einen einfachen Mechanismus (ahnlich zu Betriebssystemabbildern) zum Ausliefern von Systemdiensten in Plattenabbildern. Beachten Sie die unterschiedlichen Isolationsmechanismen bei diesen zwei Varianten: Wahrend Systemerweiterungen direkt das zugrundeliegende Betriebssystemabbild mit zusatzlichen Dateien erweitern, die auf eine ahnliche Art auftauchen, als wenn sie vom Betriebssystemabbild selbst ausgeliefert worden waren 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 regulare Dienste initialisieren (solche, die DefaultDependencies=no nicht verwenden), sind die Dateien und Verzeichnisse, die die Systemerweiterungen bereitstellen, in /usr/ und /opt/ fur den Zugriff bereit. Beachten Sie, dass es kein Konzept zum Aktivieren/Deaktivieren installierter Systemerweiterungsabbilder gibt: alle installierten Erweiterungsabbilder werden beim Systemstart automatisch aktiviert. Sie konnen 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 Prioritat zu >>maskieren<<. Es wird ein einfacher Mechanismus zur Versionskompatibilitat 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= mussen ubereinstimmen, ausser >>_any<< wurde fur die Erweiterung gesetzt. Falls die ID= der Erweiterung nicht >>_any<< ist, muss das Feld SYSEXT_LEVEL= (falls definiert) passen. Falls Letzteres nicht definiert ist, mussen stattdessen die Felder VERSION_ID= ubereinstimmen. 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). EXTENSION_RELOAD_MANAGER= kann auf 1 gesetzt werden, falls die Erweiterung ein Neuladen des Diensteverwalters nach der Anwendung der Erweiterung benotigt. Beachten Sie, dass aufgrund der weiter oben beschriebenen Grunde die Portablen Dienste[2] die empfohlene Art bleiben, um System-Dienste auszuliefern. Systemerweiterungsabbilder sollten keine Datei /usr/lib/os-release ausliefern (da diese in den /usr/-Baum des Rechners integriert wurde und damit die Versionsdaten des Rechnerbetriebssystems ausser Kraft setzen wurde, was nicht wunschenswert 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. Das Konzept systemd-confext folgt den gleichen Prinzipien wie die Funktionalitat systemd-sysext(1), statt aber auf /usr und /opt zu arbeiten, wird confext nur /etc erweitern. Im Confext-Abbild enthaltene Dateien und Verzeichnisse ausserhalb der Hierarchie /etc/ werden nicht zusammengefuhrt und haben daher keine Auswirkung, wenn sie im Abbild aufgenommen werden. Die fur diese Abbilder verwandten Formate sind identisch zu denen von Sysext-Abbildern. Die zusammengefuhrten Hierarchien werden mit >>nosuid<< und mit >>noexec<< (falls nicht uber --noexec=false deaktiviert) eingehangt. Es wird in den Verzeichnissen /run/confexts/, /var/lib/confexts/, /usr/lib/confexts/ und /usr/local/lib/confexts/ nach Confexts geschaut. Das erste aufgefuhrte Verzeichnis ist nicht zum Uberbringen von grossen Binar-Abbildern geeignet, allerdings weiterhin zum Uberbringen von Symlinks darauf. Der Hauptort zur Installation von Konfigurationserweiterungen ist /var/lib/confexts/. Alle in diesen Suchverzeichnissen gefundenen Verzeichnisse werden als Verzeichnis-basierte Confext-Abbilder und alle Dateien mit der Endung .raw werden als plattenbasierte Confext-Abbilder betrachtet. Wie bei Sysext-Abbildern werden auch die Confext-Abbilder eine Datei /etc/extension-release.d/extension-release.NAME enthalten, die auf den Abbildnamen passen muss (mit dem normalen Notausstieg des user.extension-release.strict xattr(7)) und der Inhalt eines oder mehrere aus ID=, VERSION_ID= und CONFEXT_LEVEL sein muss. Confext-Abbilder werden dann uberpruft und mit der grundlegenden Betriebssystemschicht verglichen. VERWENDUNGEN Der primare Einsatzfall fur Systemabbilder sind unveranderbare Umgebungen, bei denen optional Fehlersuch- und Entwicklungswerkzeuge verfugbar gemacht werden sollen, die aber nicht im unveranderbaren, grundlegenden Betriebssystemabbild enthalten sind (z.B. strace(1) und gdb(1) sollen eine optionale Erganzung sein, um die Fehlersuche/Entwicklung zu vereinfachen). Systemerweiterungsabbilder sollten nicht als ein generisches Software-Paketierungs-Rahmenwerk missverstanden werden, da kein Abhangigkeitsschema verfugbar ist: Systemerweiterungen sollten alle Dateien transportieren, die sie selbst benotigen, ausser 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 fur das Konzept der Systemerweiterung ist das temporare Ausserkraftsetzen von Ressourcen, die vom Betriebssystem bereitgestellt werden, durch neuere, beispielsweise um eine lokal kompilierte Entwicklungsversion einer systemnahen Komponenten uber das unveranderbare Betriebssystemabbild zu installieren, ohne das Betriebssystem komplett neu zu bauen oder das dem Namen nach unveranderbare Abbild zu verandern (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 ware). Dieser Fall funktioniert unabhangig davon, ob das /usr/ des Rechners als unveranderbares Plattenabbild verwaltet wird oder ein traditionell durch einen Paketverwalter gesteuerter (d.h. schreibbarer) Baum ist. Fur den Confext-Fall zielt das Projekt OSConfig darauf, Laufzeit-Neukonfigurationen von Betriebssystemdiensten durchzufuhren. Manchmal ist es notwendig, bestimmte Konfigurationsparameter auszutauschen oder nur einen bestimmten Dienst neuzustarten, ohne neuen Code oder ein komplettes Betriebssystem auszurollen. Anders formuliert sollen die am meisten konfigurierten Optionen an zur Laufzeit aktualisierbare Schalter geknupft werden, die dann ohne einen Systemneustart geandert werden konnen. Dies hilft bei der Reduktion von Service-Zeiten, wenn die Notwendigkeit besteht, die Betriebssystemkonfiguration zu andern. BEFEHLE Die folgenden Befehle werden sowohl vom Sysext- als auch Confext-Konzept verstanden: status Beim Aufruf ohne ein Befehlsverb oder wenn status angegeben ist, wird der derzeitige Zusammenfuhrungsstatus angezeigt, separat (fur sowohl /usr/ und /opt/ fur Sysext und fur /etc/ fur Confext). Hinzugefugt in Version 248. merge Fuhrt alle derzeit installierten Systemerweiterungsabbilder in /usr/ und /opt/ zusammen, indem diese Hierarchien mit dem Dateisystem >>overlayfs<< ubereinandergehangt werden und dadurch die zugrundeliegenden Hierarchien mit denen aus den Erweiterungsabbildern kombiniert werden. Dieser Befehl wird fehlschlagen, wenn die Hierarchien bereits zusammengefuhrt sind. Fur Confext passiert die Zusammenfuhrung stattdessen fur das Verzeichnis /etc/. Hinzugefugt in Version 248. unmerge Trennt alle derzeit installierten Systemerweiterungsabbilder von /usr/ und /opt/ fur Sysext und /etc/ fur Confext auf, indem die vorher durch merge erstellten >>overlayfs<<-Dateisysteme ausgehangt werden. Hinzugefugt in Version 248. refresh Eine Kombination von unmerge und merge: Falls bereits eingehangt, wird die bestehende >>overlayfs<<-Instanz temporar ausgehangt und dann durch eine neue Version ersetzt. Dieser Befehl ist nach der Installation/Entfernung von Systemerweiterungsabbildern nutzlich, um das >>overlayfs<<-Dateisystem entsprechend zu aktualisieren. Falls zum Zeitpunkt der Ausfuhrung dieses Befehls keine Systemerweiterungen installiert sind, dann wird das Aquivalent von unmerge ausgefuhrt, 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 eingehangt sind. Daraus folgt, dass alle durch eine Systemerweiterung bereitgestellten Ressourcen kurzzeitig verschwinden -- selbst wenn sie dauerhaft wahrend einer refresh-Aktion bestehen bleiben. Hinzugefugt in Version 248. list Zeigt eine kurze Liste der installierten Erweiterungsabilder an. Hinzugefugt in Version 248. -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<<-Einhangung nicht auf den Hierarchien /usr/ und /opt/ fur Sysext oder /etc/ fur Confext auf der obersten Stufe des Rechners ein, sondern unterhalb eines festgelegten Wurzelverzeichnisses. Hinzugefugt in Version 248. --force Bei der Zusammenfuhrung von Systemerweiterungen in /usr/ und /opt/ fur Sysext und /etc/ fur Confext werden Versionsinkompatibilitaten ignoriert, d.h. das Zusammenfuhren wird erzwungen, unabhangig davon, ob die im Abbild enthaltenen Versionsinformationen zu denen des Rechners passen oder nicht. Hinzugefugt in Version 248. --image-policy=Richtlinie Akzeptiert gemass systemd.image-policy(7) eine Abbildrichtlinienzeichenkette als Argument. Bei Aktionen auf Systemerweiterungsplattenabbildern wird diese Richtlinie durchgesetzt. Falls nicht angegeben ist die Vorgabe >>root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent<< fur Systemerweiterungen, d.h. nur das Wurzel- und /usr/-Dateisystem im Abbild wird verwandt. Fur Konfigurationserweiterungen ist die Vorgabe >>root=verity+signed+encrypted+unprotected+absent<<. Beim Betrieb in der Initrd und bei Aktionen auf einem im Verzeichnis /.extra/sysext/ gespeicherten Systemerweiterungsabbild wird standardmassig eine leicht strengere Richtlinie verwandt: >>root=signed+absent:usr=signed+absent<<. Details hierzu finden Sie weiter oben. Hinzugefugt in Version 254. --noexec=LOGISCH Beim Zusammenfuhren von Konfigurationserweiterungen in /etc/ wird standardmassig der Einhangeschalter >>MS_NOEXEC<< verwandt. Das kann mit dieser Option deaktiviert werden. Hinzugefugt in Version 254. --no-reload Bei der Verwendung mit merge, unmerge oder refresh wird der Daemon nach der Ausfuhrung der Anderungen nicht neu geladen, selbst wenn die angewendete Erweiterung ein Neuladen mittels auf 1 gesetztem EXTENSION_RELOAD_MANAGER= benotigt. Hinzugefugt in Version 255. --no-pager Leitet die Ausgabe nicht an ein Textanzeigeprogramm weiter. --no-legend Gibt die Legende nicht aus, d.h. die Spaltenkopfe und die Fusszeile mit Hinweisen. --json=MODUS Zeigt die Ausgabe als JSON formatiert. Erwartet entweder >>short<< (fur die kurzest mogliche Ausgabe ohne unnotigen Leerraum oder Zeilenumbruche), >>pretty<< (fur eine schonere Version der gleichen Ausgabe, mit Einzugen und Zeilenumbruchen) oder >>off<< (um die standardmassig aktivierte JSON-Ausgabe auszuschalten). EXIT-STATUS Bei Erfolg wird 0 zuruckgeliefert. SIEHE AUCH systemd(1), systemd-nspawn(1), systemd-stub(7) ANMERKUNGEN 1. Spezifikation fur auffindbare Partitionen https://uapi-group.org/specifications/specs/discoverable_partitions_specification 2. Portable Dienste https://systemd.io/PORTABLE_SERVICES UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . systemd 255 SYSTEMD-SYSEXT(8)