Adding default manifest and some mkdumprd2 bug fixes

This commit is contained in:
Neil Horman 2009-05-19 20:08:18 +00:00
parent 6513a7e53d
commit 54f5e9a2c7
2 changed files with 99 additions and 3 deletions

73
manifest Normal file
View File

@ -0,0 +1,73 @@
######################################################
# Generic kdump initramfs manifest
# 1) Loads all modules
# 2) Starts all mdraid, lvm partitions
# 3) Mounts the rootfs
# 4) Copies /proc/vmcore to /mnt/var/crash/<date>/vmcore
#
# Notes on syntax:
# There are 6 major commands to use when generating manifest files
# They are:
# 1) reg
# reg <source file> <dest path>
# A regular file copy from the source to the dst directory
# 2) creg
# creg <source file> <dest path>
# like reg, but only copy if the source file exists
#
# 3) ren
# ren <src file> <dst file>
# rename a file into the initramfs
#
# 4) cren
# cren <src file> <dst file>
# like creg, but rename the dst file
#
# 5) gen
# gen <binary> <dst file> <options>
# execute the specified binary, redirecting stdout to <dst>
#
# 6) exec
# exec <binary> <options>
# execute the specified binary. Option 1 is the
# base dir where the initramfs is being built
# $1/temp is temp file space, $1/stage is the initramfs
# options passed on command line after that
#####################################################
####################################################
#This script populates the initramfs with:
# busybox
# kpartx
# lvm
# dmsetup
# It also symlinks all the supported apps in busybox to
# busybox
####################################################
exec populate_kdump_std_files
####################################################
# This is a rudimentary module population script
# It looks at the currently loaded modules, copies them
# To the initramfs, and generates /etc/module_load_list
# which is a dependency ordered list of those modules
# which can be used at runtime for module loading
###################################################
exec generate_module_list
###################################################
# Lets get all our lvm and mdraid configs on board
###################################################
creg /etc/lvm/lvm.conf /etc/lvm
creg /etc/mdadm.conf /etc
###################################################
# Grab fstab, modifying it to mount under /mnt
###################################################
gen awk /etc/fstab '/^[^#]/{print $1 " /mnt"$2 " "$3 " "$4 " "$5 " "$6}' /etc/fstab
###################################################
# Grab the standard initscript to capture to the local
# rootfs
###################################################
ren /usr/share/kexec-tools/kdumpinit.rootfs /init

View File

@ -1,5 +1,4 @@
#!/bin/sh #!/bin/sh
########################################################## ##########################################################
#File: mkdumprd2 #File: mkdumprd2
#Author: Neil Horman <nhorman@redhat.com> #Author: Neil Horman <nhorman@redhat.com>
@ -168,6 +167,10 @@ validate_manifest_line()
{ {
case "$1" in case "$1" in
creg|cren)
# Just like reg/ren, but check nothing
# we don't copy anything if its not there
;;
reg|ren) reg|ren)
# Regular file, make sure that the file exists # Regular file, make sure that the file exists
if [ ! -f $2 ] if [ ! -f $2 ]
@ -195,12 +198,18 @@ validate_manifest_line()
fi fi
;; ;;
*) *)
echo $1 | grep -q "^#" echo $1 | grep -q "^#.*$"
if [ $? -eq 0 ] if [ $? -eq 0 ]
then then
# its a comment # its a comment
continue continue
fi fi
echo $1 | grep -q "^ *$"
if [ $? -eq 0 ]
then
# Blank line
continue
fi
# Unknown manifest type, fail # Unknown manifest type, fail
return 1 return 1
;; ;;
@ -235,6 +244,20 @@ populate_from_manifest()
fi fi
case "$type" in case "$type" in
creg|cren)
# Conditional regular copy/rename
if [ -f $sarg ]
then
if [ "$type" == "creg" ]
then
ddir=$STAGE_DIR/$dpath
else
ddir=$(dirname $STAGE_DIR/$dpath)
fi
mkdir -p $ddir
cp $sarg $STAGE_DIR/$dpath
fi
;;
reg|ren) reg|ren)
# Just do a raw copy from the source path # Just do a raw copy from the source path
# to the dest path # to the dest path
@ -253,7 +276,7 @@ populate_from_manifest()
# to stdout # to stdout
ddir=$(dirname $STAGE_DIR/$dpath) ddir=$(dirname $STAGE_DIR/$dpath)
mkdir -p $ddir mkdir -p $ddir
$sarg $opts > $STAGE_DIR/$dpath /bin/sh -c "$sarg $opts > $STAGE_DIR/$dpath"
if [ $? != 0 ] if [ $? != 0 ]
then then
cleanup_and_exit 1 "$sarg: Non-zero exit" cleanup_and_exit 1 "$sarg: Non-zero exit"