2021-01-12 21:55:11 +08:00
|
|
|
|
<?xml version='1.0'?> <!--*-nxml-*-->
|
|
|
|
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
2023-12-25 22:48:33 +08:00
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
2021-01-12 21:55:11 +08:00
|
|
|
|
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
|
|
|
|
|
|
2024-03-19 21:47:36 +08:00
|
|
|
|
<refentry id="systemd-sysext" conditional='ENABLE_SYSEXT'
|
2021-01-12 21:55:11 +08:00
|
|
|
|
xmlns:xi="http://www.w3.org/2001/XInclude">
|
|
|
|
|
|
|
|
|
|
<refentryinfo>
|
|
|
|
|
<title>systemd-sysext</title>
|
|
|
|
|
<productname>systemd</productname>
|
|
|
|
|
</refentryinfo>
|
|
|
|
|
|
|
|
|
|
<refmeta>
|
|
|
|
|
<refentrytitle>systemd-sysext</refentrytitle>
|
|
|
|
|
<manvolnum>8</manvolnum>
|
|
|
|
|
</refmeta>
|
|
|
|
|
|
|
|
|
|
<refnamediv>
|
|
|
|
|
<refname>systemd-sysext</refname>
|
|
|
|
|
<refname>systemd-sysext.service</refname>
|
2023-02-24 16:42:45 +08:00
|
|
|
|
<refname>systemd-confext</refname>
|
|
|
|
|
<refname>systemd-confext.service</refname>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
<refpurpose>Activates System Extension Images</refpurpose>
|
|
|
|
|
</refnamediv>
|
|
|
|
|
|
|
|
|
|
<refsynopsisdiv>
|
|
|
|
|
<cmdsynopsis>
|
|
|
|
|
<command>systemd-sysext</command>
|
|
|
|
|
<arg choice="opt" rep="repeat">OPTIONS</arg>
|
2022-08-22 20:23:57 +08:00
|
|
|
|
<arg choice="plain">COMMAND</arg>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</cmdsynopsis>
|
|
|
|
|
|
2023-12-14 19:52:03 +08:00
|
|
|
|
<para><filename>systemd-sysext.service</filename></para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
2023-02-24 16:42:45 +08:00
|
|
|
|
<cmdsynopsis>
|
|
|
|
|
<command>systemd-confext</command>
|
|
|
|
|
<arg choice="opt" rep="repeat">OPTIONS</arg>
|
|
|
|
|
<arg choice="plain">COMMAND</arg>
|
|
|
|
|
</cmdsynopsis>
|
|
|
|
|
|
2023-12-14 19:52:03 +08:00
|
|
|
|
<para><filename>systemd-confext.service</filename></para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</refsynopsisdiv>
|
|
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
|
<title>Description</title>
|
|
|
|
|
|
|
|
|
|
<para><command>systemd-sysext</command> activates/deactivates system extension images. System extension
|
|
|
|
|
images may – dynamically at runtime — extend the <filename>/usr/</filename> and
|
|
|
|
|
<filename>/opt/</filename> directory hierarchies with additional files. This is particularly useful on
|
|
|
|
|
immutable system images where a <filename>/usr/</filename> and/or <filename>/opt/</filename> hierarchy
|
|
|
|
|
residing on a read-only file system shall be extended temporarily at runtime without making any
|
|
|
|
|
persistent modifications.</para>
|
|
|
|
|
|
|
|
|
|
<para>System extension images should contain files and directories similar in fashion to regular
|
|
|
|
|
operating system tree. When one or more system extension images are activated, their
|
|
|
|
|
<filename>/usr/</filename> and <filename>/opt/</filename> hierarchies are combined via
|
|
|
|
|
<literal>overlayfs</literal> with the same hierarchies of the host OS, and the host
|
2021-07-27 15:37:29 +08:00
|
|
|
|
<filename>/usr/</filename> and <filename>/opt/</filename> overmounted with it ("merging"). When they are
|
2021-01-12 21:55:11 +08:00
|
|
|
|
deactivated, the mount point is disassembled — again revealing the unmodified original host version of
|
|
|
|
|
the hierarchy ("unmerging"). Merging thus makes the extension's resources suddenly appear below the
|
|
|
|
|
<filename>/usr/</filename> and <filename>/opt/</filename> hierarchies as if they were included in the
|
|
|
|
|
base OS image itself. Unmerging makes them disappear again, leaving in place only the files that were
|
|
|
|
|
shipped with the base OS image itself.</para>
|
|
|
|
|
|
|
|
|
|
<para>Files and directories contained in the extension images outside of the <filename>/usr/</filename>
|
|
|
|
|
and <filename>/opt/</filename> hierarchies are <emphasis>not</emphasis> merged, and hence have no effect
|
2021-01-12 07:00:58 +08:00
|
|
|
|
when included in a system extension image. In particular, files in the <filename>/etc/</filename> and
|
|
|
|
|
<filename>/var/</filename> included in a system extension image will <emphasis>not</emphasis> appear in
|
|
|
|
|
the respective hierarchies after activation.</para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
2024-02-17 02:29:12 +08:00
|
|
|
|
<para>System extension images are strictly read-only by default. On mutable host file systems,
|
|
|
|
|
<filename>/usr/</filename> and <filename>/opt/</filename> hierarchies become read-only while extensions
|
|
|
|
|
are merged, unless mutability is enabled. Mutability may be enabled via the <option>--mutable=</option>
|
|
|
|
|
option; see "Mutability" below for more information.</para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
|
|
|
|
<para>System extensions are supposed to be purely additive, i.e. they are supposed to include only files
|
|
|
|
|
that do not exist in the underlying basic OS image. However, the underlying mechanism (overlayfs) also
|
2022-07-22 21:03:12 +08:00
|
|
|
|
allows overlaying or removing files, but it is recommended not to make use of this.</para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
|
|
|
|
<para>System extension images may be provided in the following formats:</para>
|
|
|
|
|
|
|
|
|
|
<orderedlist>
|
|
|
|
|
<listitem><para>Plain directories or btrfs subvolumes containing the OS tree</para></listitem>
|
|
|
|
|
<listitem><para>Disk images with a GPT disk label, following the <ulink
|
2022-11-14 16:44:39 +08:00
|
|
|
|
url="https://uapi-group.org/specifications/specs/discoverable_partitions_specification">Discoverable Partitions Specification</ulink></para></listitem>
|
2022-12-09 23:08:54 +08:00
|
|
|
|
<listitem><para>Disk images lacking a partition table, with a naked Linux file system (e.g. erofs,
|
|
|
|
|
squashfs or ext4)</para></listitem>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</orderedlist>
|
|
|
|
|
|
|
|
|
|
<para>These image formats are the same ones that
|
|
|
|
|
<citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
2022-05-28 17:10:58 +08:00
|
|
|
|
supports via its <option>--directory=</option>/<option>--image=</option> switches and those that the
|
2021-01-12 21:55:11 +08:00
|
|
|
|
service manager supports via <option>RootDirectory=</option>/<option>RootImage=</option>. Similar to
|
|
|
|
|
them they may optionally carry Verity authentication information.</para>
|
|
|
|
|
|
2023-03-30 15:40:14 +08:00
|
|
|
|
<para>System extensions are searched for in the directories
|
sysext: stop storing under /usr/lib[/local]/extensions/
sysexts are meant to extend /usr. All extension images and directories are opened and merged in a
single, read-only overlayfs layer, mounted on /usr.
So far, we had fallback storage directories in /usr/lib/extensions and /usr/local/lib/extensions.
This is problematic for three reasons.
Firstly, technically, for directory-based extensions the kernel will reject
creating such an overlay, as there is a recursion problem. It actively
validates that a lowerdir is not a child of another lowerdir, and fails with
-ELOOP if it is. So having a sysext /usr/lib/extensions/myextdir/ would result
in an overlayfs config lowerdir=/usr/lib/extensions/myextdir/usr/:/usr which is
not allowed, as indicated by Christian the kernel performs this check:
/*
* Check if this layer root is a descendant of:
* - another layer of this overlayfs instance
* - upper/work dir of any overlayfs instance
*/
<...>
/* Walk back ancestors to root (inclusive) looking for traps */
while (!err && parent != next) {
if (is_lower && ovl_lookup_trap_inode(sb, parent)) {
err = -ELOOP;
pr_err("overlapping %s path\n", name);
Secondly, there's a confusing aspect to this recursive storage. If you
have /usr/lib/extensions/myext.raw which contains /usr/lib/extensions/mynested.raw
'systemd-sysext merge' will only pick up the first one, but both will appear in
the merged root under /usr/lib/extensions/. So you have two extension images, both
appear in your merged filesystem, but only one is actually in use.
Finally, there's a conceptual aspect: the idea behind sysexts and hermetic /usr
is that the /usr tree is not modified locally, but owned by the vendor. Dropping
extensions in /usr thus goes contrary to this foundational concept.
2023-03-28 23:19:47 +08:00
|
|
|
|
<filename>/etc/extensions/</filename>, <filename>/run/extensions/</filename> and
|
|
|
|
|
<filename>/var/lib/extensions/</filename>. The first two listed directories are not suitable for
|
2021-01-12 21:55:11 +08:00
|
|
|
|
carrying large binary images, however are still useful for carrying symlinks to them. The primary place
|
|
|
|
|
for installing system extensions is <filename>/var/lib/extensions/</filename>. Any directories found in
|
2023-03-30 15:40:14 +08:00
|
|
|
|
these search directories are considered directory based extension images; any files with the
|
2022-12-02 05:41:47 +08:00
|
|
|
|
<filename>.raw</filename> suffix are considered disk image based extension images. When invoked in the
|
|
|
|
|
initrd, the additional directory <filename>/.extra/sysext/</filename> is included in the directories that
|
|
|
|
|
are searched for extension images. Note however, that by default a tighter image policy applies to images
|
|
|
|
|
found there, though, see below. This directory is populated by
|
|
|
|
|
<citerefentry><refentrytitle>systemd-stub</refentrytitle><manvolnum>7</manvolnum></citerefentry> with
|
|
|
|
|
extension images found in the system's EFI System Partition.</para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
|
|
|
|
<para>During boot OS extension images are activated automatically, if the
|
|
|
|
|
<filename>systemd-sysext.service</filename> is enabled. Note that this service runs only after the
|
2021-08-07 14:40:51 +08:00
|
|
|
|
underlying file systems where system extensions may be located have been mounted. This means they are not
|
2021-01-12 21:55:11 +08:00
|
|
|
|
suitable for shipping resources that are processed by subsystems running in earliest boot. Specifically,
|
|
|
|
|
OS extension images are not suitable for shipping system services or
|
|
|
|
|
<citerefentry><refentrytitle>systemd-sysusers</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
2023-11-06 22:00:46 +08:00
|
|
|
|
definitions. See the <ulink url="https://systemd.io/PORTABLE_SERVICES">Portable Services</ulink> page
|
man: fix issues reported by the manpage-l10n project
Fixes #25780.
> Man page: crypttab.5
> Issue 1: Missing fullstop
> Issue 2: I<cipher=>, I<hash=>, I<size=> → B<cipher=>, B<hash=>, B<size=>
>
> "Force LUKS mode\\&. When this mode is used, the following options are "
> "ignored since they are provided by the LUKS header on the device: "
> "I<cipher=>, I<hash=>, I<size=>"
Seems OK to me. The full stop is there and has been for at least a few years. And we use <option> for the markup, which is appropriate here.
> Man page: crypttab.5
> Issue 1: Missing fullstop
> Issue 2: I<cipher=>, I<hash=>, I<keyfile-offset=>, I<keyfile-size=>, I<size=> → B<cipher=>, B<hash=>, B<keyfile-offset=>, B<keyfile-size=>, B<size=>
>
> "Use TrueCrypt encryption mode\\&. When this mode is used, the following "
> "options are ignored since they are provided by the TrueCrypt header on the "
> "device or do not apply: I<cipher=>, I<hash=>, I<keyfile-offset=>, I<keyfile-"
> "size=>, I<size=>"
Same.
> Man page: journalctl.1
> Issue 1: make be → may be
Fixed.
> Issue 2: below\\&. → below:
Fixed.
> Man page: journalctl.1
> Issue: Colon at the end?
>
> "The following commands are understood\\&. If none is specified the default "
> "is to display journal records\\&."
> msgstr ""
> "Die folgenden Befehle werden verstanden\\&. Falls keiner festgelegt ist, ist "
> "die Anzeige von Journal-Datensätzen die Vorgabe\\&."
This is a bit awkward, but I'm not sure how to fix it.
> Man page: kernel-install.8
> Issue: methods a fallback → methods fallback
It was correct, but I added a comma to make the sense clearer.
> Man page: loader.conf.5
> Issue 1: secure boot variables → Secure Boot variables
> Issue 2: one → one for (multiple times)
>
> "Supported secure boot variables are one database for authorized images, one "
> "key exchange key (KEK) and one platform key (PK)\\&. For more information, "
> "refer to the \\m[blue]B<UEFI specification>\\m[]\\&\\s-2\\u[2]\\d\\s+2, "
> "under Secure Boot and Driver Signing\\&. Another resource that describe the "
> "interplay of the different variables is the \\m[blue]B<EDK2 "
> "documentation>\\m[]\\&\\s-2\\u[3]\\d\\s+2\\&."
"one of" would sound strange. "One this and one that" is OK.
> Man page: loader.conf.5
> Issue: systemd-boot → B<systemd-boot>(7)
Fixed.
> Man page: logind.conf.5
> Issue: systemd-logind → B<systemd-logind>(8)
We use <filename>systemd-logind</> on subsequent references… I think that's good enough.
> Man page: nss-myhostname.8
> Issue: B<getent> → B<getent>(1)
Fixed.
> Man page: nss-resolve.8
> Issue: B<systemd-resolved> → B<systemd-resolved>(8)
The first reference does this, subsequent are shorter.
> Man page: os-release.5
> Issue: Portable Services → Portable Services Documentation?
Updated.
> Man page: pam_systemd_home.8
> Issue: auth and account use "reason", while session and password do not?
Reworded.
> Man page: portablectl.1
> Issue: In systemd-portabled.service(8): Portable Services Documentation
Updated.
> Man page: repart.d.5
> Issue: The partition → the partition
Fixed.
> Man page: repart.d.5
> Issue: B<systemd-repart> → B<systemd-repart>(8)
The first reference does this. I also change this one, because it's pretty far down in the text.
> Man page: systemd.1
> Issue: kernel command line twice?
>
> "Takes a boolean argument\\&. If false disables importing credentials from "
> "the kernel command line, qemu_fw_cfg subsystem or the kernel command line\\&."
Apparently this was fixed already.
> Man page: systemd-boot.7
> Issue: enrollement → enrollment
Fixed.
> Man page: systemd-cryptenroll.1
> Issue: multiple cases: any specified → the specified
Reworded.
> Man page: systemd-cryptenroll.1
> Issue: If this this → If this
Fixed tree-wide.
> Man page: systemd-cryptsetup-generator.8
> Issue: and the initrd → and in the initrd
"Is honoured by the initrd" is OK, because we often speak about the initrd as a single unit. But in the same paragraph we also used "in the initrd", which makes the other use look sloppy. I changed it to "in the initrd" everywhere in that file.
> Man page: systemd.directives.7
> Issue: Why are these two quoted (but not others)?
>
> "B<\\*(Aqh\\*(Aq>"
>
> B<\\*(Aqs\\*(Aq>"
>
> "B<\\*(Aqy\\*(Aq>"
This is autogenerated from files… We use slightly different markup in different files, and it's just too hard to make it consistent. We gave up on this.
> Man page: systemd.exec.5
> Issue 1: B<at>(1p) → B<at>(1)
> Issue 2: B<crontab>(1p) → B<crontab>(1)
Fixed.
> Man page: systemd.exec.5
> Issue: B<select()> → B<select>(2)
Fixed.
> Man page: systemd.exec.5
> Issue: qemu → B<qemu>(1)
The man page doesn't seem to be in any of the canonical places on the web.
I added a link to online docs.
> Man page: systemd.exec.5
> Issue: variable → variables
Seems to be fixed already.
> Man page: systemd-integritysetup-generator.8
> Issue: systemd-integritysetup-generator → B<systemd-integritysetup-generator>
I changed <filename> to <command>.
> Man page: systemd-integritysetup-generator.8
> Issue: superfluous comma at the end
Already fixed.
> Man page: systemd-measure.1
> Issue: (see B<--pcr-bank=>) below → (see B<--pcr-bank=> below)
Reworded.
> Man page: systemd-measure.1
> Issue: =PATH> → =>I<PATH>
Fixed.
> Man page: systemd-measure.1.po
> Issue: B<--bank=DIGEST> → B<--bank=>I<DIGEST>
Fixed.
> Man page: systemd.netdev.5
> Issue: os the → on the
Appears to have been fixed already.
> Man page: systemd.netdev.5
> Issue: Onboard → On-board (as in previous string)
Updated.
> Man page: systemd.network.5
> Issue: B<systemd-networkd> -> B<systemd-networkd>(8)
First reference does this, subsequent do not.
> Man page: systemd.network.5
> Issue: B<netlabelctl> → B<netlabelctl>(8)
First reference does this, subsequent do not.
> Man page: systemd.network.5
> Issue: Missing verb (aquired? configured?) in the half sentence starting with "or by a "
I dropped the comma.
> Man page: systemd-nspawn.1
> Issue: All host users outside of that range → All other host users
Reworded.
> # FIXME no effect → no effect\\&.
> #. type: Plain text
> #: archlinux debian-unstable fedora-rawhide mageia-cauldron opensuse-tumbleweed
> msgid ""
> "Whichever ID mapping option is used, the same mapping will be used for users "
> "and groups IDs\\&. If B<rootidmap> is used, the group owning the bind "
> "mounted directory will have no effect"
A period is added. Not sure if there's some other issue.
> Man page: systemd-oomd.service.8
> Issue: B<systemd> → B<systemd>(1)
Done.
> Man page: systemd.path.5
> Issue 1: B<systemd.exec>(1) → B<systemd.exec>(5)
> Issue 2: This section does not (yet?) exist
Fixed.
> Man page: systemd-pcrphase.service.8
> Issue 1: indicate phases into TPM2 PCR 11 ??
> Issue 2: Colon at the end of the paragraph?
Fixed.
> Man page: systemd-pcrphase.service.8
> Issue: final boot phase → final shutdown phase?
Updated.
> Man page: systemd-pcrphase.service.8
> Issue: for the the → for the
Fixed tree-wide.
> Man page: systemd-portabled.service.8
> Issue: In systemd-portabled.service(8): Portable Services Documentation
Updated.
> Man page: systemd-pstore.service.8
> Issue: Here and the following paragraphs: . → \\&. // Upstream: What does this comment mean? // You normally write \\&. for a full dot (full stop etc.); here you write only "." (i.e. a plain dot).
>
> "and we look up \"localhost\", nss-dns will send the following queries to "
> "systemd-resolved listening on 127.0.0.53:53: first \"localhost.foobar.com\", "
> "then \"localhost.barbar.com\", and finally \"localhost\". If (hopefully) the "
> "first two queries fail, systemd-resolved will synthesize an answer for the "
> "third query."
Looks all OK to me.
> Man page: systemd.resource-control.5
> Issue: Missing closing bracket after link to Control Groups version 1
Fixed.
> Man page: systemd-sysext.8
> Issue: In systemd-portabled.service(8): Portable Services Documentation
Updated.
> Man page: systemd.timer.5
> Issue 1: B<systemd.exec>(1) → B<systemd.exec>(5)
> Issue 2: This section does not (yet?) exist
Fixed.
> Man page: systemd.unit.5
> Issue: that is → that are
Fixed.
> Man page: systemd-veritysetup-generator.8
> Issue: systemd-veritysetup-generator → B<systemd-veritysetup-generator>
>
> "systemd-veritysetup-generator implements B<systemd.generator>(7)\\&."
>
> "systemd-veritysetup-generator understands the following kernel command line "
> "parameters:"
Updated.
> Man page: systemd-volatile-root.service.8
> Issue: initrdyes → Initrd
Fixed.
> Man page: sysupdate.d.5
> Issue: : → \\&. (As above in TRANSFER)
Updated.
> Man page: sysupdate.d.5
> Issue: some → certain
Updated.
> Man page: sysupdate.d.5
> Issue 1: i\\&.e\\& → I\\&.e\\&
Fixed.
> Issue 2: the image → the system
"image" seems correct.
> Man page: tmpfiles.d.5
> Issue: systemd-tmpfiles → B<systemd-tmpfiles>(8)
Updated.
2023-01-11 23:45:59 +08:00
|
|
|
|
for a simple mechanism for shipping system services in disk images, in a similar fashion to OS
|
|
|
|
|
extensions. Note the different isolation on these two mechanisms: while system extension directly extend
|
|
|
|
|
the underlying OS image with additional files that appear in a way very similar to as if they were
|
|
|
|
|
shipped in the OS image itself and thus imply no security isolation, portable services imply service
|
|
|
|
|
level sandboxing in one way or another. The <filename>systemd-sysext.service</filename> service is
|
|
|
|
|
guaranteed to finish start-up before <filename>basic.target</filename> is reached; i.e. at the time
|
|
|
|
|
regular services initialize (those which do not use <varname>DefaultDependencies=no</varname>), the files
|
|
|
|
|
and directories system extensions provide are available in <filename>/usr/</filename> and
|
|
|
|
|
<filename>/opt/</filename> and may be accessed.</para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
|
|
|
|
<para>Note that there is no concept of enabling/disabling installed system extension images: all
|
2022-08-16 18:29:12 +08:00
|
|
|
|
installed extension images are automatically activated at boot. However, you can place an empty directory
|
|
|
|
|
named like the extension (no <filename>.raw</filename>) in <filename>/etc/extensions/</filename> to "mask"
|
|
|
|
|
an extension with the same name in a system folder with lower precedence.</para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
2021-01-12 07:00:58 +08:00
|
|
|
|
<para>A simple mechanism for version compatibility is enforced: a system extension image must carry a
|
2023-11-06 21:59:00 +08:00
|
|
|
|
<filename>/usr/lib/extension-release.d/extension-release.<replaceable>NAME</replaceable></filename>
|
2021-01-12 07:00:58 +08:00
|
|
|
|
file, which must match its image name, that is compared with the host <filename>os-release</filename>
|
2022-08-09 19:34:18 +08:00
|
|
|
|
file: the contained <varname>ID=</varname> fields have to match unless <literal>_any</literal> is set
|
|
|
|
|
for the extension. If the extension <varname>ID=</varname> is not <literal>_any</literal>, the
|
|
|
|
|
<varname>SYSEXT_LEVEL=</varname> field (if defined) has to match. If the latter is not defined, the
|
2022-08-09 23:07:20 +08:00
|
|
|
|
<varname>VERSION_ID=</varname> field has to match instead. If the extension defines the
|
|
|
|
|
<varname>ARCHITECTURE=</varname> field and the value is not <literal>_any</literal> it has to match the kernel's
|
|
|
|
|
architecture reported by <citerefentry><refentrytitle>uname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
|
|
|
|
|
but the used architecture identifiers are the same as for <varname>ConditionArchitecture=</varname>
|
|
|
|
|
described in <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
2023-04-25 20:06:59 +08:00
|
|
|
|
<varname>EXTENSION_RELOAD_MANAGER=</varname> can be set to 1 if the extension requires a service manager reload after application
|
2024-02-29 10:46:25 +08:00
|
|
|
|
of the extension. Note that for the reasons mentioned earlier:
|
2023-04-25 20:06:59 +08:00
|
|
|
|
<ulink url="https://systemd.io/PORTABLE_SERVICES">Portable Services</ulink> remain
|
|
|
|
|
the recommended way to ship system services.
|
|
|
|
|
|
2022-08-09 23:07:20 +08:00
|
|
|
|
System extensions should not ship a <filename>/usr/lib/os-release</filename> file (as that would be merged
|
|
|
|
|
into the host <filename>/usr/</filename> tree, overriding the host OS version data, which is not desirable).
|
|
|
|
|
The <filename>extension-release</filename> file follows the same format and semantics, and carries the same
|
2021-01-12 07:00:58 +08:00
|
|
|
|
content, as the <filename>os-release</filename> file of the OS, but it describes the resources carried
|
|
|
|
|
in the extension image.</para>
|
2023-02-24 16:42:45 +08:00
|
|
|
|
|
|
|
|
|
<para>The <command>systemd-confext</command> concept follows the same principle as the
|
2024-11-12 03:10:00 +08:00
|
|
|
|
<citerefentry><refentrytitle>systemd-sysext</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
2023-02-24 16:42:45 +08:00
|
|
|
|
functionality but instead of working on <filename>/usr</filename> and <filename>/opt</filename>,
|
|
|
|
|
<command>confext</command> will extend only <filename>/etc</filename>. Files and directories contained
|
|
|
|
|
in the confext images outside of the <filename>/etc/</filename> hierarchy are <emphasis>not</emphasis>
|
|
|
|
|
merged, and hence have no effect when included in the image. Formats for these images are of the
|
2023-04-06 19:19:22 +08:00
|
|
|
|
same as sysext images. The merged hierarchy will be mounted with <literal>nosuid</literal> and
|
|
|
|
|
(if not disabled via <option>--noexec=false</option>) <literal>noexec</literal>.</para>
|
2023-02-24 16:42:45 +08:00
|
|
|
|
|
2024-02-17 02:29:12 +08:00
|
|
|
|
<para>Just like sysexts, confexts are strictly read-only by default. Merging confexts on mutable host
|
|
|
|
|
file systems will result in <filename>/etc/</filename> becoming read-only. As with sysexts, mutability
|
|
|
|
|
can be enabled via the <option>--mutable=</option> option. Refer to "Mutability" below for more
|
|
|
|
|
information.</para>
|
|
|
|
|
|
2023-02-24 16:42:45 +08:00
|
|
|
|
<para>Confexts are looked for in the directories <filename>/run/confexts/</filename>,
|
|
|
|
|
<filename>/var/lib/confexts/</filename>, <filename>/usr/lib/confexts/</filename> and
|
2023-05-16 22:49:28 +08:00
|
|
|
|
<filename>/usr/local/lib/confexts/</filename>. The first listed directory is not suitable for
|
|
|
|
|
carrying large binary images, however is still useful for carrying symlinks to them. The primary place
|
|
|
|
|
for installing configuration extensions is <filename>/var/lib/confexts/</filename>. Any directories found
|
|
|
|
|
in these search directories are considered directory based confext images; any files with the
|
2023-02-24 16:42:45 +08:00
|
|
|
|
<filename>.raw</filename> suffix are considered disk image based confext images.</para>
|
|
|
|
|
|
|
|
|
|
<para>Again, just like sysext images, the confext images will contain a
|
2023-11-06 21:59:00 +08:00
|
|
|
|
<filename>/etc/extension-release.d/extension-release.<replaceable>NAME</replaceable></filename>
|
|
|
|
|
file, which must match the image name (with the usual escape hatch of
|
|
|
|
|
the <varname>user.extension-release.strict</varname>
|
|
|
|
|
<citerefentry project='man-pages'><refentrytitle>xattr</refentrytitle><manvolnum>7</manvolnum></citerefentry>),
|
|
|
|
|
and again with content being one or more of <varname>ID=</varname>, <varname>VERSION_ID=</varname>, and
|
|
|
|
|
<varname>CONFEXT_LEVEL</varname>. Confext images will then be checked and matched against the base OS
|
|
|
|
|
layer.</para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
|
<title>Uses</title>
|
|
|
|
|
|
|
|
|
|
<para>The primary use case for system images are immutable environments where debugging and development
|
2021-07-27 15:37:29 +08:00
|
|
|
|
tools shall optionally be made available, but not included in the immutable base OS image itself (e.g.
|
|
|
|
|
<citerefentry project='man-pages'><refentrytitle>strace</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
|
|
|
|
and
|
|
|
|
|
<citerefentry project='man-pages'><refentrytitle>gdb</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
|
|
|
|
shall be an optionally installable addition in order to make debugging/development easier). System
|
|
|
|
|
extension images should not be misunderstood as a generic software packaging framework, as no dependency
|
|
|
|
|
scheme is available: system extensions should carry all files they need themselves, except for those
|
|
|
|
|
already shipped in the underlying host system image. Typically, system extension images are built at the
|
|
|
|
|
same time as the base OS image — within the same build system.</para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
|
|
|
|
<para>Another use case for the system extension concept is temporarily overriding OS supplied resources
|
|
|
|
|
with newer ones, for example to install a locally compiled development version of some low-level
|
|
|
|
|
component over the immutable OS image without doing a full OS rebuild or modifying the nominally
|
|
|
|
|
immutable image. (e.g. "install" a locally built package with <command>DESTDIR=/var/lib/extensions/mytest
|
2021-01-20 02:53:20 +08:00
|
|
|
|
make install && systemd-sysext refresh</command>, making it available in
|
2021-01-12 21:55:11 +08:00
|
|
|
|
<filename>/usr/</filename> as if it was installed in the OS image itself.) This case works regardless if
|
|
|
|
|
the underlying host <filename>/usr/</filename> is managed as immutable disk image or is a traditional
|
|
|
|
|
package manager controlled (i.e. writable) tree.</para>
|
2023-02-24 16:42:45 +08:00
|
|
|
|
|
2024-05-06 12:06:51 +08:00
|
|
|
|
<para>With systemd-confext one can perform runtime reconfiguration of OS services.
|
2023-02-24 16:42:45 +08:00
|
|
|
|
Sometimes, there is a need to swap certain configuration parameter values or restart only a specific
|
|
|
|
|
service without deployment of new code or a complete OS deployment. In other words, we want to be able
|
|
|
|
|
to tie the most frequently configured options to runtime updateable flags that can be changed without a
|
2024-05-06 12:06:51 +08:00
|
|
|
|
system reboot. This will help reduce servicing times when there is a need for changing the OS configuration.
|
|
|
|
|
It also provides a reliable tool for managing configuration because all old configuration files disappear when
|
|
|
|
|
the systemd-confext image is removed.</para></refsect1>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
2024-02-17 02:29:12 +08:00
|
|
|
|
<refsect1>
|
|
|
|
|
<title>Mutability</title>
|
|
|
|
|
<para>By default, merging system extensions on mutable host file systems will render <filename>/usr/</filename>
|
|
|
|
|
and <filename>/opt/</filename> hierarchies read-only. Merging configuration extensions will have the same
|
|
|
|
|
effect on <filename>/etc/</filename>. Mutable mode allows writes to these locations when extensions are
|
|
|
|
|
merged.</para>
|
|
|
|
|
|
|
|
|
|
<para>The following modes are supported:
|
|
|
|
|
<orderedlist>
|
2024-02-28 16:42:25 +08:00
|
|
|
|
<listitem><para><option>disabled</option>: Force immutable mode even if write routing directories exist
|
|
|
|
|
below <filename>/var/lib/extensions.mutable/</filename>. This is the default.</para></listitem>
|
|
|
|
|
<listitem><para><option>auto</option>: Automatic mode. Mutability is disabled by default and only
|
|
|
|
|
enabled if a corresponding write routing directory exists below
|
|
|
|
|
<filename>/var/lib/extensions.mutable/</filename>.</para></listitem>
|
2024-02-17 02:29:12 +08:00
|
|
|
|
<listitem><para><option>enabled</option>: Force mutable mode and automatically create write routing
|
2024-02-28 16:42:25 +08:00
|
|
|
|
directories below <filename>/var/lib/extensions.mutable/</filename> when required.</para></listitem>
|
2024-02-17 02:29:12 +08:00
|
|
|
|
<listitem><para><option>import</option>: Force immutable mode like <option>disabled</option> above, but
|
2024-02-28 16:42:25 +08:00
|
|
|
|
merge the contents of directories below <filename>/var/lib/extensions.mutable/</filename> into the host
|
|
|
|
|
file system.</para></listitem>
|
|
|
|
|
<listitem><para><option>ephemeral</option>: Force mutable mode like <option>enabled</option> above, but
|
|
|
|
|
instead of using write routing directory below <filename>/var/lib/extensions.mutable/</filename>,
|
|
|
|
|
<command>systemd-sysext</command> will use empty ephemeral directories. This means that the
|
|
|
|
|
modifications made in the merged hierarchies will be gone when the hierarchies are
|
|
|
|
|
unmerged.</para></listitem>
|
2024-02-28 21:50:05 +08:00
|
|
|
|
<listitem><para><option>ephemeral-import</option>: Force mutable mode like <option>ephemeral</option>
|
|
|
|
|
above, but instead of ignoring the contents of write routing directories under
|
|
|
|
|
<filename>/var/lib/extensions.mutable/</filename>, merge them into the host file system, like
|
|
|
|
|
<option>import</option> does.</para></listitem>
|
2024-02-17 02:29:12 +08:00
|
|
|
|
</orderedlist>
|
|
|
|
|
See "Options" below on specifying modes using the <option>--mutable=</option> command line option.</para>
|
|
|
|
|
|
2024-02-28 16:42:25 +08:00
|
|
|
|
<para>With exception of the ephemeral mode, the mutable mode routes writes to subdirectories in
|
|
|
|
|
<filename>/var/lib/extensions.mutable/</filename>.
|
2024-02-17 02:29:12 +08:00
|
|
|
|
<simplelist type="horiz">
|
|
|
|
|
<member>Writes to <filename>/usr/</filename> are directed to <filename>/var/lib/extensions.mutable/usr/</filename></member>,
|
|
|
|
|
<member>writes to <filename>/opt/</filename> are directed to <filename>/var/lib/extensions.mutable/opt/</filename>, and</member>
|
|
|
|
|
<member>writes to <filename>/etc/</filename> land in <filename>/var/lib/extensions.mutable/etc/</filename>.</member>
|
|
|
|
|
</simplelist></para>
|
|
|
|
|
|
|
|
|
|
<para>If <filename>usr/</filename>, <filename>opt/</filename>, or <filename>etc/</filename>
|
|
|
|
|
in <filename>/var/lib/extensions.mutable/</filename> are symlinks, then writes are directed to the
|
|
|
|
|
symlinks' targets.
|
|
|
|
|
Consequently, to retain mutability of a host file system, create symlinks
|
|
|
|
|
<simplelist type="horiz">
|
|
|
|
|
<member><filename>/var/lib/extensions.mutable/etc/</filename> → <filename>/etc/</filename></member>
|
|
|
|
|
<member><filename>/var/lib/extensions.mutable/usr/</filename> → <filename>/usr/</filename></member>
|
|
|
|
|
<member><filename>/var/lib/extensions.mutable/opt/</filename> → <filename>/opt/</filename></member>
|
|
|
|
|
</simplelist>
|
|
|
|
|
to route writes back to the original base directory hierarchy.</para>
|
|
|
|
|
|
2024-02-28 16:42:25 +08:00
|
|
|
|
<para>Alternatively, a temporary file system may be mounted to
|
2024-02-17 02:29:12 +08:00
|
|
|
|
<filename>/var/lib/extensions.mutable/</filename>, or symlinks in
|
2024-02-28 16:42:25 +08:00
|
|
|
|
<filename>/var/lib/extensions.mutable/</filename> may point to sub-directories on a temporary file system
|
|
|
|
|
(e.g. below <filename>/tmp/</filename>) to only allow ephemeral changes. Note that this is not the same
|
|
|
|
|
as ephemeral mode, because the temporary file system will still exist after unmerging.</para>
|
2024-02-17 02:29:12 +08:00
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v256"/>
|
|
|
|
|
</refsect1>
|
|
|
|
|
|
2021-01-12 21:55:11 +08:00
|
|
|
|
<refsect1>
|
|
|
|
|
<title>Commands</title>
|
|
|
|
|
|
2023-02-24 16:42:45 +08:00
|
|
|
|
<para>The following commands are understood by both the sysext and confext concepts:</para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry>
|
2021-01-20 02:53:20 +08:00
|
|
|
|
<term><option>status</option></term>
|
|
|
|
|
|
|
|
|
|
<listitem><para>When invoked without any command verb, or when <option>status</option> is specified
|
2023-02-24 16:42:45 +08:00
|
|
|
|
the current merge status is shown, separately (for both <filename>/usr/</filename> and
|
2023-08-23 00:52:36 +08:00
|
|
|
|
<filename>/opt/</filename> of sysext and for <filename>/etc/</filename> of confext).</para>
|
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v248"/></listitem>
|
2021-01-20 02:53:20 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>merge</option></term>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
<listitem><para>Merges all currently installed system extension images into
|
|
|
|
|
<filename>/usr/</filename> and <filename>/opt/</filename>, by overmounting these hierarchies with an
|
|
|
|
|
<literal>overlayfs</literal> file system combining the underlying hierarchies with those included in
|
2023-02-24 16:42:45 +08:00
|
|
|
|
the extension images. This command will fail if the hierarchies are already merged. For confext, the merge
|
2023-08-23 00:52:36 +08:00
|
|
|
|
happens into the <filename>/etc/</filename> directory instead.</para>
|
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v248"/></listitem>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
2021-01-20 02:53:20 +08:00
|
|
|
|
<term><option>unmerge</option></term>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
<listitem><para>Unmerges all currently installed system extension images from
|
2023-02-24 16:42:45 +08:00
|
|
|
|
<filename>/usr/</filename> and <filename>/opt/</filename> for sysext and <filename>/etc/</filename>,
|
|
|
|
|
for confext, by unmounting the <literal>overlayfs</literal> file systems created by <option>merge</option>
|
2023-08-23 00:52:36 +08:00
|
|
|
|
prior.</para>
|
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v248"/></listitem>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
2021-01-20 02:53:20 +08:00
|
|
|
|
<term><option>refresh</option></term>
|
|
|
|
|
<listitem><para>A combination of <option>unmerge</option> and <option>merge</option>: if already
|
2021-01-12 21:55:11 +08:00
|
|
|
|
mounted the existing <literal>overlayfs</literal> instance is unmounted temporarily, and then
|
|
|
|
|
replaced by a new version. This command is useful after installing/removing system extension images,
|
|
|
|
|
in order to update the <literal>overlayfs</literal> file system accordingly. If no system extensions
|
2023-02-24 16:42:45 +08:00
|
|
|
|
are installed when this command is executed, the equivalent of <option>unmerge</option> is executed,
|
|
|
|
|
without establishing any new <literal>overlayfs</literal> instance.
|
|
|
|
|
Note that currently there's a brief moment where neither the old nor the new <literal>overlayfs</literal>
|
|
|
|
|
file system is mounted. This implies that all resources supplied by a system extension will briefly
|
2023-08-23 00:52:36 +08:00
|
|
|
|
disappear — even if it exists continuously during the refresh operation.</para>
|
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v248"/></listitem>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
2021-01-20 02:53:20 +08:00
|
|
|
|
<term><option>list</option></term>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
|
2023-08-23 00:52:36 +08:00
|
|
|
|
<listitem><para>A brief list of installed extension images is shown.</para>
|
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v248"/></listitem>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<xi:include href="standard-options.xml" xpointer="help" />
|
|
|
|
|
<xi:include href="standard-options.xml" xpointer="version" />
|
|
|
|
|
</variablelist>
|
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
|
<title>Options</title>
|
|
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>--root=</option></term>
|
|
|
|
|
|
|
|
|
|
<listitem><para>Operate relative to the specified root directory, i.e. establish the
|
|
|
|
|
<literal>overlayfs</literal> mount not on the top-level host <filename>/usr/</filename> and
|
2023-02-24 16:42:45 +08:00
|
|
|
|
<filename>/opt/</filename> hierarchies for sysext or <filename>/etc/</filename> for confext,
|
2023-08-23 00:52:36 +08:00
|
|
|
|
but below some specified root directory.</para>
|
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v248"/></listitem>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2021-01-20 02:53:20 +08:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>--force</option></term>
|
|
|
|
|
|
|
|
|
|
<listitem><para>When merging system extensions into <filename>/usr/</filename> and
|
2023-02-24 16:42:45 +08:00
|
|
|
|
<filename>/opt/</filename> for sysext and <filename>/etc/</filename> for confext,
|
|
|
|
|
ignore version incompatibilities, i.e. force merging regardless of
|
2023-08-23 00:52:36 +08:00
|
|
|
|
whether the version information included in the images matches the host or not.</para>
|
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v248"/></listitem>
|
2021-01-20 02:53:20 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2022-12-02 05:41:47 +08:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>--image-policy=<replaceable>policy</replaceable></option></term>
|
|
|
|
|
|
|
|
|
|
<listitem><para>Takes an image policy string as argument, as per
|
|
|
|
|
<citerefentry><refentrytitle>systemd.image-policy</refentrytitle><manvolnum>7</manvolnum></citerefentry>. The
|
|
|
|
|
policy is enforced when operating on system extension disk images. If not specified defaults to
|
2023-04-12 20:27:20 +08:00
|
|
|
|
<literal>root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent</literal>
|
|
|
|
|
for system extensions, i.e. only the root and <filename>/usr/</filename> file systems in the image
|
|
|
|
|
are used. For configuration extensions defaults to
|
|
|
|
|
<literal>root=verity+signed+encrypted+unprotected+absent</literal>. When run in the initrd and
|
|
|
|
|
operating on a system extension image stored in the <filename>/.extra/sysext/</filename> directory a
|
|
|
|
|
slightly stricter policy is used by default: <literal>root=signed+absent:usr=signed+absent</literal>,
|
2023-08-23 00:52:36 +08:00
|
|
|
|
see above for details.</para>
|
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v254"/></listitem>
|
2022-12-02 05:41:47 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2024-02-17 02:29:12 +08:00
|
|
|
|
<varlistentry>
|
2024-04-12 17:12:15 +08:00
|
|
|
|
<term><option>--mutable=<replaceable>BOOL</replaceable>|<replaceable>auto</replaceable>|<replaceable>import</replaceable></option></term>
|
2024-02-17 02:29:12 +08:00
|
|
|
|
<listitem><para>Set mutable mode.</para>
|
|
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>no</option></term>
|
|
|
|
|
<listitem><para>force immutable mode even with write routing directories present.
|
|
|
|
|
This is the default.</para>
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>auto</option></term>
|
|
|
|
|
<listitem><para>enable mutable mode individually for <filename>/usr/</filename>,
|
|
|
|
|
<filename>/opt/</filename>, and <filename>/etc/</filename> if write routing sub-directories
|
|
|
|
|
or symlinks are present in <filename>/var/lib/extensions.mutable/</filename>; disable otherwise.
|
|
|
|
|
See "Mutability" above for more information on write routing.</para>
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>yes</option></term>
|
|
|
|
|
<listitem><para>force mutable mode. Write routing directories will be created in
|
|
|
|
|
<filename>/var/lib/extensions.mutable/</filename> if not present.</para>
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>import</option></term>
|
|
|
|
|
<listitem><para>immutable mode, but with contents of write routing directories in
|
|
|
|
|
<filename>/var/lib/extensions.mutable/</filename> also merged into the host file system.</para>
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
|
2024-02-28 16:42:25 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>ephemeral</option></term>
|
|
|
|
|
<listitem><para>force mutable mode, but with contents of write routing directories in
|
|
|
|
|
<filename>/var/lib/extensions.mutable/</filename> being ignored, and modifications of the host
|
|
|
|
|
file system being discarded after unmerge.</para>
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
|
2024-02-28 21:50:05 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>ephemeral-import</option></term>
|
|
|
|
|
<listitem><para>force mutable mode, with contents of write routing directories in
|
|
|
|
|
<filename>/var/lib/extensions.mutable/</filename> being merged into the host file system, but
|
|
|
|
|
with the modifications made to the host file system being discarded after unmerge.</para>
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
|
2024-02-17 02:29:12 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
</variablelist>
|
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2023-04-06 19:19:22 +08:00
|
|
|
|
<varlistentry>
|
2024-04-12 17:12:15 +08:00
|
|
|
|
<term><option>--noexec=<replaceable>BOOL</replaceable></option></term>
|
2023-04-06 19:19:22 +08:00
|
|
|
|
|
|
|
|
|
<listitem><para>When merging configuration extensions into <filename>/etc/</filename> the
|
|
|
|
|
<literal>MS_NOEXEC</literal> mount flag is used by default. This option can be used to disable
|
2023-08-23 00:52:36 +08:00
|
|
|
|
it.</para>
|
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v254"/></listitem>
|
2023-04-06 19:19:22 +08:00
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2023-04-25 20:06:59 +08:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><option>--no-reload</option></term>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>When used with <command>merge</command>,
|
|
|
|
|
<command>unmerge</command> or <command>refresh</command>, do not reload daemon
|
|
|
|
|
after executing the changes even if an extension that is applied requires a reload via the
|
|
|
|
|
<varname>EXTENSION_RELOAD_MANAGER=</varname> set to 1.</para>
|
2023-08-23 00:52:36 +08:00
|
|
|
|
|
|
|
|
|
<xi:include href="version-info.xml" xpointer="v255"/>
|
2023-04-25 20:06:59 +08:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2021-01-12 21:55:11 +08:00
|
|
|
|
<xi:include href="standard-options.xml" xpointer="no-pager" />
|
2021-01-22 00:57:13 +08:00
|
|
|
|
<xi:include href="standard-options.xml" xpointer="no-legend" />
|
2021-01-22 01:21:41 +08:00
|
|
|
|
<xi:include href="standard-options.xml" xpointer="json" />
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</variablelist>
|
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
|
<title>Exit status</title>
|
|
|
|
|
|
|
|
|
|
<para>On success, 0 is returned.</para>
|
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
|
<title>See Also</title>
|
2023-12-23 02:09:32 +08:00
|
|
|
|
<para><simplelist type="inline">
|
|
|
|
|
<member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
|
|
|
|
|
<member><citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
|
|
|
|
|
<member><citerefentry><refentrytitle>systemd-stub</refentrytitle><manvolnum>7</manvolnum></citerefentry></member>
|
2024-02-27 16:39:57 +08:00
|
|
|
|
<member><citerefentry><refentrytitle>importctl</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
|
2023-12-23 02:09:32 +08:00
|
|
|
|
</simplelist></para>
|
2021-01-12 21:55:11 +08:00
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
|
|
</refentry>
|