diff options
Diffstat (limited to 'modules.d/slx-splash/scripts')
-rw-r--r-- | modules.d/slx-splash/scripts/restore-cursor.sh | 11 | ||||
-rw-r--r-- | modules.d/slx-splash/scripts/slx-splash.sh | 44 |
2 files changed, 55 insertions, 0 deletions
diff --git a/modules.d/slx-splash/scripts/restore-cursor.sh b/modules.d/slx-splash/scripts/restore-cursor.sh new file mode 100644 index 00000000..4ba9880d --- /dev/null +++ b/modules.d/slx-splash/scripts/restore-cursor.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# +# The console cursor is disabled when starting the splash screen. +# This will add a drop-in to getty@.service to ensure the cursor +# is restored when starting gettys. + +mkdir -p "$NEWROOT/etc/systemd/system/getty@.service.d/" +cat <<- EOF > "$NEWROOT/etc/systemd/system/getty@.service.d/restore-cursor.conf" + [Service] + ExecStartPre=-/usr/bin/env bash -c "echo -en '\033c' > /dev/%I" +EOF diff --git a/modules.d/slx-splash/scripts/slx-splash.sh b/modules.d/slx-splash/scripts/slx-splash.sh new file mode 100644 index 00000000..7381997b --- /dev/null +++ b/modules.d/slx-splash/scripts/slx-splash.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +show_splash() { + if [ -e "/etc/splash.ppm.gz" ]; then + systemd-preserve-process-marker /bin/busybox fbsplash -x -b -s "/etc/splash.ppm.gz" & + elif [ -e "/etc/splash.ppm" ]; then + systemd-preserve-process-marker /bin/busybox fbsplash -x -b -s "/etc/splash.ppm" & + else + echo "Splash screen requested, but not found in initramfs..." + fi +} + +init_drm() { + # taken from dracut's plymouth module + # first trigger graphics subsystem + udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1 + # first trigger graphics and tty subsystem + udevadm trigger --action=add \ + --subsystem-match=graphics \ + --subsystem-match=drm \ + --subsystem-match=tty \ + --subsystem-match=acpi \ + >/dev/null 2>&1 + + udevadm settle --timeout=180 2>&1 +} + +if grep -wqE 'splash' /proc/cmdline; then + # first init graphics + init_drm + # disable non-critical kernel messages + echo "1 1 0 1" > /proc/sys/kernel/printk + # disable systemd's status message on console + # See: https://www.freedesktop.org/software/systemd/man/systemd.html#Signals + kill -55 1 + # clear console + busybox clear + # disable cursor + echo -e "\033[?25l" > /dev/console + # finally: + show_splash +fi + +true |