diff options
author | Simon Rettberg | 2020-08-03 18:04:59 +0200 |
---|---|---|
committer | Your Name | 2020-08-03 18:04:59 +0200 |
commit | a069ecafe76710cdc758f5c79a7c000bfe3a7e76 (patch) | |
tree | bc8de78515c7b5d0c24ffc3e7e216e5d846082bb | |
parent | [rfs-stage31] Fix hostname lookup for newer busybox nslookup (diff) | |
download | mltk-a069ecafe76710cdc758f5c79a7c000bfe3a7e76.tar.gz mltk-a069ecafe76710cdc758f5c79a7c000bfe3a7e76.tar.xz mltk-a069ecafe76710cdc758f5c79a7c000bfe3a7e76.zip |
[systemd-distro] Get this module into working state, switch
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 |