#!/bin/sh -ex conf=${1} arch=$(uname -m) kver=$(uname -r) . "${conf}" echo "Verify Kernel version >= 2.6.16." # Kernel might in the following format. # x.y.z-1.el # x.y.z.1.el kx=${kver%%.*} tmp=${kver#*.} ky=${tmp%%.*} tmp=${tmp#*.} tmp=${tmp%%.*} kz=${tmp%%-*} if [ "${kx}" -lt 2 ]; then error=1 elif [ "${kx}" -eq 2 ]; then if [ "${ky}" -lt 6 ]; then error=1 elif [ "${ky}" -eq 6 ]; then if [ "${kz}" -lt 16 ]; then error=1 fi fi fi if [ "${error}" ]; then echo "Fail: kernel version ${kver} is less than 2.6.16." fi echo "Verify user is root." if [ $(id -u) != 0 ]; then echo "Fail: root is required." error=1 fi echo "Verify prerequisite." if [ ! -x "/sbin/kexec" ]; then echo "Fail: kexec-tools not found." error=1 fi if [ ! -d "/lib/modules/${kver}/build" ]; then echo "Fail: kernel-devel not found." error=1 fi if [ "${CRASH}" ] && [ "${CRASH}" -eq 1 ]; then if [ ! -x "/usr/bin/crash" ]; then echo "Fail: crash not found." error=1 fi if [ ! -f "${VMLINUX}" ]; then echo "Fail: kernel-debuginfo not found." error=1 fi fi # Final result. if [ "${error}" ]; then echo "Please fixed the above failures before continuing." exit 1 fi echo "Compile Kernel modules." make clean # Test if struct kprobe has "symbol_name" field. if make -C kprobes >/dev/null 2>&1; then export USE_SYMBOL_NAME=1 fi make echo "Modify Boot Loader." if [ "${arch}" = "ppc64" ]; then args="crashkernel=256M@32M xmon=off" elif [ "${arch}" = "i686" ]; then args="crashkernel=256M@128M nmi_watchdog=1" elif [ "${arch}" = "ia64" ]; then args="crashkernel=512M@256M" else args="crashkernel=256M@128M" fi if [ -x "/sbin/grubby" ]; then /sbin/grubby --default-kernel | xargs /sbin/grubby --args="${args}" --update-kernel else echo "Warn: please make sure the following arguments are in Boot\ Loader:" echo "$args" echo "Hit any key when ready." read fi exit 0