Drop split-usr and unmerged-usr support

As previously announced, execute order 66:

https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html

The meson options split-usr, rootlibdir and rootprefix become no-ops
that print a warning if they are set to anything other than the
default values. We can remove them in a future release.
This commit is contained in:
Luca Boccassi 2023-06-12 02:15:19 +01:00 committed by Luca Boccassi
parent 1108285baa
commit b0d3095fd6
128 changed files with 443 additions and 719 deletions

View File

@ -90,7 +90,7 @@ EOF
# disable autopkgtests which are not for upstream
sed -i '/# NOUPSTREAM/ q' debian/tests/control
# enable more unit tests
sed -i '/^CONFFLAGS =/ s/=/= --werror -Dtests=unsafe -Dsplit-usr=true -Dslow-tests=true -Dfuzz-tests=true -Dman=true /' debian/rules
sed -i '/^CONFFLAGS =/ s/=/= --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dman=true /' debian/rules
# no orig tarball
echo '1.0' >debian/source/format

35
README
View File

@ -259,13 +259,14 @@ REQUIREMENTS:
make use of DynamicUser= now, hence enabling nss-systemd is not
optional.
Note that the build prefix for systemd must be /usr. (Moreover, packages
Note that the build prefix for systemd must be /usr/. (Moreover, packages
systemd relies on — such as D-Bus — really should use the same prefix,
otherwise you are on your own.) -Dsplit-usr=false (which is the default
and does not need to be specified) is the recommended setting.
-Dsplit-usr=true can be used to give a semblance of support for systems
with programs installed split between / and /usr. Moving everything
under /usr is strongly encouraged.
otherwise you are on your own.) Split-usr and unmerged-usr systems are no
longer supported, and moving everything under /usr/ is required. Systems
with a separate /usr/ partition must mount it before transitioning into it
(i.e.: from the initrd). For more information see:
https://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge
Additional packages are necessary to run some tests:
- nc (used by test/TEST-12-ISSUE-3171)
@ -404,28 +405,6 @@ SYSV INIT.D SCRIPTS:
needs to look like, and provide an implementation at the marked places.
WARNINGS and TAINT FLAGS:
systemd will warn during early boot if /usr is not already mounted at
this point (that means: either located on the same file system as / or
already mounted in the initrd). While in systemd itself very little
will break if /usr is on a separate late-mounted partition, many of its
dependencies very likely will break sooner or later in one form or
another. For example, udev rules tend to refer to binaries in /usr,
binaries that link to libraries in /usr, or binaries that refer to data
files in /usr. Since these breakages are not always directly visible,
systemd will warn about this. Such setups are not really supported by
the basic set of Linux OS components. Taint flag 'split-usr' will be
set when this condition is detected.
For more information on this issue consult
https://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
systemd will warn if the filesystem is not usr-merged (i.e.: /bin, /sbin
and /lib* are not symlinks to their counterparts under /usr). Taint flag
'unmerged-usr' will be set when this condition is detected.
For more information on this issue consult
https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge
systemd requires that the /run mount point exists. systemd also
requires that /var/run is a symlink to /run. Taint flag 'var-run-bad'
will be set when this condition is detected.

2
TODO
View File

@ -116,8 +116,6 @@ Deprecations and removals:
* rework our PID tracking in services and so on, to be strictly based on pidfd,
once kernel baseline is 5.13.
* H2 2023: remove support for unmerged-usr
* Remove /dev/mem ACPI FPDT parsing when /sys/firmware/acpi/fpdt is ubiquitous.
That requires distros to enable CONFIG_ACPI_FPDT, and have kernels v5.12 for
x86 and v6.2 for arm.

View File

@ -35,4 +35,4 @@ foreach file : in_files
endforeach
meson.add_install_script('sh', '-c',
'test -n "$DESTDIR" || @0@/journalctl --update-catalog'.format(rootbindir))
'test -n "$DESTDIR" || @0@/journalctl --update-catalog'.format(bindir))

View File

@ -395,8 +395,6 @@ Defined-By: systemd
Support: %SUPPORT_URL%
Възможни са следните етикети:
„split-usr“ — „/usr“ е отделна файлова система, която не е била монтирана при
стартирането на systemd
„cgroups-missing“ — ядрото е компилирано без поддръжка на „cgroup“ или е
ограничен достъпът до тази подсистема
„var-run-bad“ — „/var/run“ не е символна връзка към „/run“

View File

@ -392,8 +392,6 @@ Defined-By: systemd
Support: %SUPPORT_URL%
The following "tags" are possible:
- "split-usr" — /usr is a separate file system and was not mounted when systemd
was booted
- "cgroups-missing" — the kernel was compiled without cgroup support or access
to expected interface files is restricted
- "var-run-bad" — /var/run is not a symlink to /run

View File

@ -337,8 +337,6 @@ Defined-By: systemd
Support: %SUPPORT_URL%
Les étiquettes suivantes sont possibles :
- "split-usr" — /usr est un système de fichiers séparé et nétait pas
monté quand systemd a été démarré
- "cgroups-missing" — le noyau a été compilé sans le support des groupes
de contrôle (cgroups) ou l'accès aux fichiers d'interface est restreint
- "var-run-bad" — /var/run n'est pas un lien symbolique vers /run

View File

@ -403,7 +403,6 @@ Defined-By: systemd
Support: %SUPPORT_URL%
I seguenti "tags" sono possibili:
- "split-usr" — /usr è un file system separato e non è stato montato all'avvio di systemd
- "cgroups-missing" — il kernel era compilato senza supporto cgroup o l'accesso ai
file attesi è ristretto.
- "var-run-bad" — /var/run non è un link simbolico (symlink) a /run

View File

@ -396,8 +396,6 @@ Defined-By: systemd
Support: %SUPPORT_URL%
Możliwe są następujące „etykiety”:
• „split-usr” — /usr jest oddzielnym systemem plików, który nie był
zamontowany w czasie uruchomienia systemd,
• „cgroups-missing” — jądro zostało skompilowane bez obsługi cgroups
lub dostęp do oczekiwanych plików interfejsu jest ograniczony,
• „var-run-bad” — /var/run nie jest dowiązaniem symbolicznym do /run,

View File

@ -388,8 +388,6 @@ Defined-By: systemd
Support: %SUPPORT_URL%
Перечень всех возможных меток, указывающих на проблемы конфигурации:
- "split-usr" — каталог /usr расположен на отдельной файловой системе,
которая не была смонтирована на момент запуска systemd
- "cgroups-missing" — ядро собрано без поддержки контрольных групп, либо
отсутствуют права для доступа к интерфейсным файлам контрольных групп
- "var-run-bad" — /var/run не является символьной ссылкой на /run

View File

@ -14,7 +14,6 @@ distribution:
1. Find the right configure parameters for:
* `-Drootprefix=`
* `-Dsysvinit-path=`
* `-Dsysvrcnd-path=`
* `-Drc-local=`

View File

@ -55,7 +55,7 @@ if conf.get('ENABLE_HWDB') == 1
mkdir_p.format(sysconfdir / 'udev/hwdb.d'))
meson.add_install_script('sh', '-c',
'test -n "$DESTDIR" || @0@/systemd-hwdb update'.format(rootbindir))
'test -n "$DESTDIR" || @0@/systemd-hwdb update'.format(bindir))
endif
if want_tests != 'false'

View File

@ -1629,17 +1629,6 @@ node /org/freedesktop/systemd1 {
used to lower the chance of bogus bug reports. The following taints are currently known:</para>
<variablelist>
<varlistentry>
<term><literal>split-usr</literal></term>
<listitem><para><filename>/usr/</filename> was not available when systemd was first invoked. It
must either be part of the root file system, or it must be mounted before
<command>systemd</command> is invoked. See
<ulink url="https://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken">
Booting Without /usr is Broken</ulink> for details why this is bad.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>unmerged-usr</literal></term>

View File

@ -3484,12 +3484,9 @@ StandardInputData=V2XigLJyZSBubyBzdHJhbmdlcnMgdG8gbG92ZQpZb3Uga25vdyB0aGUgcnVsZX
<listitem><para>Colon-separated list of directories to use when launching
executables. <command>systemd</command> uses a fixed value of
<literal><filename>/usr/local/sbin</filename>:<filename>/usr/local/bin</filename>:<filename>/usr/sbin</filename>:<filename>/usr/bin</filename></literal>
in the system manager. When compiled for systems with "unmerged <filename>/usr/</filename>"
(<filename>/bin</filename> is not a symlink to <filename>/usr/bin</filename>),
<literal>:<filename>/sbin</filename>:<filename>/bin</filename></literal> is appended. In case of
the user manager, a different path may be configured by the distribution. It is recommended to
not rely on the order of entries, and have only one program with a given name in
<varname>$PATH</varname>.</para></listitem>
in the system manager. In case of the user manager, a different path may be configured by the
distribution. It is recommended to not rely on the order of entries, and have only one program
with a given name in <varname>$PATH</varname>.</para></listitem>
</varlistentry>
<varlistentry>

File diff suppressed because it is too large Load Diff

View File

@ -9,14 +9,14 @@ option('shared-lib-tag', type : 'string',
option('mode', type : 'combo', choices : ['developer', 'release'],
description : 'autoenable features suitable for systemd development/release builds')
option('split-usr', type : 'combo', choices : ['auto', 'true', 'false'],
description : '''/bin, /sbin aren't symlinks into /usr''')
option('split-usr', type : 'combo', choices : ['auto', 'true', 'false'], deprecated: true,
description : '''This option is deprecated and will be removed in a future release''')
option('split-bin', type : 'combo', choices : ['auto', 'true', 'false'],
description : '''sbin is not a symlink to bin''')
option('rootlibdir', type : 'string',
description : '''[/usr]/lib/x86_64-linux-gnu or such''')
option('rootprefix', type : 'string',
description : '''override the root prefix [default '/' if split-usr and '/usr' otherwise]''')
option('rootlibdir', type : 'string', deprecated: true,
description : '''This option is deprecated and will be removed in a future release''')
option('rootprefix', type : 'string', deprecated: true,
description : '''This option is deprecated and will be removed in a future release''')
option('link-udev-shared', type : 'boolean',
description : 'link systemd-udevd and its helpers to libsystemd-shared.so')
option('link-systemctl-shared', type: 'boolean',
@ -69,7 +69,7 @@ option('loadkeys-path', type : 'string', description : 'path to loadkeys')
option('setfont-path', type : 'string', description : 'path to setfont')
option('nologin-path', type : 'string', description : 'path to nologin')
option('debug-shell', type : 'string', value : '/bin/sh',
option('debug-shell', type : 'string', value : '/usr/bin/sh',
description : 'path to debug shell binary')
option('debug-tty', type : 'string', value : '/dev/tty9',
description : 'specify the tty device for debug shell')
@ -228,7 +228,7 @@ option('time-epoch', type : 'integer', value : 0,
description : 'time epoch for time clients')
option('clock-valid-range-usec-max', type : 'integer', value : 473364000000000, # 15 years
description : 'maximum value in microseconds for the difference between RTC and epoch, exceeding which is considered an RTC error ["0" disables]')
option('default-user-shell', type : 'string', value : '/bin/bash',
option('default-user-shell', type : 'string', value : '/usr/bin/bash',
description : 'default interactive shell')
option('system-alloc-uid-min', type : 'integer', value : 0,

View File

@ -40,14 +40,6 @@ fi
if [ ! -f "$BUILDDIR"/build.ninja ]; then
sysvinit_path=$(realpath /etc/init.d)
init_path=$(realpath /sbin/init 2>/dev/null)
if [ -z "$init_path" ]; then
rootprefix=""
else
rootprefix=${init_path%/lib/systemd/systemd}
rootprefix=/${rootprefix#/}
fi
. /etc/os-release
if [ "$ID" = "centos" ] && [ "$VERSION" = "8" ]; then
UKIFY=false
@ -64,7 +56,6 @@ if [ ! -f "$BUILDDIR"/build.ninja ]; then
CONFIGURE_OPTS=(
-D sysvinit-path="$sysvinit_path"
-D rootprefix="$rootprefix"
-D man=false
-D translations=false
-D version-tag="${VERSION_TAG}"
@ -164,7 +155,7 @@ if [ ! -f "$BUILDDIR"/build.ninja ]; then
# installed in the wrong directory and not be found by cryptsetup. Assume native build.
if grep -q -e "ID=debian" -e "ID_LIKE=debian" /etc/os-release && command -v dpkg 2>/dev/null; then
CONFIGURE_OPTS+=(
-D rootlibdir="/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
-D libdir="/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
-D pamlibdir="/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/security"
)
fi

View File

@ -12,6 +12,6 @@ IMPORT{builtin}="btrfs ready $devnode"
ENV{ID_BTRFS_READY}=="0", ENV{SYSTEMD_READY}="0"
# reconsider pending devices in case when multidevice volume awaits
ENV{ID_BTRFS_READY}=="1", RUN+="{{ROOTBINDIR}}/udevadm trigger -s block -p ID_BTRFS_READY=0"
ENV{ID_BTRFS_READY}=="1", RUN+="{{BINDIR}}/udevadm trigger -s block -p ID_BTRFS_READY=0"
LABEL="btrfs_end"

View File

@ -71,11 +71,11 @@ SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}
SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \
ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \
ENV{ID_AVOID_LOOP}=="", \
RUN+="{{ROOTBINDIR}}/udevadm trigger --parent-match=%p/.."
RUN+="{{BINDIR}}/udevadm trigger --parent-match=%p/.."
TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}"
SUBSYSTEM=="input", ATTR{name}=="Wiebetech LLC Wiebetech", RUN+="{{ROOTBINDIR}}/loginctl lock-sessions"
SUBSYSTEM=="input", ATTR{name}=="Wiebetech LLC Wiebetech", RUN+="{{BINDIR}}/loginctl lock-sessions"
LABEL="seat_end"

View File

@ -63,7 +63,7 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:
SUBSYSTEM=="udc", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="usb-gadget.target"
# Apply sysctl variables to network devices (and only to those) as they appear.
ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="{{ROOTLIBEXECDIR}}/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name"
ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="{{LIBEXECDIR}}/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name"
{% if ENABLE_BACKLIGHT %}
# Pull in backlight save/restore for all backlight devices and

View File

@ -11,7 +11,7 @@ __systemctl() {
}
__systemd_properties() {
{{ROOTLIBEXECDIR}}/systemd --dump-bus-properties
{{LIBEXECDIR}}/systemd --dump-bus-properties
}
__contains_word () {

View File

@ -454,7 +454,7 @@ done
(( $+functions[_systemctl_unit_properties] )) ||
_systemctl_unit_properties() {
local -a _sys_all_properties=( ${(f)"$({{ROOTLIBEXECDIR}}/systemd --no-pager --dump-bus-properties 2>/dev/null)"} )
local -a _sys_all_properties=( ${(f)"$({{LIBEXECDIR}}/systemd --no-pager --dump-bus-properties 2>/dev/null)"} )
_wanted systemd-unit-properties expl 'unit property' \
_values -s , "${_sys_all_properties[@]}"
}

View File

@ -59,22 +59,13 @@
#define NOTIFY_FD_MAX 768
#define NOTIFY_BUFFER_MAX PIPE_BUF
#if HAVE_SPLIT_USR
# define _CONF_PATHS_SPLIT_USR_NULSTR(n) "/lib/" n "\0"
# define _CONF_PATHS_SPLIT_USR(n) , "/lib/" n
#else
# define _CONF_PATHS_SPLIT_USR_NULSTR(n)
# define _CONF_PATHS_SPLIT_USR(n)
#endif
/* Return a nulstr for a standard cascade of configuration paths, suitable to pass to
* conf_files_list_nulstr() to implement drop-in directories for extending configuration files. */
#define CONF_PATHS_NULSTR(n) \
"/etc/" n "\0" \
"/run/" n "\0" \
"/usr/local/lib/" n "\0" \
"/usr/lib/" n "\0" \
_CONF_PATHS_SPLIT_USR_NULSTR(n)
"/usr/lib/" n "\0"
#define CONF_PATHS_USR(n) \
"/etc/" n, \
@ -83,8 +74,7 @@
"/usr/lib/" n
#define CONF_PATHS(n) \
CONF_PATHS_USR(n) \
_CONF_PATHS_SPLIT_USR(n)
CONF_PATHS_USR(n)
#define CONF_PATHS_USR_STRV(n) \
STRV_MAKE(CONF_PATHS_USR(n))

View File

@ -530,10 +530,6 @@ int lookup_paths_init(
assert(scope >= 0);
assert(scope < _RUNTIME_SCOPE_MAX);
#if HAVE_SPLIT_USR
flags |= LOOKUP_PATHS_SPLIT_USR;
#endif
if (!empty_or_root(root_dir)) {
if (scope == RUNTIME_SCOPE_USER)
return -EINVAL;
@ -625,6 +621,7 @@ int lookup_paths_init(
"/usr/local/lib/systemd/system",
SYSTEM_DATA_UNIT_DIR,
"/usr/lib/systemd/system",
/* To be used ONLY for images which might be legacy split-usr */
STRV_IFNOTNULL(flags & LOOKUP_PATHS_SPLIT_USR ? "/lib/systemd/system" : NULL),
STRV_IFNOTNULL(generator_late));
break;

View File

@ -10,7 +10,7 @@
typedef enum LookupPathsFlags {
LOOKUP_PATHS_EXCLUDE_GENERATED = 1 << 0,
LOOKUP_PATHS_TEMPORARY_GENERATED = 1 << 1,
LOOKUP_PATHS_SPLIT_USR = 1 << 2,
LOOKUP_PATHS_SPLIT_USR = 1 << 2, /* Legacy, use ONLY for image payloads which might be old */
} LookupPathsFlags;
typedef struct LookupPaths {

View File

@ -25,20 +25,10 @@
# define PATH_SBIN_BIN_NULSTR(x) PATH_NORMAL_SBIN_BIN_NULSTR(x)
#endif
#define DEFAULT_PATH_NORMAL PATH_SBIN_BIN("/usr/local/") ":" PATH_SBIN_BIN("/usr/")
#define DEFAULT_PATH_NORMAL_NULSTR PATH_SBIN_BIN_NULSTR("/usr/local/") PATH_SBIN_BIN_NULSTR("/usr/")
#define DEFAULT_PATH_SPLIT_USR DEFAULT_PATH_NORMAL ":" PATH_SBIN_BIN("/")
#define DEFAULT_PATH_SPLIT_USR_NULSTR DEFAULT_PATH_NORMAL_NULSTR PATH_SBIN_BIN_NULSTR("/")
#define DEFAULT_PATH PATH_SBIN_BIN("/usr/local/") ":" PATH_SBIN_BIN("/usr/")
#define DEFAULT_PATH_NULSTR PATH_SBIN_BIN_NULSTR("/usr/local/") PATH_SBIN_BIN_NULSTR("/usr/")
#define DEFAULT_PATH_COMPAT PATH_SPLIT_SBIN_BIN("/usr/local/") ":" PATH_SPLIT_SBIN_BIN("/usr/") ":" PATH_SPLIT_SBIN_BIN("/")
#if HAVE_SPLIT_USR
# define DEFAULT_PATH DEFAULT_PATH_SPLIT_USR
# define DEFAULT_PATH_NULSTR DEFAULT_PATH_SPLIT_USR_NULSTR
#else
# define DEFAULT_PATH DEFAULT_PATH_NORMAL
# define DEFAULT_PATH_NULSTR DEFAULT_PATH_NORMAL_NULSTR
#endif
#ifndef DEFAULT_USER_PATH
# define DEFAULT_USER_PATH DEFAULT_PATH
#endif

View File

@ -101,7 +101,6 @@ int manager_serialize(
(void) serialize_item_format(f, "current-job-id", "%" PRIu32, m->current_job_id);
(void) serialize_item_format(f, "n-installed-jobs", "%u", m->n_installed_jobs);
(void) serialize_item_format(f, "n-failed-jobs", "%u", m->n_failed_jobs);
(void) serialize_bool(f, "taint-usr", m->taint_usr);
(void) serialize_bool(f, "ready-sent", m->ready_sent);
(void) serialize_bool(f, "taint-logged", m->taint_logged);
(void) serialize_bool(f, "service-watchdogs", m->service_watchdogs);
@ -376,15 +375,6 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
else
m->n_failed_jobs += n;
} else if ((val = startswith(l, "taint-usr="))) {
int b;
b = parse_boolean(val);
if (b < 0)
log_notice("Failed to parse taint /usr flag '%s', ignoring.", val);
else
m->taint_usr = m->taint_usr || b;
} else if ((val = startswith(l, "ready-sent="))) {
int b;

View File

@ -1036,10 +1036,6 @@ int manager_new(RuntimeScope runtime_scope, ManagerTestRunFlags test_run_flags,
return r;
}
m->taint_usr =
!in_initrd() &&
dir_is_empty("/usr", /* ignore_hidden_or_backup= */ false) > 0;
/* Note that we do not set up the notify fd here. We do that after deserialization,
* since they might have gotten serialized across the reexec. */
@ -4739,12 +4735,9 @@ char* manager_taint_string(const Manager *m) {
assert(m);
const char* stage[13] = {};
const char* stage[12] = {};
size_t n = 0;
if (m->taint_usr)
stage[n++] = "split-usr";
_cleanup_free_ char *usrbin = NULL;
if (readlink_malloc("/bin", &usrbin) < 0 || !PATH_IN_SET(usrbin, "usr/bin", "/usr/bin"))
stage[n++] = "unmerged-usr";

View File

@ -330,8 +330,6 @@ struct Manager {
/* Flags */
bool dispatching_load_queue;
bool taint_usr;
/* Have we already sent out the READY=1 notification? */
bool ready_sent;

View File

@ -133,7 +133,7 @@ libcore = shared_library(
userspace,
versiondep],
install : true,
install_dir : rootpkglibdir)
install_dir : pkglibdir)
core_includes = [includes, include_directories('.')]

View File

@ -138,9 +138,6 @@ static const MountEntry protect_kernel_tunables_sys_table[] = {
/* ProtectKernelModules= option */
static const MountEntry protect_kernel_modules_table[] = {
#if HAVE_SPLIT_USR
{ "/lib/modules", INACCESSIBLE, true },
#endif
{ "/usr/lib/modules", INACCESSIBLE, true },
};
@ -182,14 +179,6 @@ static const MountEntry protect_system_yes_table[] = {
{ "/usr", READONLY, false },
{ "/boot", READONLY, true },
{ "/efi", READONLY, true },
#if HAVE_SPLIT_USR
{ "/lib", READONLY, true },
{ "/lib64", READONLY, true },
{ "/bin", READONLY, true },
# if HAVE_SPLIT_BIN
{ "/sbin", READONLY, true },
# endif
#endif
};
/* ProtectSystem=full includes ProtectSystem=yes */
@ -198,14 +187,6 @@ static const MountEntry protect_system_full_table[] = {
{ "/boot", READONLY, true },
{ "/efi", READONLY, true },
{ "/etc", READONLY, false },
#if HAVE_SPLIT_USR
{ "/lib", READONLY, true },
{ "/lib64", READONLY, true },
{ "/bin", READONLY, true },
# if HAVE_SPLIT_BIN
{ "/sbin", READONLY, true },
# endif
#endif
};
/*

View File

@ -26,7 +26,7 @@
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">{{ROOTLIBEXECDIR}}/systemd-reply-password</annotate>
<annotate key="org.freedesktop.policykit.exec.path">{{LIBEXECDIR}}/systemd-reply-password</annotate>
</action>
<action id="org.freedesktop.systemd1.manage-units">

View File

@ -11,19 +11,19 @@
# considered deprecated (though there is no plan to remove them). New names
# shall have underscores.
prefix=/usr
root_prefix={{ROOTPREFIX_NOSLASH}}
rootprefix=${root_prefix}
prefix={{PREFIX_NOSLASH}}
root_prefix=${prefix}
rootprefix=${prefix}
sysconf_dir={{SYSCONF_DIR}}
sysconfdir=${sysconf_dir}
systemd_util_dir=${root_prefix}/lib/systemd
systemd_util_dir=${prefix}/lib/systemd
systemdutildir=${systemd_util_dir}
systemd_system_unit_dir=${rootprefix}/lib/systemd/system
systemd_system_unit_dir=${prefix}/lib/systemd/system
systemdsystemunitdir=${systemd_system_unit_dir}
systemd_system_preset_dir=${rootprefix}/lib/systemd/system-preset
systemd_system_preset_dir=${prefix}/lib/systemd/system-preset
systemdsystempresetdir=${systemd_system_preset_dir}
systemd_user_unit_dir=${prefix}/lib/systemd/user
@ -44,7 +44,7 @@ systemdsystemunitpath=${systemd_system_unit_path}
systemd_user_unit_path=${systemd_user_conf_dir}:/etc/systemd/user:/run/systemd/user:/usr/local/lib/systemd/user:/usr/local/share/systemd/user:${systemd_user_unit_dir}:/usr/lib/systemd/user:/usr/share/systemd/user
systemduserunitpath=${systemd_user_unit_path}
systemd_system_generator_dir=${root_prefix}/lib/systemd/system-generators
systemd_system_generator_dir=${prefix}/lib/systemd/system-generators
systemdsystemgeneratordir=${systemd_system_generator_dir}
systemd_user_generator_dir=${prefix}/lib/systemd/user-generators
@ -56,10 +56,10 @@ systemdsystemgeneratorpath=${systemd_system_generator_path}
systemd_user_generator_path=/run/systemd/user-generators:/etc/systemd/user-generators:/usr/local/lib/systemd/user-generators:${systemd_user_generator_dir}
systemdusergeneratorpath=${systemd_user_generator_path}
systemd_sleep_dir=${root_prefix}/lib/systemd/system-sleep
systemd_sleep_dir=${prefix}/lib/systemd/system-sleep
systemdsleepdir=${systemd_sleep_dir}
systemd_shutdown_dir=${root_prefix}/lib/systemd/system-shutdown
systemd_shutdown_dir=${prefix}/lib/systemd/system-shutdown
systemdshutdowndir=${systemd_shutdown_dir}
tmpfiles_dir=${prefix}/lib/tmpfiles.d
@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
sysusers_dir=${rootprefix}/lib/sysusers.d
sysusers_dir=${prefix}/lib/sysusers.d
sysusersdir=${sysusers_dir}
sysctl_dir=${rootprefix}/lib/sysctl.d
sysctl_dir=${prefix}/lib/sysctl.d
sysctldir=${sysctl_dir}
binfmt_dir=${rootprefix}/lib/binfmt.d
binfmt_dir=${prefix}/lib/binfmt.d
binfmtdir=${binfmt_dir}
modules_load_dir=${rootprefix}/lib/modules-load.d
modules_load_dir=${prefix}/lib/modules-load.d
modulesloaddir=${modules_load_dir}
catalog_dir=${prefix}/lib/systemd/catalog

View File

@ -533,13 +533,13 @@ static int create_disk(
}
fprintf(f,
"ExecStartPost=" ROOTLIBEXECDIR "/systemd-makefs '%s' '/dev/mapper/%s'\n",
"ExecStartPost=" LIBEXECDIR "/systemd-makefs '%s' '/dev/mapper/%s'\n",
tmp_fstype_escaped ?: "ext4", name_escaped);
}
if (swap)
fprintf(f,
"ExecStartPost=" ROOTLIBEXECDIR "/systemd-makefs swap '/dev/mapper/%s'\n",
"ExecStartPost=" LIBEXECDIR "/systemd-makefs swap '/dev/mapper/%s'\n",
name_escaped);
r = fflush_and_check(f);

View File

@ -35,9 +35,6 @@ static const char prefixes[] =
"/usr/local/share\0"
"/usr/lib\0"
"/usr/share\0"
#if HAVE_SPLIT_USR
"/lib\0"
#endif
;
static const char suffixes[] =
@ -368,36 +365,6 @@ static int enumerate_dir(
return 0;
}
static int should_skip_path(const char *prefix, const char *suffix) {
#if HAVE_SPLIT_USR
_cleanup_free_ char *target = NULL, *dirname = NULL;
dirname = path_join(prefix, suffix);
if (!dirname)
return -ENOMEM;
if (chase(dirname, NULL, 0, &target, NULL) < 0)
return false;
NULSTR_FOREACH(p, prefixes) {
_cleanup_free_ char *tmp = NULL;
if (path_startswith(dirname, p))
continue;
tmp = path_join(p, suffix);
if (!tmp)
return -ENOMEM;
if (path_equal(target, tmp)) {
log_debug("%s redirects to %s, skipping.", dirname, target);
return true;
}
}
#endif
return false;
}
static int process_suffix(const char *suffix, const char *onlyprefix) {
char *f, *key;
OrderedHashmap *top, *bottom, *drops, *h;
@ -421,9 +388,6 @@ static int process_suffix(const char *suffix, const char *onlyprefix) {
NULSTR_FOREACH(p, prefixes) {
_cleanup_free_ char *t = NULL;
if (should_skip_path(p, suffix) > 0)
continue;
t = path_join(p, suffix);
if (!t) {
r = -ENOMEM;

View File

@ -231,7 +231,7 @@ static int process_resume(void) {
"\n"
"[Service]\n"
"Type=oneshot\n"
"ExecStart=" ROOTLIBEXECDIR "/systemd-hibernate-resume %2$s %3$" PRIu64 "\n",
"ExecStart=" LIBEXECDIR "/systemd-hibernate-resume %2$s %3$" PRIu64 "\n",
device_unit,
arg_resume_device,
arg_resume_offset);

View File

@ -48,7 +48,7 @@ if conf.get('ENABLE_IMPORTD') == 1
install_dir : polkitpolicydir)
install_data('import-pubring.gpg',
install_dir : rootlibexecdir)
install_dir : libexecdir)
# TODO: shouldn't this be in pkgdatadir?
endif

View File

@ -101,8 +101,8 @@ static int create_disk(
"Type=oneshot\n"
"RemainAfterExit=yes\n"
"TimeoutSec=infinity\n"
"ExecStart=" ROOTLIBEXECDIR "/systemd-integritysetup attach '%s' '%s' '%s' '%s'\n"
"ExecStop=" ROOTLIBEXECDIR "/systemd-integritysetup detach '%s'\n",
"ExecStart=" LIBEXECDIR "/systemd-integritysetup attach '%s' '%s' '%s' '%s'\n"
"ExecStop=" LIBEXECDIR "/systemd-integritysetup detach '%s'\n",
name_escaped, device, empty_to_dash(key_file_escaped), empty_to_dash(options),
name_escaped);

View File

@ -9,7 +9,7 @@
prefix={{PREFIX}}
exec_prefix={{PREFIX}}
libdir={{ROOTLIBDIR}}
libdir={{LIBDIR}}
includedir={{INCLUDE_DIR}}
Name: systemd

View File

@ -86,5 +86,4 @@ struct trie_value_entry2_f {
"/etc/systemd/hwdb/hwdb.bin\0" \
"/etc/udev/hwdb.bin\0" \
"/usr/lib/systemd/hwdb/hwdb.bin\0" \
_CONF_PATHS_SPLIT_USR_NULSTR("systemd/hwdb/hwdb.bin") \
UDEVLIBEXECDIR "/hwdb.bin\0"

View File

@ -317,7 +317,7 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
return from_user_dir("XDG_DESKTOP_DIR", buffer, ret);
case SD_PATH_SYSTEMD_UTIL:
*ret = ROOTPREFIX_NOSLASH "/lib/systemd";
*ret = PREFIX_NOSLASH "/lib/systemd";
return 0;
case SD_PATH_SYSTEMD_SYSTEM_UNIT:
@ -325,7 +325,7 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
return 0;
case SD_PATH_SYSTEMD_SYSTEM_PRESET:
*ret = ROOTPREFIX_NOSLASH "/lib/systemd/system-preset";
*ret = PREFIX_NOSLASH "/lib/systemd/system-preset";
return 0;
case SD_PATH_SYSTEMD_USER_UNIT:
@ -333,7 +333,7 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
return 0;
case SD_PATH_SYSTEMD_USER_PRESET:
*ret = ROOTPREFIX_NOSLASH "/lib/systemd/user-preset";
*ret = PREFIX_NOSLASH "/lib/systemd/user-preset";
return 0;
case SD_PATH_SYSTEMD_SYSTEM_CONF:
@ -353,11 +353,11 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
return 0;
case SD_PATH_SYSTEMD_SLEEP:
*ret = ROOTPREFIX_NOSLASH "/lib/systemd/system-sleep";
*ret = PREFIX_NOSLASH "/lib/systemd/system-sleep";
return 0;
case SD_PATH_SYSTEMD_SHUTDOWN:
*ret = ROOTPREFIX_NOSLASH "/lib/systemd/system-shutdown";
*ret = PREFIX_NOSLASH "/lib/systemd/system-shutdown";
return 0;
case SD_PATH_TMPFILES:
@ -365,19 +365,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
return 0;
case SD_PATH_SYSUSERS:
*ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
*ret = PREFIX_NOSLASH "/lib/sysusers.d";
return 0;
case SD_PATH_SYSCTL:
*ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
*ret = PREFIX_NOSLASH "/lib/sysctl.d";
return 0;
case SD_PATH_BINFMT:
*ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
*ret = PREFIX_NOSLASH "/lib/binfmt.d";
return 0;
case SD_PATH_MODULES_LOAD:
*ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
*ret = PREFIX_NOSLASH "/lib/modules-load.d";
return 0;
case SD_PATH_CATALOG:
@ -537,9 +537,6 @@ static int get_search(uint64_t type, char ***list) {
true,
ARRAY_SBIN_BIN("/usr/local/"),
ARRAY_SBIN_BIN("/usr/"),
#if HAVE_SPLIT_USR
ARRAY_SBIN_BIN("/"),
#endif
NULL);
case SD_PATH_SEARCH_LIBRARY_PRIVATE:
@ -550,9 +547,6 @@ static int get_search(uint64_t type, char ***list) {
false,
"/usr/local/lib",
"/usr/lib",
#if HAVE_SPLIT_USR
"/lib",
#endif
NULL);
case SD_PATH_SEARCH_LIBRARY_ARCH:
@ -562,9 +556,6 @@ static int get_search(uint64_t type, char ***list) {
"LD_LIBRARY_PATH",
true,
LIBDIR,
#if HAVE_SPLIT_USR
ROOTLIBDIR,
#endif
NULL);
case SD_PATH_SEARCH_SHARED:

View File

@ -9,7 +9,7 @@
prefix={{PREFIX}}
exec_prefix={{PREFIX}}
libdir={{ROOTLIBDIR}}
libdir={{LIBDIR}}
includedir={{INCLUDE_DIR}}
Name: libudev

View File

@ -231,8 +231,8 @@ static int extract_now(
}
/* Then, send unit file data to the parent (or/and add it to the hashmap). For that we use our usual unit
* discovery logic. Note that we force looking inside of /lib/systemd/system/ for units too, as we mightbe
* compiled for a split-usr system but the image might be a legacy-usr one. */
* discovery logic. Note that we force looking inside of /lib/systemd/system/ for units too, as the
* image might have a legacy split-usr layout. */
r = lookup_paths_init(&paths, RUNTIME_SCOPE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, where);
if (r < 0)
return log_debug_errno(r, "Failed to acquire lookup paths: %m");
@ -1484,7 +1484,7 @@ int portable_attach(
strempty(extensions_joined));
}
r = lookup_paths_init(&paths, RUNTIME_SCOPE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, NULL);
r = lookup_paths_init(&paths, RUNTIME_SCOPE_SYSTEM, /* flags= */ 0, NULL);
if (r < 0)
return r;
@ -1684,7 +1684,7 @@ int portable_detach(
assert(name_or_path);
r = lookup_paths_init(&paths, RUNTIME_SCOPE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, NULL);
r = lookup_paths_init(&paths, RUNTIME_SCOPE_SYSTEM, /* flags= */ 0, NULL);
if (r < 0)
return r;
@ -1871,7 +1871,7 @@ static int portable_get_state_internal(
assert(name_or_path);
assert(ret);
r = lookup_paths_init(&paths, RUNTIME_SCOPE_SYSTEM, LOOKUP_PATHS_SPLIT_USR, NULL);
r = lookup_paths_init(&paths, RUNTIME_SCOPE_SYSTEM, /* flags= */ 0, NULL);
if (r < 0)
return r;

View File

@ -125,7 +125,7 @@ if conf.get('ENABLE_RESOLVE') == 1
install_data('org.freedesktop.resolve1.policy',
install_dir : polkitpolicydir)
install_data('resolv.conf',
install_dir : rootlibexecdir)
install_dir : libexecdir)
endif
custom_target(

View File

@ -5,7 +5,7 @@
# RPM macros for packages installing systemd unit files
%_systemd_util_dir {{ROOTLIBEXECDIR}}
%_systemd_util_dir {{LIBEXECDIR}}
%_unitdir {{SYSTEM_DATA_UNIT_DIR}}
%_userunitdir {{USER_DATA_UNIT_DIR}}
%_presetdir {{SYSTEM_PRESET_DIR}}
@ -167,10 +167,10 @@ SYSTEMD_INLINE_EOF\
%sysctl_apply() \
%{expand:%%{?__systemd_someargs_%#:%%__systemd_someargs_%# sysctl_apply}} \
[ -x {{ROOTLIBEXECDIR}}/systemd-sysctl ] && {{ROOTLIBEXECDIR}}/systemd-sysctl %{?*} || : \
[ -x {{LIBEXECDIR}}/systemd-sysctl ] && {{LIBEXECDIR}}/systemd-sysctl %{?*} || : \
%{nil}
%binfmt_apply() \
%{expand:%%{?__systemd_someargs_%#:%%__systemd_someargs_%# binfmt_apply}} \
[ -x {{ROOTLIBEXECDIR}}/systemd-binfmt ] && {{ROOTLIBEXECDIR}}/systemd-binfmt %{?*} || : \
[ -x {{LIBEXECDIR}}/systemd-binfmt ] && {{LIBEXECDIR}}/systemd-binfmt %{?*} || : \
%{nil}

View File

@ -3,8 +3,8 @@
in_files = [
['macros.systemd', rpmmacrosdir != 'no', rpmmacrosdir],
# we conditionalize on rpmmacrosdir, but install into rootlibexecdir
['systemd-update-helper', rpmmacrosdir != 'no', rootlibexecdir],
# we conditionalize on rpmmacrosdir, but install into libexecdir
['systemd-update-helper', rpmmacrosdir != 'no', libexecdir],
['triggers.systemd', false],
['triggers.systemd.sh', false]]

View File

@ -90,7 +90,7 @@ assert(rpm.execute("journalctl", "--update-catalog"))
if posix.access("/run/systemd/system") then
pid = posix.fork()
if pid == 0 then
assert(posix.exec("{{ROOTLIBEXECDIR}}/systemd-binfmt"))
assert(posix.exec("{{LIBEXECDIR}}/systemd-binfmt"))
elseif pid > 0 then
posix.wait(pid)
end
@ -115,7 +115,7 @@ end
if posix.access("/run/systemd/system") then
pid = posix.fork()
if pid == 0 then
assert(posix.exec("{{ROOTLIBEXECDIR}}/systemd-sysctl"))
assert(posix.exec("{{LIBEXECDIR}}/systemd-sysctl"))
elseif pid > 0 then
posix.wait(pid)
end

View File

@ -61,7 +61,7 @@ journalctl --update-catalog || :
if test -d "/run/systemd/system"; then
# systemd-binfmt might fail if binfmt_misc kernel module is not loaded
# during install
{{ROOTLIBEXECDIR}}/systemd-binfmt || :
{{LIBEXECDIR}}/systemd-binfmt || :
fi
%transfiletriggerin -P 1000600 -- {{TMPFILES_DIR}}
@ -83,5 +83,5 @@ fi
# This script will automatically apply sysctl rules if files have been
# installed or updated in {{SYSCTL_DIR}}.
if test -d "/run/systemd/system"; then
{{ROOTLIBEXECDIR}}/systemd-sysctl || :
{{LIBEXECDIR}}/systemd-sysctl || :
fi

View File

@ -261,11 +261,6 @@ static int path_is_vendor_or_generator(const LookupPaths *lp, const char *path)
if (path_startswith(rpath, "/usr"))
return true;
#if HAVE_SPLIT_USR
if (path_startswith(rpath, "/lib"))
return true;
#endif
if (path_is_generator(lp, rpath))
return true;

View File

@ -3,18 +3,10 @@
#include <stdbool.h>
#if HAVE_SPLIT_USR
#define KBD_KEYMAP_DIRS \
"/usr/share/keymaps/\0" \
"/usr/share/kbd/keymaps/\0" \
"/usr/lib/kbd/keymaps/\0" \
"/lib/kbd/keymaps/\0"
#else
#define KBD_KEYMAP_DIRS \
"/usr/share/keymaps/\0" \
"/usr/share/kbd/keymaps/\0" \
"/usr/lib/kbd/keymaps/\0"
#endif
int get_keymaps(char ***l);
bool keymap_is_valid(const char *name);

View File

@ -339,7 +339,7 @@ libshared = shared_library(
dependencies : [libshared_deps,
userspace],
install : true,
install_dir : rootpkglibdir)
install_dir : pkglibdir)
shared_fdisk_sources = files(
'fdisk-util.c',

View File

@ -96,4 +96,4 @@ DnsCacheMode dns_cache_mode_from_string(const char *s) _pure_;
#define PRIVATE_STUB_RESOLV_CONF "/run/systemd/resolve/stub-resolv.conf"
/* A static resolv.conf file containing no domains, but only our own DNS server address */
#define PRIVATE_STATIC_RESOLV_CONF ROOTLIBEXECDIR "/resolv.conf"
#define PRIVATE_STATIC_RESOLV_CONF LIBEXECDIR "/resolv.conf"

View File

@ -13,8 +13,7 @@
"/run/" n "\0" \
"/run/host/" n "\0" \
"/usr/local/lib/" n "\0" \
"/usr/lib/" n "\0" \
_CONF_PATHS_SPLIT_USR_NULSTR(n)
"/usr/lib/" n "\0"
int dropin_user_record_by_name(const char *name, const char *path, UserDBFlags flags, UserRecord **ret);
int dropin_user_record_by_uid(uid_t uid, const char *path, UserDBFlags flags, UserRecord **ret);

View File

@ -1448,7 +1448,7 @@ int userdb_block_nss_systemd(int b) {
/* Note that we might be called from libnss_systemd.so.2 itself, but that should be fine, really. */
dl = dlopen(ROOTLIBDIR "/libnss_systemd.so.2", RTLD_LAZY|RTLD_NODELETE);
dl = dlopen(LIBDIR "/libnss_systemd.so.2", RTLD_LAZY|RTLD_NODELETE);
if (!dl) {
/* If the file isn't installed, don't complain loudly */
log_debug("Failed to dlopen(libnss_systemd.so.2), ignoring: %s", dlerror());

View File

@ -4,6 +4,6 @@ systemd_sysext_sources = files('sysext.c')
if conf.get('ENABLE_SYSEXT') == 1
meson.add_install_script(meson_make_symlink,
rootbindir / 'systemd-sysext',
rootbindir / 'systemd-confext')
bindir / 'systemd-sysext',
bindir / 'systemd-confext')
endif

View File

@ -137,7 +137,7 @@ int enable_sysv_units(const char *verb, char **args) {
while (args[f]) {
const char *argv[] = {
ROOTLIBEXECDIR "/systemd-sysv-install",
LIBEXECDIR "/systemd-sysv-install",
NULL, /* --root= */
NULL, /* verb */
NULL, /* service */

View File

@ -8,22 +8,12 @@ TEST(manager_taint_string) {
_cleanup_free_ char *a = manager_taint_string(&m);
assert_se(a);
log_debug("taint string w/o split-usr: '%s'", a);
/* split-usr is the only one that is cached in Manager, so we know it's not present.
* The others are queried dynamically, so we'd need to duplicate the logic here
* to test for them. Let's do just one. */
assert_se(!strstr(a, "split-usr"));
log_debug("taint string: '%s'", a);
if (cg_all_unified() == 0)
assert_se(strstr(a, "cgroupsv1"));
else
assert_se(!strstr(a, "cgroupsv1"));
m.taint_usr = true;
_cleanup_free_ char *b = manager_taint_string(&m);
assert_se(b);
log_debug("taint string w/ split-usr: '%s'", b);
assert_se(strstr(b, "split-usr"));
}
DEFINE_TEST_MAIN(LOG_DEBUG);

View File

@ -90,7 +90,7 @@ link_config_gperf_c = custom_target(
if get_option('link-udev-shared')
udev_link_with = [libshared]
udev_rpath = rootpkglibdir
udev_rpath = pkglibdir
else
udev_link_with = [libshared_static,
libsystemd_static]

View File

@ -669,7 +669,7 @@ int xdg_autostart_service_generate_unit(
/* Just assume the values are reasonably sane */
fprintf(f,
"ExecCondition=" ROOTLIBEXECDIR "/systemd-xdg-autostart-condition \"%s\" \"%s\"\n",
"ExecCondition=" LIBEXECDIR "/systemd-xdg-autostart-condition \"%s\" \"%s\"\n",
e_only_show_in,
e_not_show_in);
}

View File

@ -13,7 +13,7 @@
# the core dump.
#
# See systemd-coredump(8) and core(5).
kernel.core_pattern=|{{ROOTLIBEXECDIR}}/systemd-coredump %P %u %g %s %t %c %h
kernel.core_pattern=|{{LIBEXECDIR}}/systemd-coredump %P %u %g %s %t %c %h
# Allow 16 coredumps to be dispatched in parallel by the kernel.
# We collect metadata from /proc/%P/, and thus need to make sure the crashed

View File

@ -376,8 +376,6 @@ Defined-By: systemd
Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
Możliwe są następujące „etykiety”:
• „split-usr” — /usr jest oddzielnym systemem plików, który nie był
zamontowany w czasie uruchomienia systemd,
• „cgroups-missing” — jądro zostało skompilowane bez obsługi cgroups
lub dostęp do oczekiwanych plików interfejsu jest ograniczony,
• „var-run-bad” — /var/run nie jest dowiązaniem symbolicznym do /run,

View File

@ -59,11 +59,6 @@ test_one() (
touch "$i"
done
# For split-usr system
for i in "$out"/systemd-*.service; do
sed -i -e 's:ExecStart=/lib/systemd/:ExecStart=/usr/lib/systemd/:' "$i"
done
if [[ "${input##*/}" =~ \.fstab\.input ]]; then
for i in "$out"/*.{automount,mount,swap}; do
sed -i -e 's:SourcePath=.*$:SourcePath=/etc/fstab:' "$i"

View File

@ -91,7 +91,7 @@ else
fi
if ! ROOTLIBDIR=$(pkg-config --variable=systemdutildir systemd); then
echo "WARNING! Cannot determine rootlibdir from pkg-config, assuming /usr/lib/systemd" >&2
echo "WARNING! Cannot determine libdir from pkg-config, assuming /usr/lib/systemd" >&2
ROOTLIBDIR=/usr/lib/systemd
fi
@ -2191,14 +2191,6 @@ install_keymaps() {
dinfo "Install console keymaps"
if command -v meson >/dev/null \
&& [[ "$(meson configure "${BUILD_DIR:?}" | grep 'split-usr' | awk '{ print $2 }')" == "true" ]] \
|| [[ ! -L /lib ]]; then
prefix+=(
"/lib"
)
fi
if (( $# == 0 )); then
for p in "${prefix[@]}"; do
# The first three paths may be deprecated.

View File

@ -19,8 +19,8 @@ Before=rescue.service
[Service]
Environment=HOME=/root
WorkingDirectory=-/root
ExecStartPre=-{{ROOTBINDIR}}/plymouth --wait quit
ExecStart=-{{ROOTLIBEXECDIR}}/systemd-sulogin-shell emergency
ExecStartPre=-{{BINDIR}}/plymouth --wait quit
ExecStart=-{{LIBEXECDIR}}/systemd-sulogin-shell emergency
Type=idle
StandardInput=tty-force
StandardOutput=inherit

View File

@ -22,7 +22,7 @@ OnFailureJobMode=replace-irreversibly
Type=oneshot
# FIXME: once dracut is patched to install the symlink, change to:
# ExecStart={{ROOTLIBEXECDIR}}/systemd-sysroot-fstab-check
# ExecStart={{LIBEXECDIR}}/systemd-sysroot-fstab-check
ExecStart=@{{SYSTEM_GENERATOR_DIR}}/systemd-fstab-generator systemd-sysroot-fstab-check
# We want to enqueue initrd-cleanup.service/start after we finished the part

View File

@ -18,8 +18,8 @@ Before=shutdown.target
[Service]
Environment=HOME=/root
WorkingDirectory=-/root
ExecStartPre=-{{ROOTBINDIR}}/plymouth --wait quit
ExecStart=-{{ROOTLIBEXECDIR}}/systemd-sulogin-shell rescue
ExecStartPre=-{{BINDIR}}/plymouth --wait quit
ExecStart=-{{LIBEXECDIR}}/systemd-sulogin-shell rescue
Type=idle
StandardInput=tty-force
StandardOutput=inherit

View File

@ -19,7 +19,7 @@ Before=sysinit.target shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-backlight load %i
ExecStop={{ROOTLIBEXECDIR}}/systemd-backlight save %i
ExecStart={{LIBEXECDIR}}/systemd-backlight load %i
ExecStop={{LIBEXECDIR}}/systemd-backlight save %i
TimeoutSec=90s
StateDirectory=systemd/backlight

View File

@ -21,5 +21,5 @@ Before=initrd-root-device.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-battery-check
ExecStart={{LIBEXECDIR}}/systemd-battery-check
FailureAction=poweroff-force

View File

@ -28,6 +28,6 @@ ConditionDirectoryNotEmpty=|/run/binfmt.d
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
ExecStart={{LIBEXECDIR}}/systemd-binfmt
ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
TimeoutSec=90s

View File

@ -19,4 +19,4 @@ Before=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-bless-boot good
ExecStart={{LIBEXECDIR}}/systemd-bless-boot good

View File

@ -18,7 +18,7 @@ Before=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-boot-check-no-failures
ExecStart={{LIBEXECDIR}}/systemd-boot-check-no-failures
[Install]
RequiredBy=boot-complete.target

View File

@ -17,7 +17,7 @@ Requires=systemd-journald.socket
Before=shutdown.target
[Service]
ExecStart=-{{ROOTLIBEXECDIR}}/systemd-coredump
ExecStart=-{{LIBEXECDIR}}/systemd-coredump
IPAddressDeny=any
LockPersonality=yes
MemoryDenyWriteExecute=yes

View File

@ -20,5 +20,5 @@ OnFailureJobMode=replace-irreversibly
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-fsck
ExecStart={{LIBEXECDIR}}/systemd-fsck
TimeoutSec=infinity

View File

@ -19,5 +19,5 @@ Before=systemd-quotacheck.service shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-fsck %f
ExecStart={{LIBEXECDIR}}/systemd-fsck %f
TimeoutSec=infinity

View File

@ -19,5 +19,5 @@ Before=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-growfs /
ExecStart={{LIBEXECDIR}}/systemd-growfs /
TimeoutSec=infinity

View File

@ -20,5 +20,5 @@ Before=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-growfs %f
ExecStart={{LIBEXECDIR}}/systemd-growfs %f
TimeoutSec=infinity

View File

@ -16,4 +16,4 @@ After=sleep.target
[Service]
Type=oneshot
ExecStart={{ROOTLIBEXECDIR}}/systemd-sleep hibernate
ExecStart={{LIBEXECDIR}}/systemd-sleep hibernate

View File

@ -20,7 +20,7 @@ DeviceAllow=/dev/loop-control rw
DeviceAllow=/dev/mapper/control rw
DeviceAllow=block-* rw
DeviceAllow=char-hidraw rw
ExecStart={{ROOTLIBEXECDIR}}/systemd-homed
ExecStart={{LIBEXECDIR}}/systemd-homed
KillMode=mixed
LimitNOFILE={{HIGH_RLIMIT_NOFILE}}
LockPersonality=yes

View File

@ -17,7 +17,7 @@ Documentation=man:org.freedesktop.hostname1(5)
[Service]
BusName=org.freedesktop.hostname1
CapabilityBoundingSet=CAP_SYS_ADMIN
ExecStart={{ROOTLIBEXECDIR}}/systemd-hostnamed
ExecStart={{LIBEXECDIR}}/systemd-hostnamed
IPAddressDeny=any
LockPersonality=yes
MemoryDenyWriteExecute=yes

View File

@ -16,4 +16,4 @@ After=sleep.target
[Service]
Type=oneshot
ExecStart={{ROOTLIBEXECDIR}}/systemd-sleep hybrid-sleep
ExecStart={{LIBEXECDIR}}/systemd-sleep hybrid-sleep

View File

@ -13,7 +13,7 @@ Documentation=man:systemd-importd.service(8)
Documentation=man:org.freedesktop.import1(5)
[Service]
ExecStart={{ROOTLIBEXECDIR}}/systemd-importd
ExecStart={{LIBEXECDIR}}/systemd-importd
BusName=org.freedesktop.import1
KillMode=mixed
CapabilityBoundingSet=CAP_CHOWN CAP_FOWNER CAP_FSETID CAP_MKNOD CAP_SETFCAP CAP_SYS_ADMIN CAP_SETPCAP CAP_DAC_OVERRIDE CAP_LINUX_IMMUTABLE

View File

@ -13,7 +13,7 @@ Documentation=man:systemd-initctl.service(8)
DefaultDependencies=no
[Service]
ExecStart={{ROOTLIBEXECDIR}}/systemd-initctl
ExecStart={{LIBEXECDIR}}/systemd-initctl
NoNewPrivileges=yes
NotifyAccess=all
SystemCallArchitectures=native

View File

@ -14,7 +14,7 @@ Requires=systemd-journal-gatewayd.socket
[Service]
DynamicUser=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-journal-gatewayd
ExecStart={{LIBEXECDIR}}/systemd-journal-gatewayd
LockPersonality=yes
MemoryDenyWriteExecute=yes
PrivateDevices=yes

View File

@ -13,7 +13,7 @@ Documentation=man:systemd-journal-remote(8) man:journal-remote.conf(5)
Requires=systemd-journal-remote.socket
[Service]
ExecStart={{ROOTLIBEXECDIR}}/systemd-journal-remote --listen-https=-3 --output=/var/log/journal/remote/
ExecStart={{LIBEXECDIR}}/systemd-journal-remote --listen-https=-3 --output=/var/log/journal/remote/
LockPersonality=yes
LogsDirectory=journal/remote
MemoryDenyWriteExecute=yes

View File

@ -15,7 +15,7 @@ After=network-online.target
[Service]
DynamicUser=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-journal-upload --save-state
ExecStart={{LIBEXECDIR}}/systemd-journal-upload --save-state
LockPersonality=yes
MemoryDenyWriteExecute=yes
PrivateDevices=yes

View File

@ -22,7 +22,7 @@ IgnoreOnIsolate=yes
[Service]
DeviceAllow=char-* rw
ExecStart={{ROOTLIBEXECDIR}}/systemd-journald
ExecStart={{LIBEXECDIR}}/systemd-journald
FileDescriptorStoreMax=4224
IPAddressDeny=any
LockPersonality=yes

View File

@ -16,7 +16,7 @@ After=systemd-journald@%i.socket systemd-journald-varlink@%i.socket
[Service]
CapabilityBoundingSet=CAP_SYS_ADMIN CAP_DAC_OVERRIDE CAP_SYS_PTRACE CAP_CHOWN CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_MAC_OVERRIDE
DevicePolicy=closed
ExecStart={{ROOTLIBEXECDIR}}/systemd-journald %i
ExecStart={{LIBEXECDIR}}/systemd-journald %i
FileDescriptorStoreMax=4224
Group=systemd-journal
IPAddressDeny=any

View File

@ -17,7 +17,7 @@ Documentation=man:org.freedesktop.locale1(5)
[Service]
BusName=org.freedesktop.locale1
CapabilityBoundingSet=
ExecStart={{ROOTLIBEXECDIR}}/systemd-localed
ExecStart={{LIBEXECDIR}}/systemd-localed
IPAddressDeny=any
LockPersonality=yes
MemoryDenyWriteExecute=yes

View File

@ -30,7 +30,7 @@ DeviceAllow=char-drm rw
DeviceAllow=char-input rw
DeviceAllow=char-tty rw
DeviceAllow=char-vcs rw
ExecStart={{ROOTLIBEXECDIR}}/systemd-logind
ExecStart={{LIBEXECDIR}}/systemd-logind
FileDescriptorStoreMax=512
IPAddressDeny=any
LockPersonality=yes

View File

@ -19,7 +19,7 @@ RequiresMountsFor=/var/lib/machines
[Service]
BusName=org.freedesktop.machine1
CapabilityBoundingSet=CAP_KILL CAP_SYS_PTRACE CAP_SYS_ADMIN CAP_SETGID CAP_SYS_CHROOT CAP_DAC_READ_SEARCH CAP_DAC_OVERRIDE CAP_CHOWN CAP_FOWNER CAP_FSETID CAP_MKNOD CAP_LINUX_IMMUTABLE
ExecStart={{ROOTLIBEXECDIR}}/systemd-machined
ExecStart={{LIBEXECDIR}}/systemd-machined
IPAddressDeny=any
LockPersonality=yes
MemoryDenyWriteExecute=yes

View File

@ -25,5 +25,5 @@ ConditionKernelCommandLine=|rd.modules-load
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-modules-load
ExecStart={{LIBEXECDIR}}/systemd-modules-load
TimeoutSec=90s

View File

@ -20,7 +20,7 @@ Before=shutdown.target initrd-switch-root.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-network-generator
ExecStart={{LIBEXECDIR}}/systemd-network-generator
[Install]
WantedBy=sysinit.target

View File

@ -19,7 +19,7 @@ Before=network-online.target shutdown.target
[Service]
Type=oneshot
ExecStart={{ROOTLIBEXECDIR}}/systemd-networkd-wait-online
ExecStart={{LIBEXECDIR}}/systemd-networkd-wait-online
RemainAfterExit=yes
[Install]

View File

@ -19,7 +19,7 @@ Before=network-online.target shutdown.target
[Service]
Type=oneshot
ExecStart={{ROOTLIBEXECDIR}}/systemd-networkd-wait-online -i %i
ExecStart={{LIBEXECDIR}}/systemd-networkd-wait-online -i %i
RemainAfterExit=yes
[Install]

View File

@ -24,7 +24,7 @@ AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET
BusName=org.freedesktop.network1
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW
DeviceAllow=char-* rw
ExecStart=!!{{ROOTLIBEXECDIR}}/systemd-networkd
ExecStart=!!{{LIBEXECDIR}}/systemd-networkd
FileDescriptorStoreMax=512
LockPersonality=yes
MemoryDenyWriteExecute=yes

View File

@ -26,7 +26,7 @@ After=systemd-oomd.socket
AmbientCapabilities=CAP_KILL CAP_DAC_OVERRIDE
BusName=org.freedesktop.oom1
CapabilityBoundingSet=CAP_KILL CAP_DAC_OVERRIDE
ExecStart={{ROOTLIBEXECDIR}}/systemd-oomd
ExecStart={{LIBEXECDIR}}/systemd-oomd
IPAddressDeny=any
LockPersonality=yes
MemoryDenyWriteExecute=yes

View File

@ -21,4 +21,4 @@ ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-4
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful --file-system=/
ExecStart={{LIBEXECDIR}}/systemd-pcrphase --graceful --file-system=/

View File

@ -22,4 +22,4 @@ ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-4
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful --file-system=%f
ExecStart={{LIBEXECDIR}}/systemd-pcrphase --graceful --file-system=%f

View File

@ -20,4 +20,4 @@ ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-4
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful --machine-id
ExecStart={{LIBEXECDIR}}/systemd-pcrphase --graceful --machine-id

View File

@ -20,5 +20,5 @@ ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-4
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful enter-initrd
ExecStop={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful leave-initrd
ExecStart={{LIBEXECDIR}}/systemd-pcrphase --graceful enter-initrd
ExecStop={{LIBEXECDIR}}/systemd-pcrphase --graceful leave-initrd

Some files were not shown because too many files have changed in this diff Show More