1 #!/bin/sh -ex 2 3 conf=${1} 4 arch=$(uname -m) 5 kver=$(uname -r) 6 7 . "${conf}" 8 9 echo "Verify Kernel version >= 2.6.16." 10 # Kernel might in the following format. 11 # x.y.z-1.el 12 # x.y.z.1.el 13 kx=${kver%%.*} 14 tmp=${kver#*.} 15 ky=${tmp%%.*} 16 tmp=${tmp#*.} 17 tmp=${tmp%%.*} 18 kz=${tmp%%-*} 19 20 if [ "${kx}" -lt 2 ]; then 21 error=1 22 23 elif [ "${kx}" -eq 2 ]; then 24 if [ "${ky}" -lt 6 ]; then 25 error=1 26 27 elif [ "${ky}" -eq 6 ]; then 28 if [ "${kz}" -lt 16 ]; then 29 error=1 30 fi 31 fi 32 fi 33 34 if [ "${error}" ]; then 35 echo "Fail: kernel version ${kver} is less than 2.6.16." 36 fi 37 38 39 echo "Verify user is root." 40 if [ $(id -u) != 0 ]; then 41 echo "Fail: root is required." 42 error=1 43 fi 44 45 46 echo "Verify prerequisite." 47 if [ ! -x "/sbin/kexec" ]; then 48 echo "Fail: kexec-tools not found." 49 error=1 50 fi 51 52 if [ ! -d "/lib/modules/${kver}/build" ]; then 53 echo "Fail: kernel-devel not found." 54 error=1 55 fi 56 57 if [ "${CRASH}" ] && [ "${CRASH}" -eq 1 ]; then 58 if [ ! -x "/usr/bin/crash" ]; then 59 echo "Fail: crash not found." 60 error=1 61 fi 62 63 if [ ! -f "${VMLINUX}" ]; then 64 echo "Fail: kernel-debuginfo not found." 65 error=1 66 fi 67 fi 68 69 # Final result. 70 if [ "${error}" ]; then 71 echo "Please fixed the above failures before continuing." 72 exit 1 73 fi 74 75 echo "Compile Kernel modules." 76 make clean 77 78 # Test if struct kprobe has "symbol_name" field. 79 if make -C kprobes >/dev/null 2>&1; then 80 export USE_SYMBOL_NAME=1 81 fi 82 83 make 84 85 echo "Modify Boot Loader." 86 if [ "${arch}" = "ppc64" ]; then 87 args="crashkernel=256M@32M xmon=off" 88 elif [ "${arch}" = "i686" ]; then 89 args="crashkernel=256M@128M nmi_watchdog=1" 90 elif [ "${arch}" = "ia64" ]; then 91 args="crashkernel=512M@256M" 92 else 93 args="crashkernel=256M@128M" 94 fi 95 96 if [ -x "/sbin/grubby" ]; then 97 /sbin/grubby --default-kernel | 98 xargs /sbin/grubby --args="${args}" --update-kernel 99 100 else 101 echo "Warn: please make sure the following arguments are in Boot\ 102 Loader:" 103 echo "$args" 104 echo "Hit any key when ready." 105 read 106 fi 107 108 exit 0 109