summaryrefslogtreecommitdiffstats
path: root/modules.d/50plymouth
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
commit9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a (patch)
tree2efb72864cc69e174c9c5ee33efb88a5f1553b48 /modules.d/50plymouth
parentInitial commit. (diff)
downloaddracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.tar.xz
dracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.zip
Adding upstream version 060+5.upstream/060+5
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rwxr-xr-xmodules.d/50plymouth/module-setup.sh53
-rwxr-xr-xmodules.d/50plymouth/plymouth-emergency.sh3
-rwxr-xr-xmodules.d/50plymouth/plymouth-newroot.sh5
-rwxr-xr-xmodules.d/50plymouth/plymouth-populate-initrd.sh45
-rwxr-xr-xmodules.d/50plymouth/plymouth-pretrigger.sh27
5 files changed, 133 insertions, 0 deletions
diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh
new file mode 100755
index 0000000..cc6629b
--- /dev/null
+++ b/modules.d/50plymouth/module-setup.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+pkglib_dir() {
+ local _dirs="/usr/lib/plymouth /usr/libexec/plymouth/"
+ if find_binary dpkg-architecture &> /dev/null; then
+ local _arch
+ _arch=$(dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null)
+ [ -n "$_arch" ] && _dirs+=" /usr/lib/$_arch/plymouth"
+ fi
+ for _dir in $_dirs; do
+ if [ -x "$dracutsysrootdir""$_dir"/plymouth-populate-initrd ]; then
+ echo "$_dir"
+ return
+ fi
+ done
+}
+
+# called by dracut
+check() {
+ [[ "$mount_needs" ]] && return 1
+ [[ $(pkglib_dir) ]] || return 1
+
+ require_binaries plymouthd plymouth plymouth-set-default-theme
+}
+
+# called by dracut
+depends() {
+ echo drm
+}
+
+# called by dracut
+install() {
+ PKGLIBDIR=$(pkglib_dir)
+ if grep -q nash "$dracutsysrootdir""${PKGLIBDIR}"/plymouth-populate-initrd \
+ || [ ! -x "$dracutsysrootdir""${PKGLIBDIR}"/plymouth-populate-initrd ]; then
+ # shellcheck disable=SC1090
+ . "$moddir"/plymouth-populate-initrd.sh
+ else
+ PLYMOUTH_POPULATE_SOURCE_FUNCTIONS="$dracutfunctions" \
+ "$dracutsysrootdir""${PKGLIBDIR}"/plymouth-populate-initrd -t "$initdir"
+ fi
+
+ inst_hook emergency 50 "$moddir"/plymouth-emergency.sh
+
+ inst_multiple readlink
+
+ inst_multiple plymouthd plymouth plymouth-set-default-theme
+
+ if ! dracut_module_included "systemd"; then
+ inst_hook pre-trigger 10 "$moddir"/plymouth-pretrigger.sh
+ inst_hook pre-pivot 90 "$moddir"/plymouth-newroot.sh
+ fi
+}
diff --git a/modules.d/50plymouth/plymouth-emergency.sh b/modules.d/50plymouth/plymouth-emergency.sh
new file mode 100755
index 0000000..cf220b2
--- /dev/null
+++ b/modules.d/50plymouth/plymouth-emergency.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+plymouth --hide-splash 2> /dev/null || :
diff --git a/modules.d/50plymouth/plymouth-newroot.sh b/modules.d/50plymouth/plymouth-newroot.sh
new file mode 100755
index 0000000..944f2dc
--- /dev/null
+++ b/modules.d/50plymouth/plymouth-newroot.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+if type plymouth > /dev/null 2>&1 && [ -z "$DRACUT_SYSTEMD" ]; then
+ plymouth --newroot="$NEWROOT"
+fi
diff --git a/modules.d/50plymouth/plymouth-populate-initrd.sh b/modules.d/50plymouth/plymouth-populate-initrd.sh
new file mode 100755
index 0000000..7e3afdd
--- /dev/null
+++ b/modules.d/50plymouth/plymouth-populate-initrd.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+PLYMOUTH_LOGO_FILE="/usr/share/pixmaps/system-logo-white.png"
+PLYMOUTH_THEME=$(plymouth-set-default-theme)
+
+inst_multiple plymouthd plymouth
+
+test -e "${PLYMOUTH_LOGO_FILE}" && inst_simple "${PLYMOUTH_LOGO_FILE}"
+
+# shellcheck disable=SC2174
+mkdir -m 0755 -p "${initdir}/usr/share/plymouth"
+
+inst_libdir_file "plymouth/text.so" "plymouth/details.so"
+
+if [[ $hostonly ]]; then
+ inst_multiple \
+ "/usr/share/plymouth/themes/details/details.plymouth" \
+ "/usr/share/plymouth/themes/text/text.plymouth"
+
+ if [[ -d $dracutsysrootdir/usr/share/plymouth/themes/${PLYMOUTH_THEME} ]]; then
+ for x in "/usr/share/plymouth/themes/${PLYMOUTH_THEME}"/*; do
+ [[ -f "$dracutsysrootdir$x" ]] || break
+ inst "$x"
+ done
+ fi
+
+ if [[ -L $dracutsysrootdir/usr/share/plymouth/themes/default.plymouth ]]; then
+ inst /usr/share/plymouth/themes/default.plymouth
+ # Install plugin for this theme
+ PLYMOUTH_PLUGIN=$(grep "^ModuleName=" "$dracutsysrootdir"/usr/share/plymouth/themes/default.plymouth | while read -r _ b _ || [ -n "$b" ]; do echo "$b"; done)
+ inst_libdir_file "plymouth/${PLYMOUTH_PLUGIN}.so"
+ fi
+else
+ for x in "$dracutsysrootdir"/usr/share/plymouth/themes/{text,details}/*; do
+ [[ -f $x ]] || continue
+ THEME_DIR=$(dirname "${x#"$dracutsysrootdir"}")
+ # shellcheck disable=SC2174
+ mkdir -m 0755 -p "${initdir}/$THEME_DIR"
+ inst_multiple "${x#"$dracutsysrootdir"}"
+ done
+ (
+ cd "${initdir}"/usr/share/plymouth/themes || exit
+ ln -s text/text.plymouth default.plymouth 2>&1
+ )
+fi
diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh
new file mode 100755
index 0000000..3d11999
--- /dev/null
+++ b/modules.d/50plymouth/plymouth-pretrigger.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+if type plymouthd > /dev/null 2>&1 && [ -z "$DRACUT_SYSTEMD" ]; then
+ if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -d -n rd_NO_PLYMOUTH; then
+ # 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 | vinfo
+
+ info "Starting plymouth daemon"
+ mkdir -m 0755 /run/plymouth
+ read -r consoledev rest < /sys/class/tty/console/active
+ consoledev=${consoledev:-tty0}
+ [ -x /lib/udev/console_init -a -e "/dev/$consoledev" ] && /lib/udev/console_init "/dev/$consoledev"
+ plymouthd --attach-to-session --pid-file /run/plymouth/pid
+ plymouth --show-splash 2>&1 | vinfo
+ # reset tty after plymouth messed with it
+ [ -x /lib/udev/console_init -a -e "/dev/$consoledev" ] && /lib/udev/console_init "/dev/$consoledev"
+ fi
+fi