#!/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