summaryrefslogtreecommitdiffstats
path: root/builder/modules.d/slx-splash/scripts
diff options
context:
space:
mode:
authorJonathan Bauer2018-05-23 12:09:49 +0200
committerJonathan Bauer2018-05-23 12:09:49 +0200
commit9149d134cdd6c214ba0c253b8e9912ff8ff75045 (patch)
tree9b51aa87c804246a218444655bbfcf290eaeee25 /builder/modules.d/slx-splash/scripts
parentupdate to dracut v47 (diff)
downloadsystemd-init-9149d134cdd6c214ba0c253b8e9912ff8ff75045.tar.gz
systemd-init-9149d134cdd6c214ba0c253b8e9912ff8ff75045.tar.xz
systemd-init-9149d134cdd6c214ba0c253b8e9912ff8ff75045.zip
new slx-drm and slx-splash (PoC) modules
slx-drm pulls in dracut's drm module and provides a modprobe.d configurations file to always prioritize nvidia drivers, falling back to nouveau on failures. slx-splash uses the slx busybox's fbsplash (WIP). Busybox is still missing from defaults builds, so this won't function out of the box!
Diffstat (limited to 'builder/modules.d/slx-splash/scripts')
-rw-r--r--builder/modules.d/slx-splash/scripts/slx-splash.sh42
1 files changed, 42 insertions, 0 deletions
diff --git a/builder/modules.d/slx-splash/scripts/slx-splash.sh b/builder/modules.d/slx-splash/scripts/slx-splash.sh
new file mode 100644
index 00000000..8f3ccec3
--- /dev/null
+++ b/builder/modules.d/slx-splash/scripts/slx-splash.sh
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+
+show_splash() {
+ if [ -e "/etc/splash.ppm.gz" ]; then
+ /usr/bin/systemd-preserve-process-marker /bin/busybox fbsplash -x -b -s "/etc/splash.ppm.gz" &
+ elif [ -e "/etc/splash.ppm" ]; then
+ /usr/bin/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 -qE '\s+splash\s+' /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