summaryrefslogtreecommitdiffstats
path: root/modules.d/slx-splash/scripts/slx-splash.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules.d/slx-splash/scripts/slx-splash.sh')
-rw-r--r--modules.d/slx-splash/scripts/slx-splash.sh44
1 files changed, 44 insertions, 0 deletions
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