From e4742ab0b55116f0bb9e92267a8f5b3a59e9d059 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Mon, 26 Aug 2013 20:43:01 +0200 Subject: [PATCH] initrd.scripts: move more functions to initrd.d/ --- defaults/initrd.d/00-common.sh | 42 ++++++++++++++++ defaults/initrd.d/00-devmgr.sh | 44 +++++++++++++++++ defaults/initrd.d/00-splash.sh | 45 +++++++++-------- defaults/initrd.scripts | 89 ++-------------------------------- 4 files changed, 113 insertions(+), 107 deletions(-) create mode 100755 defaults/initrd.d/00-common.sh create mode 100755 defaults/initrd.d/00-devmgr.sh diff --git a/defaults/initrd.d/00-common.sh b/defaults/initrd.d/00-common.sh new file mode 100755 index 0000000..bb50fd1 --- /dev/null +++ b/defaults/initrd.d/00-common.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +is_livecd() { + [ "${CDROOT}" = "1" ] && return 0 + return 1 +} + +is_nfs() { + [ "${REAL_ROOT}" = "/dev/nfs" ] && return 0 + return 1 +} + +is_aufs() { + [ "${USE_AUFS}" = "1" ] && return 0 + return 1 +} + +good_msg() { + [ -n "${QUIET}" ] && [ -z "${DEBUG}" ] && return 0 + + msg_string=$1 + msg_string="${msg_string:-...}" + [ "$2" != 1 ] && \ + echo -e "${GOOD}>>${NORMAL}${BOLD} ${msg_string} ${NORMAL}" +} + +warn_msg() { + msg_string=$1 + msg_string="${msg_string:-...}" + [ "$2" != 1 ] && \ + echo -e "${WARN}**${NORMAL}${BOLD} ${msg_string} ${NORMAL}" +} + +bad_msg() { + msg_string=$1 + msg_string="${msg_string:-...}" + if [ "$2" != 1 ]; then + # TODO(lxnay): fix circular dep with 00-splash.sh + splashcmd verbose + echo -e "${BAD}!!${NORMAL}${BOLD} ${msg_string} ${NORMAL}" + fi +} \ No newline at end of file diff --git a/defaults/initrd.d/00-devmgr.sh b/defaults/initrd.d/00-devmgr.sh new file mode 100755 index 0000000..355fe9c --- /dev/null +++ b/defaults/initrd.d/00-devmgr.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +. /etc/initrd.d/00-common.sh + +is_udev() { + [ -x "${UDEVD}" ] && [ -z "${USE_MDEV}" ] && return 0 + return 1 +} + +is_mdev() { + if [ ! -x "${UDEVD}" ] || [ -n "${USE_MDEV}" ]; then + return 0 + fi + return 1 +} + +devmgr_init() { + if is_udev; then + good_msg "Activating udev" + echo "${UDEVD}" > /proc/sys/kernel/hotplug + echo "" > /sys/kernel/uevent_helper + "${UDEVD}" --daemon --resolve-names=never && \ + udevadm trigger --action=add && \ + udevadm settle || bad_msg "udevd failed to run" + elif is_mdev; then + good_msg "Activating mdev" + # Serialize hotplug events + touch /dev/mdev.seq + echo "${MDEVD}" > /proc/sys/kernel/hotplug + # Ensure that device nodes are properly configured + "${MDEVD}" -s || bad_msg "mdev -s failed" + else + bad_msg "Cannot find either udev or mdev" + fi +} + +# Terminate the device manager, this happens right before pivot_root +devmgr_terminate() { + if is_udev; then + udevadm settle + udevadm control --exit || bad_msg "Unable to terminate udevd" + fi + # mdev doesn't require anything, it seems +} diff --git a/defaults/initrd.d/00-splash.sh b/defaults/initrd.d/00-splash.sh index 29f4a0c..9c37cd8 100755 --- a/defaults/initrd.d/00-splash.sh +++ b/defaults/initrd.d/00-splash.sh @@ -1,9 +1,13 @@ #!/bin/sh +. /etc/initrd.d/00-common.sh +. /etc/initrd.d/00-devmgr.sh + splash() { return 0 } +# this redefines splash() [ -e "${INITRD_SPLASH}" ] && . "${INITRD_SPLASH}" is_fbsplash() { @@ -29,6 +33,14 @@ is_plymouth_started() { return 1 } +splash_init() { + if is_udev; then + # if udev, we can load the splash earlier + # In the plymouth case, udev will load KMS automatically + splashcmd init + fi +} + splashcmd() { # plymouth support local cmd="${1}" @@ -37,32 +49,32 @@ splashcmd() { case "${cmd}" in init) is_fbsplash && splash init - is_plymouth && plymouth_init + is_plymouth && _plymouth_init ;; verbose) is_fbsplash && splash verbose - plymouth_hide + _plymouth_hide ;; quiet) # no fbsplash support - plymouth_show + _plymouth_show ;; set_msg) is_fbsplash && splash set_msg "${1}" - plymouth_message "${1}" + _plymouth_message "${1}" ;; hasroot) # no fbsplash support - plymouth_newroot "${1}" + _plymouth_newroot "${1}" ;; esac } -plymouth_init() { +_plymouth_init() { good_msg "Enabling Plymouth" mkdir -p /run/plymouth || return 1 @@ -83,34 +95,25 @@ plymouth_init() { consoledev=${consoledev:-tty0} "${PLYMOUTHD_BIN}" --attach-to-session --pid-file /run/plymouth/pid \ || { - bad_msg "Plymouth load error"; - PLYMOUTH_FAILURE=1 + PLYMOUTH_FAILURE=1; return 1; } - plymouth_show + _plymouth_show good_msg "Plymouth enabled" } -plymouth_hide() { +_plymouth_hide() { is_plymouth_started && "${PLYMOUTH_BIN}" --hide-splash } -plymouth_show() { +_plymouth_show() { is_plymouth_started && "${PLYMOUTH_BIN}" --show-splash } -plymouth_message() { +_plymouth_message() { is_plymouth_started && "${PLYMOUTH_BIN}" --update="${1}" } -plymouth_newroot() { +_plymouth_newroot() { is_plymouth_started && "${PLYMOUTH_BIN}" --newroot="${1}" } - -splash_init() { - if is_udev; then - # if udev, we can load the splash earlier - # In the plymouth case, udev will load KMS automatically - splashcmd init - fi -} \ No newline at end of file diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts index 6abc5d3..d06da2f 100755 --- a/defaults/initrd.scripts +++ b/defaults/initrd.scripts @@ -2,6 +2,8 @@ . /etc/initrd.defaults . /etc/initrd.d/00-splash.sh +. /etc/initrd.d/00-devmgr.sh +. /etc/initrd.d/00-common.sh call_func_timeout() { @@ -93,22 +95,7 @@ modules_init() { uppercase() { # needs tr on busybox - echo $1 | tr 'a-z' 'A-Z' -} - -is_livecd() { - [ "${CDROOT}" = "1" ] && return 0 - return 1 -} - -is_nfs() { - [ "${REAL_ROOT}" = "/dev/nfs" ] && return 0 - return 1 -} - -is_aufs() { - [ "${USE_AUFS}" = "1" ] && return 0 - return 1 + echo ${1} | tr 'a-z' 'A-Z' } setup_real_root() { @@ -433,48 +420,6 @@ fs_type_in_use() { cut -d " " -f 3 < /proc/mounts | fgrep -q "${fs_type}" } -is_udev() { - [ -x "${UDEVD}" ] && [ -z "${USE_MDEV}" ] && return 0 - return 1 -} - -is_mdev() { - if [ ! -x "${UDEVD}" ] || [ -n "${USE_MDEV}" ] - then - return 0 - fi - return 1 -} - -devmgr_init() { - if is_udev; then - good_msg 'Activating udev' - echo "${UDEVD}" > /proc/sys/kernel/hotplug - echo "" > /sys/kernel/uevent_helper - "${UDEVD}" --daemon --resolve-names=never && \ - udevadm trigger --action=add && \ - udevadm settle || bad_msg "udevd failed to run" - elif is_mdev; then - good_msg 'Activating mdev' - # Serialize hotplug events - touch /dev/mdev.seq - echo "${MDEVD}" > /proc/sys/kernel/hotplug - # Ensure that device nodes are properly configured - "${MDEVD}" -s || bad_msg "mdev -s failed" - else - bad_msg "Cannot find either udev or mdev" - fi -} - -# Terminate the device manager, this happens right before pivot_root -devmgr_terminate() { - if is_udev; then - udevadm settle - udevadm control --exit || bad_msg "Unable to terminate udevd" - fi - # mdev doesn't require anything, it seems -} - mount_devfs () { # Use devtmpfs if enabled in kernel, # else tmpfs. Always run mdev just in case @@ -511,34 +456,6 @@ test_success() { } -# msg functions arguments -# $1 string -# $2 hide flag - -good_msg() { - [ -n "${QUIET}" ] && [ -z "${DEBUG}" ] && return 0 - - msg_string=$1 - msg_string="${msg_string:-...}" - [ "$2" != 1 ] && echo -e "${GOOD}>>${NORMAL}${BOLD} ${msg_string} ${NORMAL}" -} - -bad_msg() { - msg_string=$1 - msg_string="${msg_string:-...}" - if [ "$2" != 1 ] - then - splashcmd verbose - echo -e "${BAD}!!${NORMAL}${BOLD} ${msg_string} ${NORMAL}" - fi -} - -warn_msg() { - msg_string=$1 - msg_string="${msg_string:-...}" - [ "$2" != 1 ] && echo -e "${WARN}**${NORMAL}${BOLD} ${msg_string} ${NORMAL}" -} - # Courtesy of dracut. Licensed under GPL-2. # Taken from: dracut/modules.d/90crypt/crypt-lib.sh # ask_for_password