[kexec-tools] Update initramfs code.

Cong Wang wangcong at fedoraproject.org
Thu Jul 21 10:52:34 UTC 2011


commit 57ae098fd08a1052916bd59a06185e49dd13e0dc
Author: Amerigo Wang <amwang at redhat.com>
Date:   Thu Jul 21 18:51:33 2011 +0800

    Update initramfs code.

 mkdumprd | 2360 ++------------------------------------------------------------
 1 files changed, 57 insertions(+), 2303 deletions(-)
---
diff --git a/mkdumprd b/mkdumprd
index 0abe921..11687dd 100644
--- a/mkdumprd
+++ b/mkdumprd
@@ -1,2341 +1,95 @@
 #!/bin/bash --norc
-# vim:sts=4:sw=4:ts=8:et
-
-# mkdumprd
+# New mkdumprd
 #
-# Copyright 2005 Red Hat, Inc.
+# Copyright 2011 Red Hat, Inc.
 #
-# Written by Erik Troan <ewt at redhat.com>
+# Written by Cong Wang <amwang at redhat.com>
 #
-# Contributors:
-#	Elliot Lee <sopwith at cuc.edu>
-#	Miguel de Icaza <miguel at nuclecu.unam.mx>
-#	Christian 'Dr. Disk' Hechelmann <drdisk at ds9.au.s.shuttle.de>
-#	Michael K. Johnson <johnsonm at redhat.com>
-#	Pierre Habraken <Pierre.Habraken at ujf-grenoble.fr>
-#	Jakub Jelinek <jakub at redhat.com>
-#	Carlo Arenas Belon (carenas at chasqui.lared.net.pe>
-#	Keith Owens <kaos at ocs.com.au>
-#	Bernhard Rosenkraenzer <bero at redhat.com>
-#	Matt Wilson <msw at redhat.com>
-#       Trond Eivind Glomsrød <teg at redhat.com>
-#       Jeremy Katz <katzj at redhat.com>
-#       Preston Brown <pbrown at redhat.com>
-#	Bill Nottingham <notting at redhat.com>
-#       Guillaume Cottenceau <gc at mandrakesoft.com>
-#	Peter Jones <pjones at redhat.com>
-#       Neil Horman <nhorman at redhat.com>
-#       Jarod Wilson <jwilson at redhat.com>
-cmdname=`basename $0`
-
-umask 0022
-
-export MALLOC_PERTURB_=204
-
-PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH
-export PATH
-
-. /etc/rc.d/init.d/functions
-
-VERSION=5.0.39
-
-PROBE="yes"
-MODULES=""
-PREMODS=""
-DMRAIDS=""
-MPATHS=""
-
-
-CONFMODS="$MODULES"
-MODULES=""
-
-withusb=yes
-compress=1
-allowmissing=""
-target=""
-kernel=""
-force=""
-verbose=""
-img_vers=""
-builtins=""
-modulefile=/etc/modules.conf
-rc=0
-
-IMAGESIZE=8000
-PRESCSIMODS="sd_mod"
-fstab="/etc/fstab"
-
-vg_list=""
-net_list=""
-USING_METHOD=""
-SAVE_PATH=/var/crash
-bin=""
-KDUMP_POST=""
-extra_kdump_mods=""
-
-TMPDISKLIST=`mktemp /tmp/disklist.XXXXXX`
-
-vecho()
-{
-    NONL=""
-    if [ "$1" == "-n" ]; then
-        NONL="-n"
-        shift
-    fi
-    [ -n "$verbose" ] && echo $NONL "$@"
-}
-
-error()
-{
-    NONL=""
-    if [ "$1" == "-n" ]; then
-        NONL="-n"
-        shift
-    fi
-    echo $NONL "$@" >&2
-}
-
-usage () {
-    if [ "$1" == "-n" ]; then
-        cmd=echo
-    else
-        cmd=error
-    fi
-
-    $cmd "usage: $cmdname [--version] [--help] [-v] [-d] [-f] [--preload <module>]"
-    $cmd "       [--image-version]"
-    $cmd "       [--builtin=<module>] [--omit-dmraid]"
-    $cmd "       [--fstab=<fstab>] [--nocompress] <initrd-image> <kernel-version>"
-    $cmd ""
-    $cmd "       (ex: $cmdname /boot/initrd-2.2.5-15.img 2.2.5-15)"
-
-    if [ "$1" == "-n" ]; then
-        exit 0
-    else
-        exit 1
-    fi
-}
-
-moduledep() {
-    if [ ! -f "/lib/modules/$kernel/modules.dep" ]; then
-	error "No dep file found for kernel $kernel"
-	exit 1
-    fi
-
-    deps=$(awk 'BEGIN { searched=ARGV[2]; ARGV[2]=""; rc=1 } \
-                function modname(filename) { match(filename, /\/([^\/]+)\.k?o:?$/, ret); return ret[1] } \
-                function show() { if (orig == searched) { print dep; orig=""; rc=0; exit } } \
-                /^\/lib/ { show(); \
-                           orig=modname($1); dep=""; \
-                           if ($2) { for (i = 2; i <= NF; i++) { dep=sprintf("%s %s", dep, modname($i)); } } } \
-                /^	/ { dep=sprintf("%s %s", dep, modname($1));  } \
-                END      { show(); exit(rc) }' /lib/modules/$kernel/modules.dep $1)
-    for i in `modprobe --show-depends $1 2>/dev/null | awk '/insmod/ {print $2}'`
-    do
-       modname=`basename $i | sed -e's/\.ko//'`
-       if [ "$modname" == "$1" ]
-       then
-          continue
-       fi
-       deps="$deps $modname"
-    done
-    [ -n "$deps" ] && vecho ":$deps" || vecho
-}
-
-findone() {
-    find "$@" -print -quit
-}
-
-dm_get_uuid() {
-    dmsetup info "$1" | awk '/^.*UUID.*/ {print $2}'
-}
-
-depsolve_modlist()
-{
-	local TMPINMODS=$MODULES
-	local TMPOUTMODS=""
-	local i
-	local j
-	local mname
-	local dpcnt
-	local scnt
-
-	#
-	# So, basically, we just do this until TMPINMODS
-	# is an empty list
-	#
-	while [ -n "$TMPINMODS" ]
-	do
-	   for i in $TMPINMODS
-	   do
-	      mname=`basename $i | sed -e's/\.ko//'`
-	      dpcnt=`modprobe --show-depends $mname 2>/dev/null | awk '/insmod/ {print $2}' | wc -l`
-	      if [ $dpcnt -le 1 ]
-	      then
-	         # we have no dependencies, just add it to the list
-		 echo "$TMPOUTMODS" | grep -q $i
-		 if [ $? -ne 0 ]
-		 then
-			 TMPOUTMODS="$TMPOUTMODS $i"
-		 fi
-		 continue
-	      fi
-              # We should start this counter at 1, since we expect that the last
-              # line output by modprobe --show-depends will be the module we
-              # specify as mname below, but since modprobe is busted and
-              # sometimes doesn't do that, we start at zero, and increment an
-              # extra time below if we are searching for a dependency on ourself
-	      let scnt=0
-	      for j in `modprobe --show-depends $mname 2>/dev/null | awk '/insmod/ {print $2}'`
-	      do
-		 echo $TMPOUTMODS | grep -q $j
-	         if [ $? -eq 0 ]
-	         then
-	            let scnt=$scnt+1
-	         fi
-                 # here we are looking to see if the insmod line is for the
-                 # module that we are searching for dependencies on.  We do this
-                 # because modprobe is busted in its show-depends line
-                 echo $j | grep -q $i
-                 if [ $? -eq  0 ]
-                 then
-                    let scnt=$scnt+1
-                 fi
-	      done
-	      if [ "$scnt" == "$dpcnt" ]
-	      then
-		 echo "$TMPOUTMODS" | grep -q $i
-		 if [ $? -ne 0 ]
-		 then
-			 TMPOUTMODS="$TMPOUTMODS $i"
-		 fi
-	      fi
-	   #Finish for i loop
-	   done
-	   for j in $TMPOUTMODS
-	   do
-	        TMPTMPMODS=""
-		for z in $TMPINMODS
-		do
-		   if [ "$j" == "$z" ]
-		   then
-			continue
-		   fi
-		   TMPTMPMODS="$TMPTMPMODS $z"
-		done
-		TMPINMODS=$TMPTMPMODS
-	   done
-	done
-	MODULES=$TMPOUTMODS
-}
-
-findmodule() {
-    local skiperrors=""
-
-
-    if [ $1 == "--skiperrors" ]; then
-	skiperrors=--skiperrors
-	shift
-    fi
-
-    local modName=$1
-    local skipdeps=$2
-
-    if [ "$modName" = "off" -o "$modName" = "null" ]; then
-	return
-    fi
-
-    if [ $(echo $modName | cut -b1) = "-" ]; then
-	skiperrors=--skiperrors
-	modName=$(echo $modName | cut -b2-)
-    fi
-
-    case "$MODULES " in
-        *"/$modName.ko "*) return ;;
-    esac
-
-    if echo $builtins | egrep -q '(^| )'$modName'( |$)' ; then
-        vecho "module $modName assumed to be built in"
-	return
-    fi
-
-    # special cases
-    case "$modName" in
-        raid[456])
-            modName=raid456
-            ;;
-    esac
-
-    if [ "$modName" = "i2o_block" ]; then
-	findmodule i2o_core
-	findmodule -i2o_pci
-	modName="i2o_block"
-    elif [ "$modName" = "ppa" ]; then
-	findmodule parport
-	findmodule parport_pc
-	modName="ppa"
-    elif [ "$modName" = "sbp2" ]; then
-	findmodule ieee1394
-	findmodule ohci1394
-	modName="sbp2"
-    elif [ "$modName" = "raid6" ]; then
-	findmodule raid456
-        modName="raid456"
-    else
-	if [ -z "$skipdeps" ]
-	then
-		moduledep $modName
-		for i in $deps; do
-		    findmodule $i
-		done
-	fi
-    fi
-
-    fmPath=$(modprobe --set-version $kernel -l $modName 2>/dev/null)
-    if [ ! -f "/lib/modules/$kernel/$fmPath" ]; then
-    	for modDir in /lib/modules/$kernel/updates /lib/modules/$kernel
-    	do
-		if [ -d $modDir ]
-		then
-			fmPath=$(findone $modDir -name $modName.ko)
-			if [ -f "$fmPath" ]
-			then
-				break 2
-			fi
-                fi
-    	done
-    fi
-
-    if [ ! -f "/lib/modules/$kernel/$fmPath" ]; then
-	if [ -n "$skiperrors" ]; then
-	    return
-	fi
-
-        # ignore the absence of the scsi modules
-	for n in $PRESCSIMODS; do
-	    if [ "$n" = "$modName" ]; then
-		return;
-	    fi
-	done;
 
-	if [ -n "$allowmissing" ]; then
-	    error "WARNING: No module $modName found for kernel $kernel, continuing anyway"
-	    return
-	fi
+export IN_KDUMP=1
 
-	error "No module $modName found for kernel $kernel, aborting."
-	exit 1
-    fi
+conf_file="/etc/kdump.conf"
+extra_modules=""
+dracut_args="-H"
 
-    # only need to add each module once
-    MODULES="$MODULES /lib/modules/$kernel/$fmPath"
-
-    # need to handle prescsimods here -- they need to go _after_ scsi_mod
-    if [ "$modName" = "scsi_mod" ]; then
-	for n in $PRESCSIMODS ; do
-	    findmodule $n
-	done
-    fi
-}
-
-do_blacklist()
-{
-    local modName=$1
-
-    if echo "$modName" | grep -q "\/" ; then
-        local dirName="/lib/modules/$kernel/$modName"
-        find $dirName -xtype f -exec basename {} \; | sed "s/^\(.*\).ko/blacklist \1/g" >> $MNTIMAGE/etc/blacklist-kdump.conf
-    else
-        echo "blacklist $modName" >> $MNTIMAGE/etc/blacklist-kdump.conf
-    fi
-}
-
-inst() {
-    if [ "$#" != "2" ];then
-        echo "usage: inst <file> <destination>"
-        return
-    fi
-    vecho "$1 -> $2"
-    cp $1 $2
-}
-
-findstoragedriverinsys () {
-    while [ ! -L device ]; do
-        [ "$PWD" = "/sys" ] && return
-        cd ..
-    done
-    devname=$(readlink ./device)
-    cd $devname
-    while [ ! -f modalias ]; do
-        [ "$PWD" = "/sys/devices" ] && return
-        cd ..
-    done
-
-    [ -e modalias ] && modalias=$(cat modalias)
-    [ -e device ] && modalias=$(cat $(find /sys/devices -name modalias
-        | grep $(basename $devname)))
-
-    for driver in $(modprobe --set-version $kernel --show-depends $modalias 2>/dev/null| awk '{ print gensub(".*/","","g",$2) }') ; do
-        findmodule ${driver%%.ko}
-    done
-    # Handle special needs for missing deps or wierd modalias lines
-    case $modalias in
-        "scsi:t-0x00")
-            findmodule ata_generic
-           ;;
-        *)
-            ;;
-    esac
-}
-
-findstoragedriver () {
-    for device in $@ ; do
-        basedev=`echo $device | sed -e's/\/dev\///' -e's/[0-9]\+//'`
-        if [ -d /sys/block/$basedev ]
-        then
-            #only add devices which have a presence in sysfs
-            echo $basedev >> $TMPDISKLIST
-        fi
-        case " $handleddevices " in
-            *" $device "*)
-                continue ;;
-            *) handleddevices="$handleddevices $device" ;;
-        esac
-        echo $device | grep -q "md[0-9]\+"
-        if [ $? == 0 ]; then
-            vecho "Found RAID component $device"
-            handleraid "$device"
-            continue
-        fi
-        device=`echo $device | sed 's/\//\!/g'`
-        sysfs=$(findone -L /sys/block -maxdepth 2 -type d -name $device)
-        [ -z "$sysfs" ] && return
-        pushd $sysfs >/dev/null 2>&1
-        findstoragedriverinsys
-        popd >/dev/null 2>&1
-    done
-}
-
-findnetdriver() {
-    for device in $@ ; do
-        case " $handleddevices " in
-            *" $device "*)
-                continue ;;
-            *) handleddevices="$handleddevices $device" ;;
-        esac
-
-        case "$device" in
-        bond*)
-            modalias=bonding
-            ;;
-        eth*.*)
-            modalias=8021q
-            ;;
-        *)
-            if [ -f /sys/class/net/$device/device/modalias ]
-            then 
-                modalias=$(cat /sys/class/net/$device/device/modalias)
-            else
-                modalias=$(ethtool -i $device | awk '/^driver:/ { print $2 }')
-            fi
-            ;;
-        esac
-        for driver in $(modprobe --set-version $kernel --show-depends $modalias 2>/dev/null| awk '{ print gensub(".*/","","g",$2) }') ; do
-            findmodule ${driver%%.ko}
-        done
-    done
-}
-
-handleraid() {
-    echo IN HANDLERAID
-    local start=0
-
-    if [ -n "$noraid" -o ! -f /proc/mdstat ]; then
-        return 0
-    fi
-
-    levels=$(grep "^$1[	 ]*:" /proc/mdstat | \
-        awk '{ print $4 }')
-    devs=$(grep "^$1[	 ]*:" /proc/mdstat | \
-        awk '{ print gensub("\\[[0-9]*\\]","","g",gensub("^md.*raid[0-9]*","","1")) }')
-
-    for level in $levels ; do
-	case $level in
-	linear)
-	    findmodule linear
-	    start=1
-	    ;;
-	multipath)
-	    findmodule multipath
-	    start=1
-	    ;;
-	raid[01456] | raid10)
-	    findmodule $level
-	    start=1
-	    ;;
-	*)
-	    error "raid level $level (in /proc/mdstat) not recognized"
-	    ;;
-	esac
-    done
-    findstoragedriver $devs
-    if [ "$start" = 1 ]; then
-        raiddevices="$raiddevices $1"
-    fi
-    return $start
-}
-
-handlelvordev() {
-    local vg=`lvs --noheadings -o vg_name $1 2>/dev/null`
-    if [ -z "$vg" ]; then
-        vg=`lvs --noheadings -o vg_name $(echo $1 | sed -e 's#^/dev/mapper/\([^-]*\)-\(.*\)$#/dev/\1/\2#') 2>/dev/null`
-    fi
-    if [ -n "$vg" ]; then
-        vg=`echo $vg` # strip whitespace
-        case " $vg_list " in
-        *" $vg "*)
-            ;;
-        *)
-            vg_list="$vg_list $vg"
-            for device in `vgdisplay -v $vg 2>/dev/null | sed -n 's/PV Name//p'`; do
-                IS_UUID=`echo $device | grep UUID`
-                IS_LABEL=`echo $device | grep LABEL`
-                if [ -n "$IS_UUID" -o -n "$IS_LABEL" ]
-                then
-                    devname=`findfs $device`
-                else
-                    devname=$device
-                fi
-                findstoragedriver ${device##/dev/}
-            done
-            ;;
-        esac
-    else
-        IS_UUID=`echo $1 | grep UUID`
-        IS_LABEL=`echo $1 | grep LABEL`
-        if [ -n "$IS_UUID" -o -n "$IS_LABEL" ]
-        then
-            devname=`findfs $1`
-        else
-            devname=$1
-        fi
-               
-        findstoragedriver ${1##/dev/}
-    fi
-}
-
-handlenetdev() {
-    local dev=$1
-    cp /etc/sysconfig/network-scripts/ifcfg-$dev $MNTIMAGE/etc
-    BOOTPROTO=""
-    VLAN=""
-    MASTER=""
-    SLAVE=""
-    . $MNTIMAGE/etc/ifcfg-$dev
-
-    findnetdriver $dev
-
-
-    if [ "$BOOTPROTO" == "dhcp" ]
-    then
-        echo iface $dev inet dhcp >> $MNTIMAGE/etc/network/interfaces
-    else    
-        echo iface $dev inet static >> $MNTIMAGE/etc/network/interfaces
-        if [ -n "$IPADDR" ]
-        then
-            echo "  " address $IPADDR >> $MNTIMAGE/etc/network/interfaces
-        fi
-        if [ -n "$NETMASK" ]
-        then
-            echo "  " netmask $NETMASK >> $MNTIMAGE/etc/network/interfaces
-        fi
-        if [ -z "$GATEWAY" ]
-        then
-            GATEWAY=`/sbin/ip route show | awk '/^default/ {print $3}'`
-        fi
-        echo "  " gateway $GATEWAY >> $MNTIMAGE/etc/network/interfaces
-    fi
-
-    #This lets us recursively handle stacked devices
-    case "$dev" in
-        bond*)
-            #This is a bond, pick up its slaves
-            for j in `cat /sys/class/net/$dev/bonding/slaves`
-            do
-                handlenetdev $j
-            done
-            echo "BUS_ID=\"Bonding\"" >> $MNTIMAGE/etc/ifcfg-$dev
-            ;;
-        *)
-
-            if [ "$VLAN" == "yes" ] 
-            then
-                #put code to handle vlan devices
-                echo "BUS_ID=\"Vlan\"" >> $MNTIMAGE/etc/ifcfg-$dev
-                #now make sure we pick up the driver to support the 
-                #underlying interface
-                BASE_IFC=`echo $dev | cut -d"." -f1`
-                handlenetdev $BASE_IFC
-            else
-                BUS_ID=`ls -l /sys/class/net/$dev/device | sed -e's/\(.*\/\)\(.*$\)/\2/'`
-                echo "BUS_ID=\"$BUS_ID\"" >> $MNTIMAGE/etc/ifcfg-$dev
-            fi
-            ;;
-    esac
+add_dracut_arg() {
+    dracut_args="$dracut_args $*"
 }
 
 while [ $# -gt 0 ]; do
     case $1 in
-	--fstab*)
-	    if echo $1 | grep -q '=' ; then
-	    	fstab=`echo $1 | sed 's/^--fstab=//'`
-	    else
-		fstab=$2
-		shift
-	    fi
-	    ;;
-
-	--with-usb)
-	    withusb=yes
-	    ;;
-
-        --without-usb)
-            withusb=no
-            ;;
-
-	--with*)
-	    if echo $1 | grep -q '=' ; then
-	    	modname=`echo $1 | sed 's/^--with=//'`
-	    else
-		modname=$2
-		shift
-	    fi
-
-	    basicmodules="$basicmodules $modname"
-	    ;;
-
-	--builtin*)
-	    if echo $1 | grep -q '=' ; then
-	    	modname=`echo $1 | sed 's/^--builtin=//'`
-	    else
-		modname=$2
-		shift
-	    fi
-	    builtins="$builtins $modname"
-	    ;;
-
-	--version)
-	    echo "$cmdname: version $VERSION"
-	    exit 0
-	    ;;
-
-	-v)
-	    verbose=-v
-	    ;;
-
-	--nocompress)
-	    compress=""
-	    ;;
-
-	--ifneeded)
-	    # legacy
-	    ;;
-
-	-f)
-	    force=1
-	    ;;
-    
-        -d)
-            KDUMP_CONFIG_FILE=""
-            if [ -f /etc/kdump.conf ]; then
-                KDUMP_CONFIG_FILE="/etc/kdump.conf"
-            fi
-            ;;
-
-	--preload*)
-	    if echo $1 | grep -q '=' ; then
-	    	modname=`echo $1 | sed 's/^--preload=//'`
-	    else
-		modname=$2
-		shift
-	    fi
-	    PREMODS="$PREMODS $modname"
-	    ;;
-	--force-scsi-probe)
-	    forcescsi=1
-	    ;;
-	--omit-scsi-modules)
-	    PRESCSIMODS=""
-	    noscsi=1
-	    ;;
-	--force-raid-probe)
-	    forceraid=1
-	    ;;
-	--omit-raid-modules)
-	    noraid=1
-	    ;;
-	--force-lvm-probe)
-	    forcelvm=1
-	    ;;
-	--omit-lvm-modules)
-	    nolvm=1
-	    ;;
-	--omit-dmraid)
-	    nodmraid=1
-            ;;
-        --force-ide-probe)
-            forceide=1
-            ;;
-	--image-version)
-	    img_vers=yes
-	    ;;
-	--allow-missing)
-	    allowmissing=yes
-	    ;;
-	--noresume)
-	    noresume=1
-	    ;;
-        --help)
-            usage -n
-            ;;
-	*)
-	    if [ -z "$target" ]; then
-		target=$1
-	    elif [ -z "$kernel" ]; then
-		kernel=$1
-	    else
-		usage
-	    fi
-	    ;;
+    --noconf)
+        conf_file=""
+        shift
+        ;;
+    --debug)
+        add_dracut_arg "-v"
+        set -x
+        shift
+        ;;
+    *)
+        break
+        ;;
     esac
-
-    shift
-done
-
-if [ -z "$target" -o -z "$kernel" ]; then
-    usage
-fi
-
-if [ -n "$img_vers" ]; then
-    target="$target-$kernel"
-fi
-
-if [ -z "$force" -a -f $target ]; then
-    error "$target already exists."
-    exit 1
-fi
-
-if [ -n "$forcescsi" -a -n "$noscsi" ]; then
-    error "Can't both force scsi probe and omit scsi modules"
-    exit 1
-fi
-
-if [ -n "$forceraid" -a -n "$noraid" ]; then
-    error "Can't both force raid probe and omit raid modules"
-    exit 1
-fi
-
-if [ -n "$forcelvm" -a -n "$nolvm" ]; then
-    error "Can't both force LVM probe and omit LVM modules"
-    exit 1
-fi
-
-if [ ! -d /lib/modules/$kernel ]; then
-    error 'No modules available for kernel "'${kernel}'".'
-    exit 1
-fi
-
-if [ $UID != 0 ]; then
-    error "$cmdname must be run as root."
-    exit 1
-fi
-
-vecho "Creating initramfs"
-modulefile=/etc/modprobe.conf
-
-# find a temporary directory which doesn't use tmpfs
-TMPDIR=""
-for t in /tmp /var/tmp /root ${PWD}; do
-    if [ ! -d $t ]; then continue; fi
-
-    fs=$(df -T $t 2>/dev/null | awk '{line=$1;} END {printf $2;}')
-    if [ "$fs" != "tmpfs" ]; then
-	TMPDIR=$t
-	break
-    fi
-done
-
-if [ -z "$TMPDIR" ]; then
-    error "no temporary directory could be found."
-    exit 1
-fi
-
-if [ $TMPDIR = "/root" -o $TMPDIR = "${PWD}" ]; then
-    error "WARNING: using $TMPDIR for temporary files"
-fi
-
-for n in $PREMODS; do
-	findmodule $n
 done
 
-needusb=""
-if [ -n "$withusb" -a "x$PROBE" == "xyes" ]; then
-    # If / or /boot is on a USB device include the driver. With root by
-    # label we could still get some odd behaviors
-    for fs in / /boot ; do
-        esc=$(echo $fs | sed 's,/,\\/,g')
-        dev=$(mount | awk "/ on ${esc} / { print \$1 }" | sed 's/[0-9]*$//' | cut -d/ -f3)
-        if [ "$(echo $dev | cut -c1-2)" = sd ]; then
-            if [ `which kudzu 2>/dev/null` ]; then
-                host=$(kudzu --probe -b scsi |
-                gawk '/^device: '${dev}'/,/^host:/ { if (/^host/) { print $2; exit; } }')
-                if [ -d /proc/scsi/usb-storage-${host} -o -f /proc/scsi/usb-storage/${host} ]; then
-                    needusb=1
-                fi
-            fi
-        fi
-    done
-fi
-
-if [ -n "$needusb" -a "x$PROBE" == "xyes" ]; then
-    drivers=$(awk '/^alias[[:space:]]+usb-controller[0-9]* / { print $3}' < $modulefile)
-    useUSB=0
-    if [ -n "$drivers" ]; then
-        useUSB=1
-        for driver in $drivers; do
-            findmodule $driver
-        done
-    fi
-    for x in $(grep ^[eou]hci_hcd /proc/modules | awk '{ print $1 }' | tac) ; do
-        useUSB=1
-        findmodule $(echo $x | sed 's/_/-/')
-    done
-    if [ "$useUSB" == "1" ]; then
-        findmodule scsi_mod
-        findmodule sd_mod
-        findmodule usb-storage
-    fi
-fi
-
-if [ -n "$forcescsi" -o -z "$noscsi" -a "x$PROBE" == "xyes" ]; then
-    if [ ! -f $modulefile ]; then
-        modulefile=/etc/conf.modules
-    fi
-
-    if [ -f $modulefile ]; then
-	scsimodules=`grep "alias[[:space:]]\+scsi_hostadapter" $modulefile | grep -v '^[ 	]*#' | LC_ALL=C sort -u | awk '{ print $3 }'`
-
-	if [ -n "$scsimodules" ]; then
-            for n in $scsimodules; do
-    # for now allow scsi modules to come from anywhere.  There are some
-    # RAID controllers with drivers in block/
-		findmodule $n
-	    done
-	fi
-    fi
-fi
-
-# If we have ide devices and module ide, do the right thing
-ide=/proc/ide/ide*
-if [ -n "$forceide" -o -n "$ide" -a "x$PROBE" == "xyes" ]; then
-    findmodule -ide-disk
-fi
-
-# If we have dasd devices, include the necessary modules (S/390)
-if [ "x$PROBE" == "xyes" -a -d /proc/dasd ]; then
-    findmodule -dasd_mod
-    findmodule -dasd_eckd_mod
-    findmodule -dasd_fba_mod
-fi
-
-if [ "x$PROBE" == "xyes" ]; then
-    rootfs=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $3; }}' $fstab)
-    rootopts=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}' $fstab)
-
-    # in case the root filesystem is modular
-    findmodule -${rootfs}
-
-    rootdev=$(awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' $fstab)
-    # check if it's nfsroot
-    if [ "$rootfs" == "nfs" ]; then
-	remote=$(echo $rootdev | cut -d : -f 1)
-	# FIXME: this doesn't handle ips properly
-	remoteip=$(getent hosts $remote | cut -d ' ' -f 1) 
-	netdev=`/sbin/ip route get to $remoteip |sed 's|.*dev \(.*\).*|\1|g' |awk {'print $1;'} |head -n 1`	
-	net_list="$net_list $netdev"
-    # check if it's root by label
-    elif echo  $rootdev | cut -c1-6 | grep -q "UUID=\|LABEL=" ; then
-        dev=`/sbin/findfs $rootdev | sed -e's/\(.*\/\)\(.*$\)/\2/' -e's/[0-9]\+//'`
-        if [ -n "$dev" ] ; then 
-            vecho "Found root device $dev for $rootdev"
-            rootdev=$dev
-        fi
-    else
-    	rootopts=$(echo $rootopts | sed -e 's/^r[ow],//' -e 's/,r[ow],$//' -e 's/,r[ow],/,/' \
-                     -e 's/^r[ow]$/defaults/' -e 's/$/,ro/')
-    fi
-    [ "$rootfs" != "nfs" ] && handlelvordev $rootdev
-
-fi
-
-# If we use LVM or dm-based raid, include dm-mod
-# XXX: dm not really supported yet.
-testdm=""
-[ -n "$vg_list" ] && testdm="yes"
-[ -n "$forceraid" -o -n "$forcelvm" ] && testdm="yes"
-[ -z "$nolvm" -o -z "$noraid" ] && testdm="yes"
-[ "x$PROBE" != "xyes" ] && testdm=""
-
-if [ -n "$testdm" ]; then
-    if [ -x /sbin/dmsetup -a -e /dev/mapper/control ]; then
-	dmout=$(/sbin/dmsetup ls 2>/dev/null)
-	if [ "$dmout" != "No devices found" -a "$dmout" != "" ]; then
-	    findmodule -dm-mod
-
-            # DM requires all of these to be there in case someone used the
-            # feature.  broken.  (#132001)
-            findmodule -dm-mirror
-            findmodule -dm-zero
-            findmodule -dm-snapshot
-	fi
-    fi
-    if [ -x /sbin/dmraid -a -z "$nodmraid" ]; then
-        NOBLK=`/sbin/dmraid -s -craidname 2>/dev/null | grep  "no block devices"`
-        NORAD=`/sbin/dmraid -s -craidname 2>/dev/null | grep  "no raid disks"`
-        if [ -z "$NOBLK" ] && [ -z "$NORAD" ]
-        then
-            for raid in $(/sbin/dmraid -s -craidname 2>/dev/null) ; do
-                DMRAIDS="$DMRAIDS $raid"
-            done
-        fi
-    fi
-fi
-   
-for n in $basicmodules; do
-    findmodule $n
-done
-
-for n in $CONFMODS; do
-    findmodule $n
-done
-
-vecho "Using modules:$MODULES"
-
-MNTIMAGE=`mktemp -d ${TMPDIR}/initrd.XXXXXX`
-IMAGE=`mktemp ${TMPDIR}/initrd.img.XXXXXX`
-RCFILE=$MNTIMAGE/init
-
-cemit()
-{
-    cat >> $RCFILE
+# $1 target device
+# $2 if this is a raw dump
+dump_local() {
+    return
 }
 
-emit()
-{
-    NONL=""
-    if [ "$1" == "-n" ]; then
-        NONL="-n"
-        shift
-    fi
-    echo $NONL "$@" >> $RCFILE
+# $1 remote target
+dump_remote() {
+    return
 }
 
-emitdm()
-{
-    vecho "Adding dm map \"$1\""
-    UUID=$(dm_get_uuid "$1")
-    if [ -n "$UUID" ]; then
-        UUID="--uuid $UUID"
-    fi
-    emit "echo \"$(/sbin/dmsetup table $1)\" | /sbin/dmsetup create \"$1\" $UUID"
+# $1 action
+set_default() {
+    return
 }
 
-if [ -z "$MNTIMAGE" -o -z "$IMAGE" ]; then
-    error "Error creating temporaries.  Try again"
-    exit 1
-fi
-
-
-# Just get all the modules that are currently loaded
-# We're likely to need them
-for i in `lsmod | tail --lines=+2 | awk '{print $1}'`
-do
-    findmodule -$i skip
-    echo $MODULES | grep -q $i
-    if [ $? -ne 0 ]
-    then
-        ALTERNATE=`echo $i | sed -e's/_/-/g'`
-        findmodule $ALTERNATE skip
-    fi
-
-done
-
-
-#START BUILDING INITRD HERE
-mkdir -p $MNTIMAGE
-mkdir -p $MNTIMAGE/lib
-mkdir -p $MNTIMAGE/bin
-mkdir -p $MNTIMAGE/etc
-mkdir -p $MNTIMAGE/dev
-mkdir -p $MNTIMAGE/proc
-mkdir -p $MNTIMAGE/sys
-mkdir -p $MNTIMAGE/tmp
-mkdir -p $MNTIMAGE/sysroot
-mkdir -p $MNTIMAGE/modules
-mkdir -p $MNTIMAGE/usr/share/udhcpc
-mkdir -p $MNTIMAGE/var/run
-mkdir -p $MNTIMAGE/etc/network/if-pre-up.d
-mkdir -p $MNTIMAGE/etc/network/if-up.d
-mkdir -p $MNTIMAGE/etc/network/if-pre-down.d
-mkdir -p $MNTIMAGE/etc/network/if-down.d
-mkdir -p $MNTIMAGE/etc/network/if-post-down.d
-ln -s bin $MNTIMAGE/sbin
-
-if [ -n "$KDUMP_CONFIG_FILE" ]; then
-    while read config_opt config_val; do
+if [ -n "$conf_file" ]; then
+    while read config_opt config_val;
+    do
         case "$config_opt" in
-        net)
-            #grab remote host and xlate into numbers
-            rhost=`echo $config_val | sed 's/.*@//' | cut -d':' -f1`
-            USE_SSH=`echo $config_val | grep @`
-            if [ -n "$USE_SSH" ]; then
-                USING_METHOD="ssh"
-            else
-                USING_METHOD="nfs"
-            fi
-            need_dns=`echo $rhost|grep [a-zA-Z]`
-            [ -n "$need_dns" ] && rhost=`getent hosts $rhost|cut -d' ' -f1`
-
-            #find ethernet device used to route to remote host, ie eth0
-            netdev=`/sbin/ip route get to $rhost 2>&1`
-            [ $? != 0 ] && echo "Bad kdump location: $config_val" && exit 1 
-            #the field in the ip output changes if we go to another subnet
-            OFF_SUBNET=`echo $netdev | grep via`
-            if [ -n "$OFF_SUBNET" ]
-            then
-                # we are going to a different subnet
-                netdev=`echo $netdev|awk '{print $5;}'|head -n 1`
-            else
-                # we are on the same subnet
-                netdev=`echo $netdev|awk '{print $3}'|head -n 1`
-            fi
-           
-            #add the ethernet device to the list of modules 
-            mkdir -p $MNTIMAGE/etc/network/
-            handlenetdev $netdev
-            echo $netdev >> $MNTIMAGE/etc/iface_to_activate
-
-            #load nfs modules, if needed 
-            echo $config_val | grep -v "@" > /dev/null && findmodule nfs
-            ;;
-        raw)
-            USING_METHOD="raw"
-            if (echo $config_val | egrep -q "^(LABEL|UUID)="); then
-                config_val=$(findfs $config_val)
-            fi
-            handlelvordev $config_val
-            ;;
-        core_collector)
-            if [ -x /sbin/makedumpfile ]; then
-                CORE_COLLECTOR=$config_val
-                grep -q control_d /proc/xen/capabilities 2>/dev/null
-                if [ $? -eq 0 ]
-                then
-                    if [ -e /sys/kernel/vmcoreinfo ]
-                    then
-                        CORE_COLLECTOR=`echo $CORE_COLLECTOR | sed -e's/makedumpfile/makedumpfile --message-level 1/'`
-                    else
-                        CORE_COLLECTOR=`echo $CORE_COLLECTOR | sed -e's/makedumpfile/makedumpfile --xen-vmcoreinfo \/etc\/makedumpfile.config --message-level 1/'`
-                    fi
-                else
-                    if [ -e /sys/kernel/vmcoreinfo ]
-                    then
-                        CORE_COLLECTOR=`echo $CORE_COLLECTOR | sed -e's/makedumpfile/makedumpfile --message-level 1/'`
-                    else
-                        CORE_COLLECTOR=`echo $CORE_COLLECTOR | sed -e's/makedumpfile/makedumpfile -i \/etc\/makedumpfile.config --message-level 1/'`
-                    fi
-                fi
-            else
-                echo "Cannot use the core_collector option on this arch"
-                rm -rf $MNTIMAGE
-                rm -rf $IMAGE
-                rm -f $TMPDISKLIST
-                exit 1
-            fi
-            ;;
-        path)
-            SAVE_PATH=$config_val
-            ;;
-        link_delay)
-            LINK_DELAY=$config_val
-            ;;
-        kdump_post)
-            KDUMP_POST=$config_val
-            if [ ! -x "$KDUMP_POST" ]; then
-                echo "$KDUMP_POST not executable or not found"
-                exit 1
-            fi
-            bin="$bin $KDUMP_POST"
-            KDUMP_POST_INTERNAL=`echo $KDUMP_POST | sed -e's/\(^.*\/\)\(.*$\)/\/bin\/\2/'`
-            ;;
-        kdump_pre)
-            KDUMP_PRE=$config_val
-            if [ ! -x "$KDUMP_PRE" ]; then
-                echo "$KDUMP_PRE not executable or not found"
-                exit 1
-            fi
-            bin="$bin $KDUMP_PRE"
-            KDUMP_PRE_INTERNAL=`echo $KDUMP_PRE | sed -e's/\(^.*\/\)\(.*$\)/\/bin\/\2/'`
-            ;;
-        extra_bins)
-            bin="$bin $config_val"
-            ;;
         extra_modules)
-            extra_kdump_mods="$extra_kdump_mods $config_val"
+            extra_modules="$extra_modules $config_val"
             ;;
-        blacklist)
-            blacklist_mods="$blacklist_mods $config_val"
+        ext[234]|xfs|btrfs|minix)
+            dump_local "$config_val" 0
             ;;
-	options)
-	    ;;
-        default)
-            DEFAULT_ACTION=$config_val
-            case $DEFAULT_ACTION in
-                reboot|shell)
-                        FINAL_ACTION="reboot -f"
-                        ;;
-                halt)
-                        FINAL_ACTION="halt -f"
-                        ;;
-                poweroff)
-                        FINAL_ACTION="poweroff -f"
-                        ;;
-            esac
+        raw)
+            dump_local "$config_val" 1
             ;;
-        disk_timeout)
-            DISK_TIMEOUT=$config_val
+        net)
+            add_dracut_arg "--add network"
+            dump_remote "$config_val"
             ;;
         *)
-            IS_COMMENT=`echo $config_opt | grep "^#.*$"`
-            if [ -n "$IS_COMMENT" -o -z "$config_opt" ]
+            if [ -n $(echo $config_opt | grep "^#.*$") ]
             then
-                     #don't process comments or blank line
-                     continue
-            fi
-	    let grep_rc=0
-            echo $config_opt | grep -q "ext[234]"
-            ga_rc=$?
-            echo $config_opt | grep -q "minix"
-            gb_rc=$?
-            echo $config_opt | grep -q "xfs"
-            gc_rc=$?
-            echo $config_opt | grep -q "btrfs"
-            gd_rc=$?
-            if [ $ga_rc -ne 0 -a $gb_rc -ne 0 -a $gc_rc -ne 0 -a $gd_rc -ne 0 ]
-            then
-                echo "Unknown parameter " $config_opt
-                exit 1
-            fi
-            USING_METHOD="filesystem"
-            if (echo $config_val | egrep -q "^(LABEL|UUID)="); then
-                config_val=$(findfs $config_val)
+                continue
             fi
-            handlelvordev $config_val
+            dump_local ""
             ;;
         esac
-
-    done < $KDUMP_CONFIG_FILE
-fi
-
-#if we are using makedumpfile here, then generate the config file
-#also only build this config if we don't have vmcoreinfo on this kernel
-if [ -n "$CORE_COLLECTOR" -a ! -e /sys/kernel/vmcoreinfo ]; then
-    if [ -z "$USING_METHOD" ]
-    then
-        echo "Warning!  Lack of dump target specification means core_collector option is ignored!"
-        CORE_COLLECTOR=""
-    else
-        RUN_KERN_VER=`uname -r`
-        if [ ! -f /usr/lib/debug/lib/modules/$RUN_KERN_VER/vmlinux ]
-        then
-            echo "kernel-debuginfo-$RUN_KERN_VER is not installed.  You need this to use makedumpfile!"
-            echo "please install it and restart the kdump service"
-            rm -rf $MNTIMAGE
-            rm -rf $IMAGE
-            rm -f $TMPDISKLIST
-            exit 1
-        fi
-        XEN_OPTS=""
-        grep -q control_d /proc/xen/capabilities 2>/dev/null
-        if [ $? -eq 0 ]
-        then
-            # This is a dom0 xen kernel so we need to add xen-syms to the
-            # makedumpefile config
-            RUN_XEN_VER=${RUN_KERN_VER%xen}
-            if [ ! -f /usr/lib/debug/boot/xen-syms-$RUN_XEN_VER.debug ]
-            then
-                echo "xen-syms.debug not found and is needed on this kernel to use makedumpfile!"
-                echo "please install it and restart the kdump service"
-                rm -rf $MNTIMAGE
-                rm -rf $IMAGE
-                rm -f $TMPDISKLIST
-                exit 1
-            fi
-
-            XEN_OPTS="--xen-syms /usr/lib/debug/boot/xen-syms-$RUN_XEN_VER.debug"
-            /sbin/makedumpfile -g $MNTIMAGE/etc/makedumpfile.config $XEN_OPTS  > /dev/null 2>&1
-        else
-            /sbin/makedumpfile -g $MNTIMAGE/etc/makedumpfile.config -x /usr/lib/debug/lib/modules/$RUN_KERN_VER/vmlinux > /dev/null 2>&1
-        fi
-        if [ $? != 0 ]; then
-            echo "could not generate makedumpfile configuration.  aborting"
-            rm -rf $MNTIMAGE
-            rm -rf $IMAGE
-            rm -f $TMPDISKLIST
-            exit 1;
-        fi
-    fi
-fi
-
-#include extra user-specified modules for kdump initrd
-for n in $extra_kdump_mods; do
-    findmodule $n
-done
-
-# After we get all the modules, lets depsolve the list
-# so that we load them in proper order
-depsolve_modlist
-
-for n in $blacklist_mods; do 
-    do_blacklist $n 
-done
-
-if [ -z "$FINAL_ACTION" ]; then
-    FINAL_ACTION="reboot -f"
-else
-    if [ -z "$USING_METHOD" ]; then
-        echo "Warning!  Lack of dump target specification means default option is ignored!"
-        DEFAULT_ACTION=""
-        FINAL_ACTION="reboot -f"
-    fi
-fi
-	
-#copy in busybox and make symlinks to its supported utilities
-cp /sbin/busybox $MNTIMAGE/sbin/busybox
-bin="$bin /sbin/busybox"
-cd $MNTIMAGE/sbin
-for i in `/sbin/busybox | 
-        awk 'BEGIN {found=0} /.*/ { if (found) print $0 } /Currently/ {found=1}' | 
-        sed -e's/,//g' -e's/busybox//g'`
-do
-        ln -s busybox $MNTIMAGE/sbin/$i
-done
-cd - > /dev/null 2>&1
-
-if [ -f /etc/mdadm.conf ]
-then
-        cp /etc/mdadm.conf $MNTIMAGE/etc
-        bin="$bin /sbin/mdadm"
-        for i in `cat /etc/mdadm.conf | grep ARRAY | sed -e's/\(^.*level=\)\(.*$\)/\2/' | cut -d" " -f1`
-        do
-            findmodule $i
-        done
-fi
-
-# we need the fstab file so that we can fsck properly
-cp /etc/fstab $MNTIMAGE/etc/fstab
-bin="$bin /sbin/fsck.ext2 /sbin/fsck.ext3 /sbin/fsck.ext4"
-
-#this provides us with a list of disks that we need to make sure we have available before we capture our core
-# don't block on cciss or md devices, parsing them in sysfs takes a special case and they are there
-# as soon as the driver loads
-egrep -v '(^cciss|^md)' $TMPDISKLIST > $MNTIMAGE/etc/critical_disks
-rm -f $TMPDISKLIST
-
-#THIS IS WHERE WE GENERATE OUR ADDITINONAL UTILITIES
-#Busybox doesn't have a /bin/sh applet, 
-#so we build a reasonable faximilie here
-cat >> $MNTIMAGE/bin/sh << EOF
-#!/bin/msh
-#drop the -c from the command line
-shift 1
-#now execute the passed command
-#don't exec this or $@ won't work
-/bin/msh -c "\$@"
-EOF
-
-chmod 755 $MNTIMAGE/bin/sh
-
-cat >> $MNTIMAGE/usr/share/udhcpc/default.script << EOF
-#!/bin/msh
-[ -z "\$1" ] && echo "Error: should be called from udhcpc" && exit 1
-
-
-case "\$1" in
-    deconfig)
-        /sbin/ifconfig \$interface 0.0.0.0
-        ;;
-
-    renew|bound)
-        /sbin/ifconfig \$interface \$ip netmask \$subnet
-
-        if [ -n "\$router" ] ; then
-            echo "deleting routers"
-            while route del default gw 0.0.0.0 dev \$interface ; do
-                :
-            done
-
-            for i in \$router ; do
-                route add default gw \$i dev \$interface
-            done
-        fi
-
-        echo -n > /etc/resolv.conf 
-        [ -n "\$domain" ] && echo search $domain >> /etc/resolv.conf 
-        for i in \$dns ; do
-            echo adding dns \$i
-            echo nameserver \$i >> /etc/resolv.conf 
-        done
-        ;;
-
-    *)
-        echo "Unable to get a DHCP address retry..."
-        exit 1
-        ;;
-esac
-
-exit 0
-EOF
-
-#NETWORKING SCRIPT DIRECTORIES
-cat >> $MNTIMAGE/etc/network/if-pre-up.d/pre-up-script << EOF
-#!/bin/msh
-PATH=\$PATH:/scriptfns
-. /etc/ifcfg-\$IFACE
-
-LINK_DELAY=$LINK_DELAY
-if [ "\$BUS_ID" != "Vlan" ]
-then
-    ifconfig \$IFACE up
-    if [ -n "\$LINK_DELAY" ]
-    then
-        echo "\$IFACE Link Up.  Waiting \$LINK_DELAY Seconds"
-        sleep \$LINK_DELAY
-        echo "Continuing"
-    fi
-fi
-
-if [ "\$BUS_ID" == "Bonding" ]
-then
-    #this is a bond find and bring up the slaves
-    echo searching for slaves
-    find_activate_slaves \$IFACE
-elif [ "\$BUS_ID" == "Vlan" ]
-then
-    #bring up the base interface first
-    BASE_DEV=\`echo \$IFACE | cut -d"." -f1\`
-    VLAN_ID=\`echo \$IFACE | cut -d"." -f2\`
-    ifconfig \$BASE_DEV up
-    if [ -n "\$LINK_DELAY" ]
-    then
-        echo "\$IFACE Link Up.  Waiting \$LINK_DELAY Seconds"
-        sleep \$LINK_DELAY
-        echo "Continuing"
-    fi  
-    vconfig add \$BASE_DEV \$VLAN_ID
-    ifconfig \$IFACE up
-fi
-exit 0
-EOF
-
-for i in `ls $MNTIMAGE/etc/network/if-pre-up.d`
-do
-    chmod 755 $MNTIMAGE/etc/network/if-pre-up.d/$i
-done
-
-cat >> $MNTIMAGE/etc/network/if-up.d/up-script << EOF
-#!/bin/msh
-PATH=\$PATH:/scriptfns
-if [ "\$METHOD" != "dhcp" ]
-then
-    . /etc/ifcfg-\$IFACE
-    ifconfig \$IFACE \$IPADDR netmask \$NETMASK
-    route add default gw \$GATEWAY dev \$IFACE
-fi
-exit 0
-EOF
-
-for i in `ls $MNTIMAGE/etc/network/if-up.d`
-do
-    chmod 755 $MNTIMAGE/etc/network/if-up.d/$i
-done
-
-chmod 755 $MNTIMAGE/usr/share/udhcpc/default.script
-
-# WE DONT HAVE FUNCTIONS AVAILABLE IN MSH
-# SO WE IMPLEMENT THEM HERE AS scripts
-SCRIPTDIR=$MNTIMAGE/scriptfns
-mkdir -p $SCRIPTDIR
-
-cat >> $SCRIPTDIR/map_interface << EOF
-#!/bin/msh
-if [ -e /tmp/tmpcnt ]
-then
-    TMPCNT=\`cat /tmp/tmpcnt\`
-else
-    TMPCNT=0
-fi
-#erase previously recorded map
-RENAMED=""
-REAL_DEV=""
-NETDEV=\$1
-. /etc/ifcfg-\$NETDEV
-for j in \`ifconfig -a | awk '/.*Link encap.*/ {print \$1}'\`
-do
-    case "\$BUS_ID" in
-    Bonding)
-        REAL_DEV=bond0
-        RENAMED="yes"
-        ;;
-    Vlan)
-        BASE_DEV=\`echo \$NETDEV | cut -d"." -f1\`
-        VLAN_ID=\`echo \$NETDEV | cut -d"." -f2\`
-        REAL_BASE=\`grep "^\$BASE_DEV " /etc/iface_map | cut -d" " -f2\` 
-        #Note we add the \ to our vlan values to escape the . for sed-ability
-        #Note we also convert . to _ to avoid problems with busybox ifup
-        REAL_DEV=\$REAL_BASE\\\\.\$VLAN_ID
-        NETDEV=\$BASE_DEV\\\\.\$VLAN_ID
-        RENAMED="yes"
-        ;;
-    *)
-        INFO=\`ls -l /sys/class/net/\$j/device 2>/dev/null |  sed -e's/\\(.*\\/\\)\\(.*$\\)/\\2/'\`
-        if [ "\$INFO" == "\$BUS_ID" -a -z "\$REAL_DEV" ]
-        then
-            REAL_DEV=\$j
-            RENAMED="yes"
-        fi
-        ;;
-    esac
-done
-
-if [ -z "\$RENAMED" ]
-then
-    echo "Could not find a mapping for device \$NETDEV"
-    exit 1
-fi
-
-#build the interface rename map
-echo \$NETDEV \$REAL_DEV tmp\$TMPCNT >> /etc/iface_map
-TMPCNT=\`echo \$TMPCNT 1 + p | dc\`
-echo \$TMPCNT > /tmp/tmpcnt
-echo mapping \$NETDEV to \$REAL_DEV
-EOF
-
-cat >> $SCRIPTDIR/rename_interfaces << EOF
-#!/bin/msh
-MAP_COUNT=\`wc -l /etc/iface_map | cut -d" " -f7 \`
-#now do all the renaming - first to temp space
-for j in \`seq 1 1 \$MAP_COUNT\`
-do
-    CURRENT=\`awk -v MATCH=\$j '{if (NR == MATCH) print \$1}' /etc/iface_map\`
-    NEW=\`awk -v MATCH=\$j '{if (NR == MATCH) print \$2}' /etc/iface_map\`
-    INTERIM=\`awk -v MATCH=\$j '{if (NR == MATCH) print \$3}' /etc/iface_map\`
-    mv /etc/ifcfg-\$CURRENT /etc/ifcfg-\$INTERIM
-    for i in /etc/ifcfg-\$INTERIM /etc/iface_to_activate /etc/network/interfaces
-    do
-        # the double quotes lets us expand the variables
-        sed -e"s/\$CURRENT/\$INTERIM/g" \$i > \$i.tmp
-        mv \$i.tmp \$i
-    done
-done
- 
-
-for j in \`seq 1 1 \$MAP_COUNT\`
-do
-    CURRENT=\`awk -v MATCH=\$j '{if (NR == MATCH)  print \$1}' /etc/iface_map\`
-    NEW=\`awk -v MATCH=\$j '{if (NR == MATCH) print \$2}' /etc/iface_map\`
-    INTERIM=\`awk -v MATCH=\$j '{if (NR == MATCH) print \$3}' /etc/iface_map\`
-    mv /etc/ifcfg-\$INTERIM /etc/ifcfg-\$NEW
-    for i in /etc/ifcfg-\$NEW /etc/iface_to_activate /etc/network/interfaces
+    done < $conf_file
+    #Now parse the default actions
+    while read config_opt config_val;
     do
-        # the double quotes lets us expand the variables
-        sed -e"s/\$INTERIM/\$NEW/g" \$i > \$i.tmp
-        mv \$i.tmp \$i
-    done
-done < /etc/iface_map
-
-exit 0
-EOF
-
-cat >> $SCRIPTDIR/find_activate_slaves << EOF
-#!/bin/msh
-BOND_MASTER=\$1
-
-for j in \`ifconfig -a | awk '/.*Link encap.*/ {print \$1}'\`
-do
-    MASTER=""
-    . /etc/ifcfg-\$j
-    if [ "\$MASTER" == "\$BOND_MASTER" ]
-    then
-        #this is a slave of the rising interface
-        echo enslaving \$j to \$BOND_MASTER
-        echo +\$j > /sys/class/net/\$BOND_MASTER/bonding/slaves
-    fi
-done
-EOF
-
-cat >> $SCRIPTDIR/monitor_dd_progress << EOF
-#!/bin/msh
-SRC_FILE_SIZE=\`ls -l /proc/vmcore | awk '{print \$5}'\`
-BLOCK_SIZE=\$1
-SRC_FILE_MB=\`dc \$SRC_FILE_SIZE 1048576 / p\`
-
-while true
-do
-        DD_PID=\`ps | grep -v awk | awk '/dd/ {print \$1}'\`
-        if [ -n "\$DD_PID" ]
-        then
-                break
-        fi
-done
-
-while true
-do
-        sleep 5
-        if [ ! -d /proc/\$CP_PID ]
-        then
-                break
-        fi
-
-        kill -SIGUSR1 \$DD_PID
-        CURRENT_SIZE=\`tail -n 1 /tmp/dd_progress_file | sed "s/[^0-9].*//g"\`
-        CURRENT_MB=\`dc \$CURRENT_SIZE \$BLOCK_SIZE \* 1048576 / p\`
-        echo -n -e "Copied \$CURRENT_MB MB / \$SRC_FILE_MB MB\\\r"
-done
-
-rm -f /tmp/dd_progres_file
-EOF
-
-cat >> $SCRIPTDIR/monitor_scp_progress << EOF
-#!/bin/msh
-SRC_FILE_SIZE=\`ls -l /proc/vmcore | awk '{print \$5}'\`
-LOCATION=\$1
-REMOTE_FILE=\$2
-
-SRC_FILE_MB=\`dc \$SRC_FILE_SIZE 1048576 / p\`
-
-while true
-do
-        SCP_PID=\`ps | grep -v awk | awk '/scp/ {print \$1}'\`
-        if [ -n "\$SCP_PID" ]
-        then
-                break
-        fi
-done
-
-while true
-do
-        sleep 5
-        if [ ! -d /proc/\$SCP_PID ]
-        then
-                break
-        fi
-
-        SSH_OUTPUT=\`ssh -q -o BatchMode=yes -o StrictHostKeyChecking=no \$LOCATION ls -l \$REMOTE_FILE\`
-        REMOTE_SIZE=\`echo \$SSH_OUTPUT | awk '{print \$5}'\`
-        REMOTE_SIZE_MB=\`dc \$REMOTE_SIZE 1048576 / p\`
-        echo -n -e "Copied \$REMOTE_SIZE_MB MB / \$SRC_FILE_MB MB\\\r"
-done
-
-EOF
-
-cat >> $SCRIPTDIR/monitor_cp_progress <<EOF
-#!/bin/msh
-SRC_FILE_SIZE=\`ls -l /proc/vmcore | awk '{print \$5}'\`
-DST_FILE=\$1
-
-SRC_FILE_MB=\`dc \$SRC_FILE_SIZE 1048576 / p\`
-
-while true
-do
-        CP_PID=\`ps | grep -v awk | awk '/cp / {print \$1}'\`
-        if [ -n "\$CP_PID" ]
-        then
-                break
-        fi
-done
-
-while true
-do
-        sleep 5
-        if [ ! -d /proc/\$CP_PID ]
-        then
-                break
-        fi
-
-        LS_SIZE=\`ls -l \$DST_FILE | awk '{print \$5}'\`
-        LS_MB=\`dc \$LS_SIZE 1048576 / p\`
-        echo -n -e "Copied \$LS_MB MB / \$SRC_FILE_MB MB\\\r"
-done
-
-EOF
-
-cat >> $SCRIPTDIR/handle_event <<EOF
-#!/bin/msh
-
-FIRMWARE_DIRS="/lib/firmware"
-
-if [ "\$ACTION" != "add" ]
-then
-	exit 0
-fi
-
-if [ "\$SUBSYSTEM" != "firmware" ]
-then
-	exit 0
-fi
-
-for DIR in \$FIRMWARE_DIRS; do
-	if [ ! -f \$DIR/\$FIRMWARE ]
-	then
-		continue
-	fi
-	echo 1 > /sys\$DEVPATH/loading
-	cat "\$DIR/\$FIRMWARE" > /sys\$DEVPATH/data
-	echo 0 > /sys\$DEVPATH/loading
-	exit 0
-done
-
-EOF
-
-#DONT ADD STUFF to SCRIPTDIR PAST HERE
-for i in `ls $SCRIPTDIR/*`
-do
-    chmod 755 $i
-done
-
-if [ -e /etc/fstab.sys ]; then
-    inst /etc/fstab.sys "$MNTIMAGE/etc/fstab.sys"
-fi
-
-#build a good passwd file
-cat >> $MNTIMAGE/etc/passwd << EOF
-root:x:0:0:root:/root:/bin/bash
-EOF
-
-for MODULE in $MODULES; do
-    if [ -x /usr/bin/strip ]; then
-	/usr/bin/strip -g $verbose $MODULE -o $MNTIMAGE/lib/$(basename $MODULE)
-    else
-	cp $verbose -a $MODULE $MNTIMAGE/lib
-    fi
-done
-
-# mknod'ing the devices instead of copying them works both with and
-# without devfs...
-mkdir $MNTIMAGE/dev/mapper
-
-mknod $MNTIMAGE/dev/ram0 b 1 0
-mknod $MNTIMAGE/dev/ram1 b 1 1
-ln -sf ram1 $MNTIMAGE/dev/ram
-
-mknod $MNTIMAGE/dev/null c 1 3
-mknod $MNTIMAGE/dev/zero c 1 5
-mknod $MNTIMAGE/dev/systty c 4 0
-for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 ; do
-    mknod $MNTIMAGE/dev/tty$i c 4 $i
-done
-for i in 0 1 2 3 ; do
-    mknod $MNTIMAGE/dev/ttyS$i c 4 $(($i + 64))
-done
-mknod $MNTIMAGE/dev/tty c 5 0
-mknod $MNTIMAGE/dev/console c 5 1
-mknod $MNTIMAGE/dev/ptmx c 5 2
-if [ "$(uname -m)" == "ia64" ]; then
-    mknod $MNTIMAGE/dev/efirtc c 10 136
-fi
-
-# FIXME -- this can really go poorly with clvm or duplicate vg names.
-# nash should do lvm probing for us and write its own configs.
-if [ -n "$vg_list" ]; then
-    inst /sbin/lvm "$MNTIMAGE/bin/lvm"
-    bin="$bin /sbin/lvm"
-    if [ -f /etc/lvm/lvm.conf ]; then
-	cp $verbose --parents /etc/lvm/lvm.conf $MNTIMAGE/
-    fi
-fi
-
-# Firmware, we need to suck it all in, just in case...
-mkdir -p $MNTIMAGE/lib/firmware
-cp -r /lib/firmware/* $MNTIMAGE/lib/firmware/
-
-echo -n >| $RCFILE
-cat >> $MNTIMAGE/init << EOF
-#!/bin/msh
-export PATH=$PATH:/scriptfns
-mount -t proc /proc /proc
-echo Mounting proc filesystem
-echo Mounting sysfs filesystem
-mount -t sysfs /sys /sys
-echo "/scriptfns/handle_event" > /sys/kernel/uevent_helper
-echo 1 > /proc/sys/vm/dirty_background_ratio
-echo 5 > /proc/sys/vm/dirty_ratio
-echo 10 > /proc/sys/vm/dirty_writeback_centisecs
-echo 50 > /proc/sys/vm/dirty_expire_centisecs
-echo Creating /dev
-mount -o mode=0755 -t tmpfs /dev /dev
-mkdir /dev/pts
-mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
-mkdir /dev/shm
-mkdir /dev/mapper
-echo Creating initial device nodes
-mknod /dev/null c 1 3
-mknod /dev/zero c 1 5
-mknod /dev/systty c 4 0
-mknod /dev/tty c 5 0
-mknod /dev/console c 5 1
-mknod /dev/ptmx c 5 2
-mknod /dev/rtc c 254 0
-mknod /dev/urandom c 1 9
-EOF
-
-# XXX really we need to openvt too, in case someting changes the
-# color palette and then changes vts on fbcon before gettys start.
-# (yay, fbcon bugs!)
-for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 ; do
-    emit "mknod /dev/tty$i c 4 $i"
-done
-
-for i in 0 1 2 3 ; do
-    emit "mknod /dev/ttyS$i c 4 $(($i + 64))"
-done
-emit "mknod /dev/mem c 1 1"
-for MODULE in $MODULES; do
-    text=""
-    module=`echo $MODULE | sed "s|.*/||" | sed "s/.k\?o$//"`
-    fullmodule=`echo $MODULE | sed "s|.*/||"`
-
-    options=`sed -n -e "s/^options[ 	][ 	]*$module[ 	][ 	]*//p" $modulefile 2>/dev/null`
-    if [ -f "$KDUMP_CONFIG_FILE" ]; then
-        options2=`sed -n -e "s/^options[    ][      ]*$module[      ][      ]*//p" $KDUMP_CONFIG_FILE 2>/dev/null`
-        # Overwrite options if option is specified in kdump.conf
-        if [ -n "$options2" ]; then
-            options=$options2
-        fi
-    fi
-
-    if [ -n "$options" ]; then
-        vecho "Adding module $module$text with options $options"
-    else
-        vecho "Adding module $module$text"
-    fi
-    emit "echo \"Loading $fullmodule module\""
-    emit "insmod /lib/$fullmodule $options"
-
-    # Hack - we need a delay after loading usb-storage to give things
-    #        time to settle down before we start looking a block devices
-    if [ "$module" = "usb-storage" ]; then
-	emit "echo Waiting 8 seconds for driver initialization."
-	emit "sleep 8"
-    fi
-    if [ "$module" = "zfcp" -a -f /etc/zfcp.conf ]; then
-	emit "echo Waiting 2 seconds for driver initialization."
-        emit "sleep 2"
-        cat /etc/zfcp.conf | grep -v "^#" | tr "A-Z" "a-z" | while read DEVICE SCSIID WWPN SCSILUN FCPLUN; do
-        cemit <<EOF 
-echo -n $WWPN > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/port_add
-echo -n $FCPLUN > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/$WWPN/unit_add
-echo -n 1 > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/online
-EOF
-        done
-    fi
-done
-
-
-# Before we create our block devices, we need to make sure that we have all the needed block devices discovered
-# Thats seems like a chicken and egg problem, I know, but we generated  a critcal_disks list when we build this initramfs
-# that tell us what devices we need to wait to see in /sys/block
-
-cat >> $MNTIMAGE/init << EOF
-echo "Waiting for required block device discovery"
-timeout_count=0
-for i in \`cat /etc/critical_disks\`
-do
-    echo -n Waiting for \$i...
-    while [ ! -d /sys/block/\$i ]
-    do
-        sleep 1
-        if [ -n "$DISK_TIMEOUT" -a "\$timeout_count" -ge "$DISK_TIMEOUT" ]
-        then
-            break 2
-        fi
-        timeout_count=\`expr \$timeout_count + 1\`
-    done
-    echo Found
-done
-EOF
-    
-# HACK: module loading + device creation isn't necessarily synchronous...
-# this will make sure that we have all of our devices before trying
-# things like RAID or LVM
-emit "echo Creating Block Devices"
-emit "mkdir /dev/cciss"
-emit "mkdir /dev/ida"
-emit "for i in \`ls /sys/block\`; do"
-emit "  MAJOR_NUM=\`cat /sys/block/\$i/dev | cut -d":" -f1\`"
-emit "  MINOR_NUM=\`cat /sys/block/\$i/dev | cut -d":" -f2\`"
-emit "  MINOR_RANGE=\`cat /sys/block/\$i/range | cut -d":" -f2\`"
-emit "  PART_SEP=''"
-emit "  i=\`echo \$i | sed 's/\!/\//g'\`"
-emit "  if echo \$i | grep -q '^cciss'; then"
-emit "      PART_SEP='p'"
-emit "  elif echo \$i | grep -q '^ida'; then"
-emit "      PART_SEP='p'"
-emit "  fi"
-emit "  echo Creating block device \$i"
-emit "  mknod /dev/\$i b \$MAJOR_NUM \$MINOR_NUM"
-emit "  if [ \"\$MINOR_RANGE\" -gt 1 ]"
-emit "  then"
-emit "    MINOR_END=\`echo \$MINOR_NUM \$MINOR_RANGE + p | dc\`"
-emit "    MINOR_START=\`echo \$MINOR_NUM 1 + p | dc\`"
-emit "    PART_NUM=1"
-emit "    for j in \`seq \$MINOR_START 1 \$MINOR_END\`"
-emit "    do"
-emit "       if [ ! -e /dev/\$i\$PART_NUM ]"
-emit "       then"
-emit "            mknod /dev/\$i\$PART_SEP\$PART_NUM b \$MAJOR_NUM \$j"
-emit "       fi"
-emit "       PART_NUM=\`expr \$PART_NUM + 1\`"
-emit "    done"
-emit "  fi"
-emit "done"
-#now do any software raid devices we might have
-emit "if [ -f /etc/mdadm.conf ]"
-emit "then"
-emit "  for i in \`awk '/.*ARRAY.*/{print \$2}' /etc/mdadm.conf\`"
-emit "  do"
-emit "          MD_MIN=\`echo \$i | sed -e's/\(^.*\)\([0-9]\+$\)/\2/'\`"
-emit "          mknod \$i b 9 \$MD_MIN"
-emit "  done"
-emit "fi"
-
-if [ -n "$vg_list" ]; then
-    emit "echo Making device-mapper control node"
-    emit "DM_MAJ=\`cat /proc/devices | grep misc | cut -d\" \" -f2\`"
-    emit "DM_MIN=\`cat /proc/misc | grep device-mapper | cut -d\" \" -f2\`"
-    emit "mknod /dev/mapper/control b \$DM_MAJ \$DM_MIN"
-fi
-
-if [ -n "$net_list" ]; then
-    for netdev in $net_list; do 
-	emit "echo Bringing up $netdev"
-	handle_netdev $netdev
-	#emit $network
-    done
-fi
-
-if [ -n "$raiddevices" ]; then
-    for dev in $raiddevices; do
-	cp -a /dev/${dev} $MNTIMAGE/dev
-	emit "\#need code here to set up md devs"
-    done
-fi
-
-emit "if [ -f /etc/mdadm.conf ]"
-emit "then"
-emit "  mdadm -A -s"
-emit "fi"
-
-if [ -n "$vg_list" ]; then
-    emit "echo Scanning logical volumes"
-    emit "lvm vgscan --ignorelockingfailure --mknodes"
-    emit "echo Activating logical volumes"
-    emit "lvm vgchange -a y --ignorelockingfailure"
-    emit "DM_NUM=0"
-    emit "for i in \`lvm lvs --noheadings -o lv_name,vg_name | sed -e's/ \\+/:/g'\`"
-    emit "do"
-    emit "   LV=\`echo \$i | awk -F\":\" '{ print \$2 }'\`"
-    emit "   VGRP=\`echo \$i | awk -F\":\" '{ print \$3 }'\`"
-    emit "   mkdir -p /dev/\$VGRP"
-    emit "   if [ ! -e /dev/\$VGRP/\$LV ]"
-    emit "   then"
-    emit "      ln -s /dev/mapper/\$VGRP-\$LV /dev/\$VGRP/\$LV"
-    emit "      DM_NUM=\`echo \$DM_NUM 1 + p | dc\`"
-    emit "      if [ -z \"\$noresume\" ]"
-    emit "      then"
-    emit "        /sbin/dmsetup.static resume /dev/mapper/\$VGRP-\$LV"
-    emit "      fi"
-    emit "   fi"
-    emit "done"
-fi
-
-kdump_chk()
-{
-    rc=`eval $1` && return $rc
-    echo "$KDUMP_CONFIG_FILE: $2"
-    exit 1
-}
-
-if [ -n "$KDUMP_CONFIG_FILE" ]; then
-    memtotal=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`
-    
-    #timezone info for date which outputs YYYY-MM-DD-hh:mm
-    cp /etc/localtime $MNTIMAGE/etc/localtime
-    cp /etc/sysconfig/clock $MNTIMAGE/etc
-    emit ". /etc/clock"
-    emit " if [ \"\$UTC\" == "true" ]"
-    emit " then"
-    emit "    TIME_FORMAT=-u"
-    emit " else"
-    emit "    TIME_FORMAT=-l"
-    emit "fi"
-    emit "hwclock --hctosys \$TIME_FORMAT"
-    emit "DATE=\`date +%Y-%m-%d-%T\`"
-
-    bin="$bin /sbin/dmsetup /sbin/kpartx" 
-
-    if [ -n "$CORE_COLLECTOR" ]; then
-        bin="$bin /sbin/makedumpfile"
-    fi
-
-    #ssh, scp require libraries that aren't found with ldd
-    ARCH=`uname -m`
-    lib=/lib && [ -d "/lib64" -a "$ARCH" != "ppc64" ] && lib=/lib64
-    k_extras="/$lib/libnss_compat.so.2 /$lib/libnss_files.so.2"
-
-    #traverse the config file and setup each dump location
-    while read config_opt config_val; do
-            [ -z "$config_opt" ] && continue  #skip empty lines
-            [ "`echo $config_opt | grep ^# `" ] && continue #skip comments
-            kdump_chk "test -n \"$config_val\"" "Need a location for $config_opt"
-
-            case "$config_opt" in
-                \#*) continue;;    #skip comments
-
-                raw)
-                    #test raw partition
-                    kdump_chk "dd if=$config_val count=1 of=/dev/null > /dev/null 2>&1" \
-                               "Bad raw partition $config_val"
-                    #check for available size is greater than $memtotal
-                    available_size=$(fdisk -s $config_val)
-                    if [ $available_size -lt $memtotal ]; then
-                        echo "Warning: There is not space enough to save a vmcore."
-                        echo "         The size of $config_val should be much greater than $memtotal kilo bytes."
-                    fi
-
-                    #setup raw case
-                    if [ -n "$KDUMP_PRE" ]
-                    then
-                        emit "$KDUMP_PRE"
-                        emit "if [ \$? -ne 0 ]"
-                        emit "then"
-                        emit "  echo kdump_pre script exited with non-zero status"
-                        emit "  $FINAL_ACTION"
-                        emit "fi"
-                    fi
-                    emit "echo Saving to partition $config_val"
-                    emit "monitor_dd_progress 512 &"
-                    if [ -z "$CORE_COLLECTOR" ]
-                    then
-                        emit "dd if=/proc/vmcore of=$config_val bs=512 >> /tmp/dd_progress_file 2>&1"
-                    else
-                            CORE_COLLECTOR=`echo $CORE_COLLECTOR | sed -e's/\(^makedumpfile\)\(.*$\)/\1 -F \2/'`
-                            emit "$CORE_COLLECTOR /proc/vmcore | dd of=$config_val bs=512 >> /tmp/dd_progress_file 2>&1"
-                    fi
-                    emit "exitcode=\$?"
-                    emit "if [ \$exitcode == 0 ]"
-                    emit "then"
-                    emit "  echo -e \"\\\033[0JSaving core complete\""
-                    emit "fi"
-                    emit "sync"
-                    if [ -x "$KDUMP_POST" ]; then
-                        emit "$KDUMP_POST \$exitcode"
-                    fi
-                    emit "[ \$exitcode == 0 ] && $FINAL_ACTION"
-                    ;;
-
-                net)
-                    #build an /etc/passwd for scp to work properly
-                    grep "^root" /etc/passwd > $MNTIMAGE/etc/passwd
-
-                    # bring up the network
-                    emit "for i in \`ls /etc/ifcfg-*\`"
-                    emit "do"
-                    emit "   NETDEV=\`echo \$i | cut -d\"-\" -f2\`"
-                    emit "   map_interface \$NETDEV"
-                    emit "done"
-                    emit "rename_interfaces"
-                    emit "IFACE=\`cat /etc/iface_to_activate\`"
-                    emit "ifup \$IFACE"
-                    #lets make sure we're up
-                    emit "IFADDR=\`ifconfig \$IFACE | awk '/inet addr/ {print \$2}' | cut -d\":\" -f 2\`"
-                    emit "if [ -z \"\$IFADDR\" ]"
-                    emit "then"
-                    emit "  echo \"\$IFACE failed to come up\""
-                    if [ "$DEFAULT_ACTION" == "shell" ]
-                    then
-                        emit "  echo \"Dropping to shell. exit to reboot\""
-                        emit "  /bin/msh"
-                    fi
-                    emit "  $FINAL_ACTION"
-                    emit "fi"
-                    #grab remote host and xlate into numbers
-                    rhost=`echo $config_val | sed 's/.*@//' | cut -d':' -f1`
-                    need_dns=`echo $rhost|grep [a-zA-Z]`
-                    [ -n "$need_dns" ] && rhost=`getent hosts $rhost|cut -d' ' -f1`
-
-                    #find the local ip being used as a route to remote ip
-                    netdev=`/sbin/ip route get to $rhost 2>&1`
-                    [ $? != 0 ] && echo "Bad kdump location: $config_val" && exit 1 
-                    OFF_SUBNET=`echo $netdev | grep via`
-                    if [ -n "$OFF_SUBNET" ]
-                    then
-                        # we are going to a different subnet
-                        lhost=`echo $netdev|awk '{print $7}'|head -n 1`
-                    else
-                        # we are on the same subnet
-                        lhost=`echo $netdev|awk '{print $5}'|head -n 1`
-                    fi
- 
-                    emit "echo Saving to remote location $config_val"
-                    if [ -z "`echo $config_val|grep @`" ]; then
-                        #NFS path
-                        #test nfs mount and directory creation
-                        rlocation=`echo $config_val| sed 's/.*:/'"$rhost"':/'`
-                        tmnt=`mktemp -dq`
-                        kdump_chk "mount -t nfs -o nolock $rlocation $tmnt" \
-                                   "Bad NFS mount $config_val"
-                        mkdir -p $tmnt/$SAVE_PATH
-                        tdir=`mktemp -dqp $tmnt/$SAVE_PATH`
-                        available_size=$(df -P $tdir | tail -1 | tr -s ' ' ':' | cut -d: -f5)
-
-                        rc=$? && rm -rf $tdir 
-                        umount $tmnt
-                        if [ $? != 0 ]; then
-                            echo "Cannot unmount the temporary directory"
-                            exit 1
-                        fi
-                        rm -rf $tmnt
-                        if [ $rc != "0" ]; then 
-                            echo "Cannot create directory in $config_val: $SAVE_PATH"
-                            exit 1 
-                        fi
-
-                        if [ -z "$CORE_COLLECTOR" ]; then
-                            CORE_COLLECTOR="cp"
-                        fi
-
-                        #check for available size is greater than $memtotal
-                        if [ $available_size -lt $memtotal ]; then
-                            echo "Warning: There is not space enough to save a vmcore."
-                            echo "         The size of $config_val should be much greater than $memtotal kilo bytes."
-                        fi
-    
-                        #setup nfs case
-                        if [ -n "$KDUMP_PRE" ]
-                        then
-                            emit "$KDUMP_PRE"
-                            emit "if [ \$? -ne 0 ]"
-                            emit "then"
-                            emit "  echo kdump_pre script exited with non-zero status"
-                            emit "  $FINAL_ACTION"
-                            emit "fi"
-                        fi
-        
-                        mkdir -p $MNTIMAGE/mnt
-                        emit "mount -t nfs -o nolock $rlocation /mnt"
-                        emit "if [ \$? == 0 ]"
-                        emit "then"
-                        emit "  mkdir -p /mnt/$SAVE_PATH/$lhost-\$DATE"
-                        emit "  VMCORE=/mnt/$SAVE_PATH/$lhost-\$DATE/vmcore"
-                        emit "  export VMCORE"
-                        emit "  monitor_cp_progress \$VMCORE-incomplete &"
-                        emit "  $CORE_COLLECTOR /proc/vmcore \$VMCORE-incomplete >/dev/null"
-                        emit "  exitcode=\$?"
-                        emit "  if [ \$exitcode == 0 ]"
-                        emit "  then"
-                        emit "      mv \$VMCORE-incomplete \$VMCORE"
-                        emit "      echo -e \"\\\033[0JSaving core complete\""
-                        emit "  fi"
-                        if [ -x "$KDUMP_POST" ]; then
-                            emit "  $KDUMP_POST \$exitcode"
-                        fi
-                        emit "  umount /mnt"
-                        emit "  [ \$exitcode == 0 ] && $FINAL_ACTION"
-                        emit "fi"
-                    else
-                        #SSH path
-                        #rebuild $config_val replacing machine name with ip address
-                        if [ -n "$CORE_COLLECTOR" ]
-                        then
-                            CORE_COLLECTOR=`echo $CORE_COLLECTOR | sed -e's/\(^makedumpfile\)\(.*$\)/\1 -F \2/'`
-                        fi
-
-                        bin="$bin /usr/bin/ssh /usr/bin/scp"
-                        rlocation=`echo $config_val|sed 's/@.*/@'"$rhost"'/'`
-                        #test ssh path and directory creation
-                        s_opts="-o BatchMode=yes -o StrictHostKeyChecking=no"
-                        kdump_chk "ssh -q $s_opts $rlocation mkdir -p $SAVE_PATH </dev/null" \
-                                "Could not create $config_val:$SAVE_PATH, you probably need to run \"service kdump propagate\""
-                        tdir=`ssh -q $s_opts $rlocation mktemp -dqp $SAVE_PATH </dev/null`
-                        if [ $? != "0" ]; then
-                            echo "$KDUMP_CONFIG_FILE: Could not create temp directory in $config_val:$SAVE_PATH"
-                            exit 1
-                        fi
-
-                        remote_df=`ssh -q $s_opts $rlocation df -P $tdir | tail -1`
-                        available_size=$(echo $remote_df | tr -s ' ' '|' | cut -d\| -f4)
-                       
-                        #check for available size is greater than $memtotal
-                        if [ $available_size -lt $memtotal ]; then
-                            echo "Warning: There is not space enough to save a vmcore."
-                            echo "         The size of $rlocation:$tdir should be much greater than $memtotal kilo bytes."
-                        fi
-                        #We do this to remove the temp directory from above
-                        ssh -q $s_opts $rlocation rmdir $tdir
-
-                        #setup ssh case, quick check to see if setup already
-                        if [ -n "$KDUMP_PRE" ]
-                        then
-                            emit "$KDUMP_PRE"
-                            emit "if [ \$? -ne 0 ]"
-                            emit "then"
-                            emit "  echo kdump_pre script exited with non-zero status"
-                            emit "  $FINAL_ACTION"
-                            emit "fi"
-                        fi
-
-                        if [ ! -r $MNTIMAGE/dev/urandom ]; then
-                            #only need to do these once
-                            mkdir -p $MNTIMAGE/root
-                            cp -a /root/.ssh $MNTIMAGE/root/
-                            cp -a /etc/ssh $MNTIMAGE/etc
-                            mknod $MNTIMAGE/dev/urandom c 1 9
-                        fi
-                        emit "dd if=/dev/mem of=/dev/urandom count=1 bs=512 skip=100" 
-                        emit "ssh -q -o BatchMode=yes -o StrictHostKeyChecking=no $rlocation mkdir $SAVE_PATH/$lhost-\$DATE"
-                        emit "VMCORE=$SAVE_PATH/$lhost-\$DATE/vmcore"
-                        emit "export VMCORE"
-                        emit "monitor_scp_progress $rlocation $SAVE_PATH/$lhost-\$DATE/vmcore-incomplete &"
-                        if [ -z "$CORE_COLLECTOR" ]
-                        then
-                            emit "scp -q -o BatchMode=yes -o StrictHostKeyChecking=no /proc/vmcore $rlocation:\$VMCORE-incomplete"
-                        else
-                            emit "$CORE_COLLECTOR /proc/vmcore | ssh -o BatchMode=yes -o StrictHostKeyChecking=no $rlocation \"cat > $SAVE_PATH/$lhost-\$DATE/vmcore-incomplete\""
-                        fi
-                        emit "exitcode=\$?"
-                        emit "if [ \$exitcode == 0 ]"
-                        emit "then"
-                        if [ -z "$CORE_COLLECTOR" ]
-                        then
-                            emit "  ssh -q -o BatchMode=yes -o StrictHostKeyChecking=no $rlocation mv \$VMCORE-incomplete \$VMCORE"
-                        else
-                            emit "  ssh -q -o BatchMode=yes -o StrictHostKeyChecking=no $rlocation mv \$VMCORE-incomplete \$VMCORE.flat"
-                        fi
-                        emit "  echo -e \"\\\033[0JSaving core complete\""
-                        emit "fi"
-                        if [ -x "$KDUMP_POST" ]; then
-                            emit "$KDUMP_POST \$exitcode"
-                        fi
-                        emit "[ \$exitcode == 0 ] && $FINAL_ACTION"
-                    fi
-                    ;;
-                core_collector)
-                    ;;
-                kdump_pre)
-                    ;;
-                kdump_post)
-                    ;;
-                extra_bins)
-                    ;;
-                extra_modules)
-                    ;;
-                disk_timeout)
-                    ;;
-                blacklist)
-                    ;;
-		options)
-		    ;;
-                default)
-                    ;;
-                link_delay)
-                    ;;
-                path)
-                    ;;
-                *)
-                    #test filesystem and directory creation
-                    kdump_chk "test -f /sbin/fsck.$config_opt" "Unsupported type $config_opt"
-                    tmnt=`mktemp -dq`
-                    kdump_chk "mount -t $config_opt $config_val $tmnt" "Bad mount point $config_val"
-                    mkdir -p $tmnt/$SAVE_PATH
-                    tdir=`mktemp -dqp $tmnt/$SAVE_PATH`
-                    rc=$?
-                    available_size=$(df $tdir | tail -1 | tr -s ' ' ':' | cut -d: -f4)
-                    rm -rf $tdir > /dev/null 2>&1
-                    umount $tmnt > /dev/null 2>&1
-                    if [ $rc != "0" ]; then 
-                        echo "Cannot create directory in $config_val: $SAVE_PATH"
-                        exit 1
-                    fi
-                    #check for available size is greater than $memtotal
-                    if [ $available_size -lt $memtotal ]; then
-                        echo "Warning: There is not space enough to save a vmcore."
-                        echo "         The size of $config_val should be much greater than $memtotal kilo bytes."
-                    fi
-
-    
-                    #setup filesystem case
-
-                    if [ -n "$KDUMP_PRE" ]
-                    then
-                        emit "$KDUMP_PRE"
-                        emit "if [ \$? -ne 0 ]"
-                        emit "then"
-                        emit "  echo kdump_pre script exited with non-zero status"
-                        emit "  $FINAL_ACTION"
-                        emit "fi"
-                    fi
-
-                    mkdir -p $MNTIMAGE/mnt
-		    touch $MNTIMAGE/etc/mtab
-                    if [ -z "$CORE_COLLECTOR" ]; then
-                        CORE_COLLECTOR="cp"
-                    fi
-                    emit "echo Saving to the local filesystem $config_val"
-                    emit "DUMPDEV=$config_val"
-                    emit "IS_LABEL=\`echo \$DUMPDEV | grep LABEL\`"
-                    emit "IS_UUID=\`echo \$DUMPDEV | grep UUID\`"
-                    emit "if [ -n \"\$IS_LABEL\" -o -n \"\$IS_UUID\" ] "
-                    emit "then"
-                    emit "  DUMPDEV=\`findfs \$DUMPDEV\`"
-                    emit "fi"
-                    emit "fsck.$config_opt -y \$DUMPDEV"
-                    emit "mount -t $config_opt \$DUMPDEV /mnt"
-                    emit "if [ \$? == 0 ]"
-                    emit "then"
-                    emit "  mkdir -p /mnt/$SAVE_PATH/127.0.0.1-\$DATE"
-                    emit "  VMCORE=/mnt/$SAVE_PATH/127.0.0.1-\$DATE/vmcore"
-                    emit "  export VMCORE"
-                    if [ "$CORE_COLLECTOR" == "cp" ]; then
-                        emit "  monitor_cp_progress \$VMCORE-incomplete &"
-                    fi
-                    emit "  $CORE_COLLECTOR /proc/vmcore \$VMCORE-incomplete >/dev/null"
-                    emit "  exitcode=\$?"
-                    emit "  if [ \$exitcode == 0 ]"
-                    emit "  then"
-                    emit "      mv \$VMCORE-incomplete \$VMCORE"
-                    emit "      echo -e \"\\\033[0JSaving core complete\""
-                    emit "  fi"
-                    emit "  sync"
-                    if [ -x "$KDUMP_POST" ]; then
-                        emit "  $KDUMP_POST \$exitcode"
-                    fi
-                    emit "fi"
-                    emit "umount /mnt"
-                    emit "[ \$exitcode == 0 ] && $FINAL_ACTION"
-                    ;;
-            esac
-    done < $KDUMP_CONFIG_FILE
-
-    #now handle the default action
-    if [ "$DEFAULT_ACTION" == "shell" ]
-    then
-        emit "echo dropping to initramfs shell"
-        emit "echo exiting this shell will reboot your system"
-        emit "/bin/msh"
-    fi
-    case $DEFAULT_ACTION in
-        reboot|halt|poweroff|shell)
-            emit "$FINAL_ACTION"
-            ;;
-        *)
-            emit "echo Attempting to enter user-space to capture vmcore"
+        case "$config_opt" in
+        default)
+            set_default "$config_val"
             ;;
-    esac
-                    
-    #find the shared libraries.  this snippet taken from kboot
-    TEMPLDCFG=`mktemp`
-    for lib in `ls /etc/ld.so.conf.d/* 2>/dev/null | grep -v kernelcap`
-    do
-        echo "include " $lib >> $TEMPLDCFG
-    done 
-    /sbin/ldconfig -f $TEMPLDCFG
-    kdump_libs=`for n in $bin; do 
-        ldd "$n" 2>/dev/null | tr -s '\011' ' ' | 
-        sed 's/.*=> *//;s/^ *//;/ *(0x.*)/s///p;d' 
-    done | sort | uniq | sed '/^ *$/d'`
-    /sbin/ldconfig
-    rm -f $TEMPLDCFG 
-
-    #copy the binaries and their shared libraries to the archive
-    for n in $bin $kdump_libs $k_extras; do
-        mkdir -p $MNTIMAGE/`dirname $n`
-        cp $n $MNTIMAGE/$n
-    done
+        esac
+    done < $conf_file
 fi
 
-emit "echo Creating root device."
-emit "#check to see if we have root= on the command line"
-emit "ROOTDEV=\`cat /proc/cmdline | grep root=\`"
-emit "if [ -n \"\$ROOTDEV\" ]"
-emit "then"
-emit "   ROOTDEV=\`cat /proc/cmdline | sed 's/^.*root=//' | cut -d\" \" -f1\`"
-emit "   IS_LABEL=\`echo \$ROOTDEV | grep LABEL\`"
-emit "   IS_UUID=\`echo \$ROOTDEV | grep UUID\`"
-emit "   if [ -n \"\$IS_LABEL\" -o -n \"\$IS_UUID\" ] "
-emit "   then"
-emit "      ROOTDEV=\`findfs \$ROOTDEV\`"
-emit "   fi"
-emit "else"
-emit "   #we need to get the root major/minor from real-root-dev"
-emit "   ROOT_DEV_NR=\`cat /proc/sys/kernel/real-root-dev\`"
-emit "   ROOT_MIN=\`echo \$ROOT_DEV_NR | sed -e's/\\([0-9a-f]\\{1,2\\}\\)\\([0-9a-f]\\{2\\}\\)/\\2/'\`"
-emit "   ROOT_MAJ=\`echo \$ROOT_DEV_NR | sed -e's/\\([0-9a-f]\\{1,2\\}\\)\\([0-9a-f]\\{2\\}\\)/\\1/'\`"
-emit "   mknod /dev/rootdev b 0x\$ROOT_MAJ 0x\$ROOT_MIN"
-emit "   ROOTDEV=/dev/rootdev"
-emit "fi"
-
-emit "echo Checking root filesystem."
-emit "fsck -y \$ROOTDEV"
-emit "echo Mounting root filesystem: mount -t $rootfs \$ROOTDEV /sysroot"
-emit "mount -t $rootfs \$ROOTDEV /sysroot >/dev/null 2>&1 "
-emit "if [ \$? != 0 ]"
-emit "then"
-emit "   echo unable to mount rootfs. Dropping to shell"
-emit "   /bin/msh"
-emit "fi"
-
-emit "#move various filesystems and prime the rootfs to boot properly"
-emit "umount /proc"
-emit "mount -t proc proc /sysroot/proc"
-emit "umount /sys"
-emit "mount -t sysfs sysfs /sysroot/sys"
-emit "mount -o bind /dev /sysroot/dev"
-
-if [ -f $MNTIMAGE/etc/blacklist-kdump.conf ] ; then
-    emit "tdir=\`mktemp -d\`"
-    emit "mkdir -p \$tdir"
-    emit "cp -r /sysroot/etc/modprobe.d/* \$tdir/"
-    emit "mount -t ramfs ramfs /sysroot/etc/modprobe.d"
-    emit "cp -r \$tdir/* /sysroot/etc/modprobe.d/"
-    emit "cp /etc/blacklist-kdump.conf /sysroot/etc/modprobe.d/"
+if [ -n "$extra_modules" ]
+then
+    add_dracut_arg "--add-drivers $extra_modules"
 fi
 
-emit "touch /sysroot/fastboot"
-emit "echo Switching to new root and running init."
-emit "exec switch_root /sysroot /sbin/init"
-
-# END OF INIT SCRIPT
+dracut $dracut_args "$@"
 
-chmod +x $RCFILE
-
-(cd $MNTIMAGE; find | cpio --quiet -c -o) >| $IMAGE || exit 1
-
-if [ -n "$compress" ]; then
-    gzip -9 < $IMAGE >| $target || rc=1
-else
-    cp -a $IMAGE $target || rc=1
-fi
-rm -rf $MNTIMAGE $IMAGE $TMPDISKLIST
-if [ -n "$MNTPOINT" ]; then rm -rf $MNTPOINT ; fi
-exit $rc


More information about the scm-commits mailing list