--- modules.d/50gensplash/README | 42 ++++++++++++++++ modules.d/50gensplash/check | 5 ++ modules.d/50gensplash/gensplash-emergency.sh | 5 ++ modules.d/50gensplash/gensplash-newroot.sh | 5 ++ modules.d/50gensplash/gensplash-pretrigger.sh | 14 ++++++ modules.d/50gensplash/install | 63 +++++++++++++++++++++++++ 6 files changed, 134 insertions(+), 0 deletions(-) create mode 100644 modules.d/50gensplash/README create mode 100755 modules.d/50gensplash/check create mode 100755 modules.d/50gensplash/gensplash-emergency.sh create mode 100755 modules.d/50gensplash/gensplash-newroot.sh create mode 100755 modules.d/50gensplash/gensplash-pretrigger.sh create mode 100755 modules.d/50gensplash/install
diff --git a/modules.d/50gensplash/README b/modules.d/50gensplash/README new file mode 100644 index 0000000..fa02cd1 --- /dev/null +++ b/modules.d/50gensplash/README @@ -0,0 +1,42 @@ +Dracut gensplash module +----------------------- + +INDEX + +0. Introduction +1. Hostonly vs Generic +2. Configuration and kernel parameters + +~ + +0. Introduction + +gensplash is based on Genkernel code and that's why it's Gentoo-specific. It +requires splashutils to work. To set up theme you may edit /etc/conf.d/splash +or set DRACUT_GENSPLASH_THEME and DRACUT_GENSPLASH_RES variables. Your theme +has to exist in /etc/splash and for every given resolution has to exist config +in theme's directory, e.g. there's 1024x768.cfg in /etc/splash/natural_gentoo. +List of resolutions is comma-separated. + +NOTE: The module will be rewritten to be distro-neutral. Its name will change +to fbsplash. + + +1. Hostonly vs Generic + +All available themes are installed only if no --hostonly is specified and no +DRACUT_GENSPLASH_THEME and DRACUT_GENSPLASH_RES are set. Otherwise those vars +are checked and if not set then config /etc/conf.d/splash is read. + + +2. Configuration and kernel parameters + +Example set up by environment variables: + DRACUT_GENSPLASH_THEME=natural_gentoo + DRACUT_GENSPLASH_RES=1024x768,1024x600 + +Example kernel arguments: + splash=silent,theme:natural_gentoo console=tty1 quiet + +You may easily set up the module using Genkernel with arguments: + --gensplash=<theme>:<res1>,<res2>,... diff --git a/modules.d/50gensplash/check b/modules.d/50gensplash/check new file mode 100755 index 0000000..90b8874 --- /dev/null +++ b/modules.d/50gensplash/check @@ -0,0 +1,5 @@ +#!/bin/bash + +# TODO: splash_geninitramfs +# TODO: /usr/share/splashutils/initrd.splash +exit 255 diff --git a/modules.d/50gensplash/gensplash-emergency.sh b/modules.d/50gensplash/gensplash-emergency.sh new file mode 100755 index 0000000..01e639b --- /dev/null +++ b/modules.d/50gensplash/gensplash-emergency.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +CDROOT=0 +. /lib/gensplash-lib.sh +splash verbose diff --git a/modules.d/50gensplash/gensplash-newroot.sh b/modules.d/50gensplash/gensplash-newroot.sh new file mode 100755 index 0000000..ed2d421 --- /dev/null +++ b/modules.d/50gensplash/gensplash-newroot.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +CDROOT=0 +. /lib/gensplash-lib.sh +splash set_msg 'Switching to new root' diff --git a/modules.d/50gensplash/gensplash-pretrigger.sh b/modules.d/50gensplash/gensplash-pretrigger.sh new file mode 100755 index 0000000..f1b0d31 --- /dev/null +++ b/modules.d/50gensplash/gensplash-pretrigger.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +if ! getarg rd_NO_SPLASH; then + [ -c /dev/null ] || mknod /dev/null c 1 3 + [ -c /dev/console ] || mknod /dev/console c 5 1 + [ -c /dev/tty0 ] || mknod /dev/tty0 c 4 0 + + info "Starting Gentoo Splash" + + /lib/udev/console_init tty0 + CDROOT=0 + . /lib/gensplash-lib.sh + splash init +fi diff --git a/modules.d/50gensplash/install b/modules.d/50gensplash/install new file mode 100755 index 0000000..1ad2c95 --- /dev/null +++ b/modules.d/50gensplash/install @@ -0,0 +1,63 @@ +#!/bin/bash + +call_splash_geninitramfs() { + local out ret + + out=$(splash_geninitramfs -c "$1" ${@:2} 2>&1) + ret=$? + + if [[ ${out} ]]; then + local IFS=' +' + for line in ${out}; do + if [[ ${line} =~ ^Warning ]]; then + dwarning "${line}" + else + derror "${line}" + (( ret == 0 )) && ret=1 + fi + done + fi + + return ${ret} +} + + +type -P splash_geninitramfs >/dev/null || exit 1 + +opts='' + +if [[ ${DRACUT_GENSPLASH_THEME} ]]; then + # Variables from the environment + # They're supposed to be set up by e.g. Genkernel in basis of cmdline args. + # If user set them he/she would expect to be included only given theme + # rather then all even if we're building generic initramfs. + SPLASH_THEME=${DRACUT_GENSPLASH_THEME} + SPLASH_RES=${DRACUT_GENSPLASH_RES} +elif [[ ${hostonly} ]]; then + # Settings from config only in hostonly + [[ -e /etc/conf.d/splash ]] && source /etc/conf.d/splash + [[ ! ${SPLASH_THEME} ]] && SPLASH_THEME=default + [[ ${SPLASH_RES} ]] && opts+=" -r ${SPLASH_RES}" +else + # generic + SPLASH_THEME=--all +fi + +dinfo "Installing Gentoo Splash (using the ${SPLASH_THEME} theme)" + +pushd "${initdir}" >/dev/null +mv dev dev.old +call_splash_geninitramfs "${initdir}" ${opts} ${SPLASH_THEME} || { + derror "Could not build splash" + exit 1 +} +rm -rf dev +mv dev.old dev +popd >/dev/null + +dracut_install chvt +inst /usr/share/splashutils/initrd.splash /lib/gensplash-lib.sh +inst_hook pre-pivot 90 "${moddir}"/gensplash-newroot.sh +inst_hook pre-trigger 10 "${moddir}"/gensplash-pretrigger.sh +inst_hook emergency 50 "${moddir}"/gensplash-emergency.sh -- 1.7.2
signature.asc
Description: PGP signature