Home | History | Annotate | Download | only in lib
      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