From c5ebc6337daff29eab2faf3ccbf49cbf4fab821c Mon Sep 17 00:00:00 2001 From: Amerigo Wang Date: Mon, 1 Aug 2011 17:19:24 +0800 Subject: [PATCH] mkdumprd: move module inclusion code to module-setup.sh --- kdump_dracut_modules/99kdumpbase/check | 9 --- kdump_dracut_modules/99kdumpbase/install | 9 --- .../99kdumpbase/module-setup.sh | 77 +++++++++++++++++++ mkdumprd | 10 ++- sources | 1 + 5 files changed, 85 insertions(+), 21 deletions(-) delete mode 100755 kdump_dracut_modules/99kdumpbase/check delete mode 100755 kdump_dracut_modules/99kdumpbase/install create mode 100755 kdump_dracut_modules/99kdumpbase/module-setup.sh diff --git a/kdump_dracut_modules/99kdumpbase/check b/kdump_dracut_modules/99kdumpbase/check deleted file mode 100755 index 191fa75..0000000 --- a/kdump_dracut_modules/99kdumpbase/check +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -#kdumpctl sets this explicitly -if [ -z "$IN_KDUMP" ] -then - exit 1 -fi -exit 0 - diff --git a/kdump_dracut_modules/99kdumpbase/install b/kdump_dracut_modules/99kdumpbase/install deleted file mode 100755 index 6e22aa9..0000000 --- a/kdump_dracut_modules/99kdumpbase/install +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -inst "/bin/date" "/bin/date" -inst "/bin/sync" "/bin/sync" -inst "/usr/bin/reboot" "/bin/reboot" -inst "/sbin/makedumpfile" "/sbin/makedumpfile" -inst "/etc/kdump.conf" "/etc/kdump.conf" -inst_hook pre-pivot 01 "$moddir/kdump.sh" - diff --git a/kdump_dracut_modules/99kdumpbase/module-setup.sh b/kdump_dracut_modules/99kdumpbase/module-setup.sh new file mode 100755 index 0000000..cd466bd --- /dev/null +++ b/kdump_dracut_modules/99kdumpbase/module-setup.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +check() { + [[ $debug ]] && set -x + #kdumpctl sets this explicitly + if [ -z "$IN_KDUMP" ] || [ ! -f /etc/kdump.conf ] + then + return 1 + fi + return 0 +} + +is_lvm() { [[ $(get_fs_type /dev/block/$1) = LVM2_member ]]; } +is_mdraid() { [[ -d "/sys/dev/block/$1/md" ]]; } +is_btrfs() { get_fs_type /dev/block/$1 | grep -q btrfs; } +is_mpath() { + [ -e /sys/dev/block/$1/dm/uuid ] || return 1 + [[ $(cat /sys/dev/block/$1/dm/uuid) =~ ^mpath- ]] && return 0 + return 1 +} +is_dmraid() { get_fs_type /dev/block/$1 |grep -v linux_raid_member | \ + grep -q _raid_member; } + +is_iscsi() ( + [[ -L /sys/dev/block/$1 ]] || return + cd "$(readlink -f /sys/dev/block/$1)" + until [[ -d sys || -d iscsi_session ]]; do + cd .. + done + [[ -d iscsi_session ]] +) + +pull_dracut_modules() { + local _dev=$1 + local _is_uuid=`echo $1 | grep UUID` + local _is_label=`echo $1 | grep LABEL` + + if [ -n "$_is_uuid" -o -n "$_is_label" ] + then + _dev=`findfs $1` + fi + + . $dracutfunctions + unset MAJOR MINOR + eval $(udevadm info --query=env --name="$_dev" | egrep '^(MAJOR|MINOR)') + check_block_and_slaves is_btrfs "$MAJOR:$MINOR" && echo -n "btrfs " + check_block_and_slaves is_lvm "$MAJOR:$MINOR" && echo -n "lvm " + check_block_and_slaves is_mdraid "$MAJOR:$MINOR" && echo -n "mdraid " + check_block_and_slaves is_mpath "$MAJOR:$MINOR" && echo -n "multipath " + check_block_and_slaves is_iscsi "$MAJOR:$MINOR" && echo -n "iscsi " + check_block_and_slaves is_dmraid "$MAJOR:$MINOR" && echo -n "dmraid " + unset MAJOR MINOR +} + +depends() { + local _deps="base shutdown" + while read config_opt config_val; + do + case "$config_opt" in + ext[234]|xfs|btrfs|minix|raw) + _deps="$_deps `pull_dracut_modules "$config_val"`" + ;; + esac + done < /etc/kdump.conf + echo $_deps + return 0 +} + +install() { + inst "/bin/date" "/bin/date" + inst "/bin/sync" "/bin/sync" + inst "/usr/bin/reboot" "/bin/reboot" + inst "/sbin/makedumpfile" "/sbin/makedumpfile" + inst "/etc/kdump.conf" "/etc/kdump.conf" + inst_hook pre-pivot 01 "$moddir/kdump.sh" +} + diff --git a/mkdumprd b/mkdumprd index 9a1edcc..e2edc64 100644 --- a/mkdumprd +++ b/mkdumprd @@ -10,12 +10,16 @@ export IN_KDUMP=1 conf_file="/etc/kdump.conf" extra_modules="" -dracut_args="-H -o i18n -o plymouth --add shutdown -c /dev/null" +dracut_args="-m kdumpbase --add dash -c /dev/null" add_dracut_arg() { dracut_args="$dracut_args $*" } +add_dracut_module() { + add_dracut_arg "--add $1" +} + while [ $# -gt 0 ]; do case $1 in -d) @@ -61,8 +65,8 @@ if [ -n "$conf_file" ]; then check_local "$config_val" 1 ;; net) - add_dracut_arg "--add network" check_remote "$config_val" + add_dracut_module "nfs" ;; core_collector) add_dracut_arg "-I ${config_val% *}" @@ -85,6 +89,6 @@ then add_dracut_arg "--add-drivers $extra_modules" fi -dracut $dracut_args "$@" +dracut $dracut_args -M "$@" exit $? diff --git a/sources b/sources index afce193..01cc25d 100644 --- a/sources +++ b/sources @@ -12,3 +12,4 @@ d220ff5e4b07c34701d9a1fe991ef2e4 dracut-files.tbz2 1548d83e2713660c4cbd2c284fdad25b dracut-files.tbz2 adea715e719a4c460c41d8134aafa95b dracut-files.tbz2 c7e9dd35476cb33f09f22037f6c16982 dracut-files.tbz2 +2cda75991642bd2ad58e93e89297748b dracut-files.tbz2