summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2020-08-03 18:04:59 +0200
committerYour Name2020-08-03 18:04:59 +0200
commita069ecafe76710cdc758f5c79a7c000bfe3a7e76 (patch)
treebc8de78515c7b5d0c24ffc3e7e216e5d846082bb
parent[rfs-stage31] Fix hostname lookup for newer busybox nslookup (diff)
downloadmltk-a069ecafe76710cdc758f5c79a7c000bfe3a7e76.tar.gz
mltk-a069ecafe76710cdc758f5c79a7c000bfe3a7e76.tar.xz
mltk-a069ecafe76710cdc758f5c79a7c000bfe3a7e76.zip
[systemd-distro] Get this module into working state, switch
-rw-r--r--core/modules/dbus/module.build37
-rw-r--r--core/modules/dbus/module.conf4
-rw-r--r--core/modules/dbus/templates/dbus.service12
-rw-r--r--core/modules/dbus/templates/dbus.socket5
-rw-r--r--core/modules/kernel-vanilla/module.conf2
-rw-r--r--core/modules/lightdm/data/etc/systemd/system/lightdm.service1
-rw-r--r--core/modules/polkit/module.build6
-rw-r--r--core/modules/polkit/module.conf3
-rw-r--r--core/modules/polkit/templates/dbus.service6
-rw-r--r--core/modules/polkit/templates/systemd.service8
-rw-r--r--core/modules/sssd/module.build7
-rw-r--r--core/modules/sssd/module.conf10
-rw-r--r--core/modules/sssd/templates/sssd-systemd.service16
-rw-r--r--core/modules/systemd-distro/data/etc/systemd/system/debug-shell.service33
l---------core/modules/systemd-distro/data/etc/systemd/system/getty.target.wants/getty@tty1.service1
-rw-r--r--core/modules/systemd-distro/data/etc/systemd/system/getty@.service50
-rw-r--r--core/modules/systemd-distro/data/etc/systemd/system/network-interface@.service9
-rw-r--r--core/modules/systemd-distro/data/etc/udev/rules.d/99-openslx-net.rules1
-rwxr-xr-xcore/modules/systemd-distro/data/opt/openslx/scripts/tty-init23
-rw-r--r--core/modules/systemd-distro/module.build5
-rw-r--r--core/modules/systemd-distro/module.conf.centos2
-rw-r--r--core/modules/systemd-distro/module.conf.ubuntu6
-rw-r--r--core/modules/vbox-src/module.conf2
-rwxr-xr-xcore/rootfs/rootfs-stage31/data/init12
-rw-r--r--core/rootfs/rootfs-stage32/data/etc/systemd/system.conf.d/10-openslx-path.conf2
l---------core/targets/stage32-bwlp/systemd2
26 files changed, 147 insertions, 118 deletions
diff --git a/core/modules/dbus/module.build b/core/modules/dbus/module.build
index 3d18d90c..a001a2b8 100644
--- a/core/modules/dbus/module.build
+++ b/core/modules/dbus/module.build
@@ -25,43 +25,6 @@ build() {
[Service]
ExecStartPre=/${UUIDGEN#$MODULE_BUILD_DIR} --ensure
EOF
-
- # First check if there is a system dbus file and copy it if so
- declare -A found
- for unit_type in service socket; do
- for candidate in {,/usr}"/lib/systemd/system/dbus.${unit_type}"; do
- if [ -e "$candidate" ]; then
- cp -a "$candidate" "${MODULE_BUILD_DIR}/etc/systemd/system" \
- || perror "Failed to copy '$found' to '$MODULE_BUILD_DIR'."
- found["$unit_type"]=oui
- fi
- done
- done
-
- # If not found, generate service file from the template
- if [ -z "${found["service"]}" ]; then
- # This is ugly, as the command line arguments changed over time. Try to do the right thing (whatever that is)
- # Find path for: dbus-daemon
- local DAEMON=$(find "$MODULE_BUILD_DIR" -name dbus-daemon -executable | head -n 1)
- [ -z "$DAEMON" ] && perror "Could not determine dbus-daemon location"
- DAEMON="/${DAEMON#$MODULE_BUILD_DIR}"
-
- # Find path for: dbus-send
- local SEND=$(find "$MODULE_BUILD_DIR" -name dbus-send -executable | head -n 1)
- [ -z "$SEND" ] && perror "Could not determine dbus-send location"
- SEND="/${SEND#$MODULE_BUILD_DIR}"
-
- # Fill in the template
- sed "s,%DAEMON%,$DAEMON,g;s,%SEND%,$SEND,g" "${MODULE_DIR}/templates/dbus.service" \
- > "$MODULE_BUILD_DIR/etc/systemd/system/dbus.service" \
- || perror "Could not generate $MODULE_BUILD_DIR/etc/systemd/system/dbus.service"
- fi
-
- # Same for socket file
- if [ -z "${found["socket"]}" ]; then
- cp "${MODULE_DIR}/templates/dbus.socket" "$MODULE_BUILD_DIR/etc/systemd/system" \
- || perror "Could not copy templates/dbus.socket to build dir."
- fi
}
post_copy() {
diff --git a/core/modules/dbus/module.conf b/core/modules/dbus/module.conf
index de93374b..0ea5288f 100644
--- a/core/modules/dbus/module.conf
+++ b/core/modules/dbus/module.conf
@@ -12,7 +12,7 @@ REQUIRED_DIRECTORIES="
/etc/dbus-1
"
REQUIRED_FILES="
- /etc/systemd/system/dbus.service
- /etc/systemd/system/dbus.socket
+ /lib/systemd/system/dbus.service
+ /lib/systemd/system/dbus.socket
"
diff --git a/core/modules/dbus/templates/dbus.service b/core/modules/dbus/templates/dbus.service
deleted file mode 100644
index ef9ee71d..00000000
--- a/core/modules/dbus/templates/dbus.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=D-Bus System Message Bus
-Wants=dbus.socket
-Requires=dbus.socket
-After=syslog.target
-
-[Service]
-ExecStartPre=-/opt/openslx/bin/rm -f /var/run/dbus/pid
-ExecStart=%DAEMON% --system --address=systemd: --nofork
-ExecReload=%SEND% --print-reply --system --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig
-OOMScoreAdjust=-900
-
diff --git a/core/modules/dbus/templates/dbus.socket b/core/modules/dbus/templates/dbus.socket
deleted file mode 100644
index 5c373cf4..00000000
--- a/core/modules/dbus/templates/dbus.socket
+++ /dev/null
@@ -1,5 +0,0 @@
-[Unit]
-Description=D-Bus System Message Bus Socket
-
-[Socket]
-ListenStream=/run/dbus/system_bus_socket
diff --git a/core/modules/kernel-vanilla/module.conf b/core/modules/kernel-vanilla/module.conf
index 1ac0fb63..2bae7757 100644
--- a/core/modules/kernel-vanilla/module.conf
+++ b/core/modules/kernel-vanilla/module.conf
@@ -2,5 +2,5 @@
REQUIRED_BINARIES=""
REQUIRED_LIBRARIES=""
REQUIRED_DIRECTORIES=""
-REQUIRED_KERNEL="4.19.132"
+REQUIRED_KERNEL="5.4.54"
REQUIRED_GIT="git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git"
diff --git a/core/modules/lightdm/data/etc/systemd/system/lightdm.service b/core/modules/lightdm/data/etc/systemd/system/lightdm.service
index 47634106..baa93f2f 100644
--- a/core/modules/lightdm/data/etc/systemd/system/lightdm.service
+++ b/core/modules/lightdm/data/etc/systemd/system/lightdm.service
@@ -1,7 +1,6 @@
[Unit]
Description=LightDM Display Manager
Conflicts=getty@tty7.service
-Requires=dev-tty7.device
After=dev-tty7.device systemd-user-sessions.service load-gfx-driver.service setup-slx-addon@vmware.service setup-slx-addon@virtualbox.service
[Service]
diff --git a/core/modules/polkit/module.build b/core/modules/polkit/module.build
index 634d9c87..b956f23c 100644
--- a/core/modules/polkit/module.build
+++ b/core/modules/polkit/module.build
@@ -11,11 +11,7 @@ build () {
list_packet_files > "$COPYLIST"
[ -n "$REQUIRED_DIR_STRUCT" ] && find $REQUIRED_DIR_STRUCT -type d >> "$COPYLIST"
tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
- local POLPATH=$(find "$MODULE_BUILD_DIR" -name polkitd -executable | head -n 1)
- POLPATH="/${POLPATH#$MODULE_BUILD_DIR}"
- mkdir -p "$MODULE_BUILD_DIR/etc/systemd/system" "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services" "$MODULE_BUILD_DIR/var/lib/polkit"
- sed "s,%POLKITD%,${POLPATH},g" "${MODULE_DIR}/templates/systemd.service" > "$MODULE_BUILD_DIR/etc/systemd/system/polkit.service" || perror "Could not generate polkit.service for systemd"
- sed "s,%POLKITD%,${POLPATH},g" "${MODULE_DIR}/templates/dbus.service" > "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services/org.freedesktop.PolicyKit1.service" || perror "Could not generate polkit.service for dbus"
+ mkdir -p "$MODULE_BUILD_DIR/var/lib/polkit"
}
post_copy() {
diff --git a/core/modules/polkit/module.conf b/core/modules/polkit/module.conf
index b86e1a5c..7a4293cd 100644
--- a/core/modules/polkit/module.conf
+++ b/core/modules/polkit/module.conf
@@ -7,7 +7,6 @@ REQUIRED_DIRECTORIES="
"
REQUIRED_FILES="
/usr/share/dbus-1/system-services/org.freedesktop.PolicyKit1.service
- /etc/systemd/system/polkit.service
+ /lib/systemd/system/polkit.service
"
-#REQUIRED_LIBRARIES="libmozjs185"
diff --git a/core/modules/polkit/templates/dbus.service b/core/modules/polkit/templates/dbus.service
deleted file mode 100644
index c9ee6c8b..00000000
--- a/core/modules/polkit/templates/dbus.service
+++ /dev/null
@@ -1,6 +0,0 @@
-[D-BUS Service]
-Name=org.freedesktop.PolicyKit1
-Exec=%POLKITD% --no-debug
-User=root
-SystemdService=polkit.service
-
diff --git a/core/modules/polkit/templates/systemd.service b/core/modules/polkit/templates/systemd.service
deleted file mode 100644
index 747fd7eb..00000000
--- a/core/modules/polkit/templates/systemd.service
+++ /dev/null
@@ -1,8 +0,0 @@
-[Unit]
-Description=the cancer that is called PolKit
-
-[Service]
-Type=dbus
-BusName=org.freedesktop.PolicyKit1
-ExecStart=%POLKITD% --no-debug
-
diff --git a/core/modules/sssd/module.build b/core/modules/sssd/module.build
index daa5a9c0..3f124d9c 100644
--- a/core/modules/sssd/module.build
+++ b/core/modules/sssd/module.build
@@ -9,13 +9,6 @@ build() {
list_packet_files >> "$COPYLIST"
tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
-
- local SSSD_PATH="$(which sssd)"
- [ -z "$SSSD_PATH" ] && perror "'sssd' not found on this system. Should have been installed! Something is wrong..."
-
- # Build nslcd service file
- mkdir -p "${MODULE_BUILD_DIR}/etc/systemd/system"
- sed "s,%PATH%,${SSSD_PATH},g" "${MODULE_DIR}/templates/sssd-systemd.service" > "${MODULE_BUILD_DIR}/etc/systemd/system/sssd.service" || perror "Could not fill sssd.service template"
}
post_copy() {
diff --git a/core/modules/sssd/module.conf b/core/modules/sssd/module.conf
index 461b3db9..93f1cee9 100644
--- a/core/modules/sssd/module.conf
+++ b/core/modules/sssd/module.conf
@@ -4,16 +4,8 @@ REQUIRED_BINARIES="
"
REQUIRED_FILES="
/etc/default/sssd
- /etc/systemd/system/sssd.service
"
-# lib/ is needed to fetch lib/x86..../security/pam_sss.so module
-# could do it using the SYS_PAM_MODULE_PATH, but using that in the
-# module.conf seems hacky...
-#
-# usr/lib is needed to get the ldb modules, e.g.:
-# usr/lib/x86_64-linux-gnu/ldb/modules/ldb/ldap.so
-#
REQUIRED_DIRECTORIES="
/lib
- /usr/lib
+ /usr
"
diff --git a/core/modules/sssd/templates/sssd-systemd.service b/core/modules/sssd/templates/sssd-systemd.service
deleted file mode 100644
index c691759a..00000000
--- a/core/modules/sssd/templates/sssd-systemd.service
+++ /dev/null
@@ -1,16 +0,0 @@
-[Unit]
-Description=System Security Services Daemon
-# SSSD will not be started until syslog is
-After=syslog.target
-
-[Service]
-EnvironmentFile=-/etc/sysconfig/sssd
-ExecStartPre=/opt/openslx/scripts/systemd-patch_sssd_conf
-ExecStart=%PATH% -i -f
-# These two should be used with traditional UNIX forking daemons
-# consult systemd.service(5) for more details
-PIDFile=/var/run/sssd.pid
-Restart=on-failure
-
-[Install]
-WantedBy=multi-user.target
diff --git a/core/modules/systemd-distro/data/etc/systemd/system/debug-shell.service b/core/modules/systemd-distro/data/etc/systemd/system/debug-shell.service
new file mode 100644
index 00000000..4220d7c2
--- /dev/null
+++ b/core/modules/systemd-distro/data/etc/systemd/system/debug-shell.service
@@ -0,0 +1,33 @@
+# 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=Early root shell on /dev/tty9 FOR DEBUGGING ONLY
+Documentation=man:sushell(8)
+DefaultDependencies=no
+IgnoreOnIsolate=yes
+
+[Service]
+Environment=TERM=linux
+ExecStart=/bin/ash
+Restart=always
+RestartSec=0
+StandardInput=tty
+TTYPath=/dev/tty9
+TTYReset=yes
+TTYVHangup=yes
+KillMode=process
+IgnoreSIGPIPE=no
+# bash ignores SIGTERM
+KillSignal=SIGHUP
+
+# Unset locale for the console getty since the console has problems
+# displaying some internationalized messages.
+Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=
+
+[Install]
+WantedBy=sysinit.target
diff --git a/core/modules/systemd-distro/data/etc/systemd/system/getty.target.wants/getty@tty1.service b/core/modules/systemd-distro/data/etc/systemd/system/getty.target.wants/getty@tty1.service
new file mode 120000
index 00000000..e231dae8
--- /dev/null
+++ b/core/modules/systemd-distro/data/etc/systemd/system/getty.target.wants/getty@tty1.service
@@ -0,0 +1 @@
+../getty@tty1.service \ No newline at end of file
diff --git a/core/modules/systemd-distro/data/etc/systemd/system/getty@.service b/core/modules/systemd-distro/data/etc/systemd/system/getty@.service
new file mode 100644
index 00000000..5c1d1666
--- /dev/null
+++ b/core/modules/systemd-distro/data/etc/systemd/system/getty@.service
@@ -0,0 +1,50 @@
+# This file is part of systemd.
+# Patched for OpenSLX
+#
+# 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=Getty on %I
+Documentation=man:agetty(8) man:systemd-getty-generator(8)
+Documentation=http://0pointer.de/blog/projects/serial-console.html
+After=systemd-user-sessions.service
+After=rc-local.service
+
+# If additional gettys are spawned during boot then we should make
+# sure that this is synchronized before getty.target, even though
+# getty.target didn't actually pull it in.
+Before=getty.target
+IgnoreOnIsolate=yes
+
+# On systems without virtual consoles, don't start any getty. (Note
+# that serial gettys are covered by serial-getty@.service, not this
+# unit
+ConditionPathExists=/dev/tty0
+
+[Service]
+ExecStartPre=-/opt/openslx/bin/killall fbsplash
+ExecStartPre=-/opt/openslx/scripts/tty-init %I
+# the VT is cleared by TTYVTDisallocate
+ExecStart=-/sbin/agetty %I 38400 linux
+Type=idle
+Restart=always
+RestartSec=0
+UtmpIdentifier=%I
+TTYPath=/dev/%I
+TTYReset=yes
+TTYVHangup=yes
+TTYVTDisallocate=no
+KillMode=process
+IgnoreSIGPIPE=no
+
+# Unset locale for the console getty since the console has problems
+# displaying some internationalized messages.
+Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=
+
+# Some login implementations ignore SIGTERM, so we send SIGHUP
+# instead, to ensure that login terminates cleanly.
+KillSignal=SIGHUP
+
diff --git a/core/modules/systemd-distro/data/etc/systemd/system/network-interface@.service b/core/modules/systemd-distro/data/etc/systemd/system/network-interface@.service
new file mode 100644
index 00000000..c566eda1
--- /dev/null
+++ b/core/modules/systemd-distro/data/etc/systemd/system/network-interface@.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Brings interface %i up
+Wants=dhcpc@%i.service
+Before=dhcpc@%i.service
+
+[Service]
+Type=oneshot
+ExecStart=/opt/openslx/sbin/ip link set dev %i up
+
diff --git a/core/modules/systemd-distro/data/etc/udev/rules.d/99-openslx-net.rules b/core/modules/systemd-distro/data/etc/udev/rules.d/99-openslx-net.rules
new file mode 100644
index 00000000..07a4fbd5
--- /dev/null
+++ b/core/modules/systemd-distro/data/etc/udev/rules.d/99-openslx-net.rules
@@ -0,0 +1 @@
+ACTION=="add", TAG!="openslxignore", SUBSYSTEM=="net", KERNEL=="br0|eth*", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/sys/subsystem/net/devices/$name", ENV{SYSTEMD_WANTS}="network-interface@$name.service"
diff --git a/core/modules/systemd-distro/data/opt/openslx/scripts/tty-init b/core/modules/systemd-distro/data/opt/openslx/scripts/tty-init
new file mode 100755
index 00000000..a157854d
--- /dev/null
+++ b/core/modules/systemd-distro/data/opt/openslx/scripts/tty-init
@@ -0,0 +1,23 @@
+#!/bin/ash
+
+[ -c "/dev/$1" ] || exit 0
+
+exec > "/dev/$1"
+echo -en "\e]P0232323" #black
+echo -en "\e]P82B2B2B" #darkgrey
+echo -en "\e]P1D75F5F" #darkred
+echo -en "\e]P9E33636" #red
+echo -en "\e]P287AF5F" #darkgreen
+echo -en "\e]PA98E34D" #green
+echo -en "\e]P3D7AF87" #brown
+echo -en "\e]PBFFD75F" #yellow
+echo -en "\e]P48787AF" #darkblue
+echo -en "\e]PC7373C9" #blue
+echo -en "\e]P5BD53A5" #darkmagenta
+echo -en "\e]PDD633B2" #magenta
+echo -en "\e]P65FAFAF" #darkcyan
+echo -en "\e]PE44C9C9" #cyan
+echo -en "\e]P7E5E5E5" #lightgrey
+echo -en "\e]PFFFFFFF" #white
+echo -en '\033c' #clear
+
diff --git a/core/modules/systemd-distro/module.build b/core/modules/systemd-distro/module.build
index 0745ad3c..5c2dd958 100644
--- a/core/modules/systemd-distro/module.build
+++ b/core/modules/systemd-distro/module.build
@@ -15,6 +15,9 @@ build () {
}
post_copy() {
- :
+ [ -d "${TARGET_BUILD_DIR}/usr/lib/systemd/system" ] \
+ && ! [ -L "${TARGET_BUILD_DIR}/usr/lib/systemd/system" ] \
+ && perror "/usr/lib/systemd/system must not exist in target build dir"
+ ln -nfs "../../../lib/systemd/system" "${TARGET_BUILD_DIR}/usr/lib/systemd/system"
}
diff --git a/core/modules/systemd-distro/module.conf.centos b/core/modules/systemd-distro/module.conf.centos
index fad96b29..68fc6209 100644
--- a/core/modules/systemd-distro/module.conf.centos
+++ b/core/modules/systemd-distro/module.conf.centos
@@ -4,5 +4,5 @@ REQUIRED_CONTENT_PACKAGES="
systemd-libs
"
REQUIRED_SYSTEM_FILES+="
- /usr/lib/systemd/system
+ /lib/systemd/system
"
diff --git a/core/modules/systemd-distro/module.conf.ubuntu b/core/modules/systemd-distro/module.conf.ubuntu
index 04752c0b..2dbd4e5f 100644
--- a/core/modules/systemd-distro/module.conf.ubuntu
+++ b/core/modules/systemd-distro/module.conf.ubuntu
@@ -11,3 +11,9 @@ REQUIRED_INSTALLED_PACKAGES="
libacl1-dev
libpam-dev
"
+
+REQUIRED_CONTENT_PACKAGES="
+ systemd
+ libpam-systemd
+ udev
+"
diff --git a/core/modules/vbox-src/module.conf b/core/modules/vbox-src/module.conf
index 586c6f88..611ff357 100644
--- a/core/modules/vbox-src/module.conf
+++ b/core/modules/vbox-src/module.conf
@@ -1,5 +1,5 @@
REQUIRED_MODULES="kernel"
-REQUIRED_VBOX_VERSION="6.1.10"
+REQUIRED_VBOX_VERSION="6.1.12"
REQUIRED_DIRECTORIES="
/lib/modules
/usr/lib/virtualbox
diff --git a/core/rootfs/rootfs-stage31/data/init b/core/rootfs/rootfs-stage31/data/init
index 3f39c66e..00a88667 100755
--- a/core/rootfs/rootfs-stage31/data/init
+++ b/core/rootfs/rootfs-stage31/data/init
@@ -189,7 +189,10 @@ if [ ! -z "$SLX_DEMO_PASS" ]; then
fi
# Activate debug shell after switchroot?
-[ -n "$DEBUG_SHELL" ] && ln -s "../debug-shell.service" "${FUTURE_ROOT}/usr/lib/systemd/system/sysinit.target.wants/debug-shell.service"
+if [ -n "$DEBUG_SHELL" ]; then
+ mkdir -p "${FUTURE_ROOT}/etc/systemd/system/sysinit.target.wants"
+ ln -s "../debug-shell.service" "${FUTURE_ROOT}/etc/systemd/system/sysinit.target.wants/debug-shell.service"
+fi
# Exam mode
if [ -n "$SLX_EXAM" ]; then
@@ -233,8 +236,11 @@ echo "$bench_result" > "${FUTURE_ROOT}/opt/openslx/.benchmark"
unset BOOT_IMAGE initrd KCL ip slxbase slxsrv IPINFO vga ip MAC BOOTIF DEBUG OLDPWD MUTED_OUTPUT GFX
unset ip router dns hostname domain search if ntpsrv
export HOME=/
-export init="/usr/lib/systemd/systemd"
export recovery=
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/openslx/sbin:/opt/openslx/bin"
-exec /sbin/switch_root -c /dev/console /mnt /usr/lib/systemd/systemd $SD_CMDLINE
+for init in "/lib/systemd/systemd" "/usr/lib/systemd/systemd"; do
+ [ -x "${FUTURE_ROOT}/${init}" ] || continue
+ export init
+ exec /sbin/switch_root -c /dev/console /mnt "$init" $SD_CMDLINE
+done
diff --git a/core/rootfs/rootfs-stage32/data/etc/systemd/system.conf.d/10-openslx-path.conf b/core/rootfs/rootfs-stage32/data/etc/systemd/system.conf.d/10-openslx-path.conf
new file mode 100644
index 00000000..238b834c
--- /dev/null
+++ b/core/rootfs/rootfs-stage32/data/etc/systemd/system.conf.d/10-openslx-path.conf
@@ -0,0 +1,2 @@
+[Manager]
+DefaultEnvironment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/openslx/sbin:/opt/openslx/bin"
diff --git a/core/targets/stage32-bwlp/systemd b/core/targets/stage32-bwlp/systemd
index 2dc58bd3..1bd6e273 120000
--- a/core/targets/stage32-bwlp/systemd
+++ b/core/targets/stage32-bwlp/systemd
@@ -1 +1 @@
-../../modules/systemd \ No newline at end of file
+../../modules/systemd-distro \ No newline at end of file