From 54f5e9a2c74d68748a1ee1a469ec85e4696544cd Mon Sep 17 00:00:00 2001 From: Neil Horman Date: Tue, 19 May 2009 20:08:18 +0000 Subject: [PATCH] Adding default manifest and some mkdumprd2 bug fixes --- manifest | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ mkdumprd2 | 29 +++++++++++++++++++--- 2 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 manifest diff --git a/manifest b/manifest new file mode 100644 index 0000000..d005156 --- /dev/null +++ b/manifest @@ -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//vmcore +# +# Notes on syntax: +# There are 6 major commands to use when generating manifest files +# They are: +# 1) reg +# reg +# A regular file copy from the source to the dst directory +# 2) creg +# creg +# like reg, but only copy if the source file exists +# +# 3) ren +# ren +# rename a file into the initramfs +# +# 4) cren +# cren +# like creg, but rename the dst file +# +# 5) gen +# gen +# execute the specified binary, redirecting stdout to +# +# 6) exec +# exec +# 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 diff --git a/mkdumprd2 b/mkdumprd2 index e21f449..4e26d70 100755 --- a/mkdumprd2 +++ b/mkdumprd2 @@ -1,5 +1,4 @@ #!/bin/sh - ########################################################## #File: mkdumprd2 #Author: Neil Horman @@ -168,6 +167,10 @@ validate_manifest_line() { case "$1" in + creg|cren) + # Just like reg/ren, but check nothing + # we don't copy anything if its not there + ;; reg|ren) # Regular file, make sure that the file exists if [ ! -f $2 ] @@ -195,12 +198,18 @@ validate_manifest_line() fi ;; *) - echo $1 | grep -q "^#" + echo $1 | grep -q "^#.*$" if [ $? -eq 0 ] then # its a comment continue fi + echo $1 | grep -q "^ *$" + if [ $? -eq 0 ] + then + # Blank line + continue + fi # Unknown manifest type, fail return 1 ;; @@ -235,6 +244,20 @@ populate_from_manifest() fi 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) # Just do a raw copy from the source path # to the dest path @@ -253,7 +276,7 @@ populate_from_manifest() # to stdout ddir=$(dirname $STAGE_DIR/$dpath) mkdir -p $ddir - $sarg $opts > $STAGE_DIR/$dpath + /bin/sh -c "$sarg $opts > $STAGE_DIR/$dpath" if [ $? != 0 ] then cleanup_and_exit 1 "$sarg: Non-zero exit"