summaryrefslogtreecommitdiff
path: root/units
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-01-09 22:24:55 +0100
committerLennart Poettering <lennart@poettering.net>2021-01-19 13:41:42 +0100
commit205e5bcc1cf840ed014037a8cbad1df221cc3ac2 (patch)
tree5dc9451f98aeb948a01a604c4cd8521c5be09967 /units
parent9bca4ae4cd21832c6283efa9b7a1a1c9d038c16d (diff)
downloadsystemd-205e5bcc1cf840ed014037a8cbad1df221cc3ac2.tar.gz
units: add systemd-sysext.service unit for auto-activating extensions at boot
We'll leave this as opt-in (i.e. a unit that must be enabled explicitly), since this is supposed to be a debug/developer feature primarily, and thus no be around in regular production systems.
Diffstat (limited to 'units')
-rw-r--r--units/meson.build1
-rw-r--r--units/systemd-sysext.service.in31
2 files changed, 32 insertions, 0 deletions
diff --git a/units/meson.build b/units/meson.build
index 7b18f1bfea..bdfb2e52ce 100644
--- a/units/meson.build
+++ b/units/meson.build
@@ -211,6 +211,7 @@ in_units = [
['systemd-oomd.service', 'ENABLE_OOMD'],
['systemd-portabled.service', 'ENABLE_PORTABLED',
'dbus-org.freedesktop.portable1.service'],
+ ['systemd-sysext.service', 'ENABLE_SYSEXT'],
['systemd-userdbd.service', 'ENABLE_USERDB'],
['systemd-homed.service', 'ENABLE_HOMED'],
['systemd-quotacheck.service', 'ENABLE_QUOTACHECK'],
diff --git a/units/systemd-sysext.service.in b/units/systemd-sysext.service.in
new file mode 100644
index 0000000000..17b0837554
--- /dev/null
+++ b/units/systemd-sysext.service.in
@@ -0,0 +1,31 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+
+[Unit]
+Description=Merge System Extension Images into /usr/ and /opt/
+Documentation=man:systemd-sysext.service(8)
+DefaultDependencies=no
+Conflicts=shutdown.target
+After=local-fs.target
+Before=sysinit.target shutdown.target systemd-tmpfiles.service
+ConditionCapability=CAP_SYS_ADMIN
+ConditionDirectoryNotEmpty=|/etc/extensions
+ConditionDirectoryNotEmpty=|/run/extensions
+ConditionDirectoryNotEmpty=|/var/lib/extensions
+ConditionDirectoryNotEmpty=|/usr/local/lib/extensions
+ConditionDirectoryNotEmpty=|/usr/lib/extensions
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=@rootbindir@/systemd-sysext --merge
+ExecStop=@rootbindir@/systemd-sysext --unmerge
+
+[Install]
+WantedBy=sysinit.target