#!/bin/sh PREREQ="" prereqs() { echo "${PREREQ}" } case ${1} in prereqs) prereqs exit 0 ;; esac #Check if VMCORE is available if [ ! -f /proc/vmcore ]; then exit 0 fi . /scripts/functions . /scripts/local log_end_msg log_begin_msg "mounting ${ROOT} over ${rootmnt}" sleep 2 log_end_msg mount -o remount,rw,relatime,errors=remount-ro ${ROOT} ${rootmnt} log_begin_msg "Dumping the crashed kernel" log_end_msg KDUMP_DEFAULTS=${rootmnt}/etc/default/kdump-tools [ -r $KDUMP_DEFAULTS ] && . $KDUMP_DEFAULTS mkdir -p ${rootmnt}/var/crash rm -fr /var/crash ln -s ${rootmnt}/var/crash /var/crash KDUMP_COREDIR=${KDUMP_COREDIR:=/var/crash} KDUMP_SKIP_VMCORE=${KDUMP_SKIP_VMCORE:=1} KDUMP_DUMP_DMESG=${KDUMP_DUMP_DMESG:=1} KDUMP_NUM_DUMPS=${KDUMP_NUM_DUMPS:=0} MAKEDUMP_ARGS=${MAKEDUMP_ARGS:="-c -d 31"} IOMEM_ADDR=`grep -i "Crash kernel" /proc/iomem | sed "s/-..*//" | sed "s/^[ 0]*/0x/"` vmcore_file=/proc/vmcore KDUMP_STAMP=`date +"%Y%m%d%H%M"` KDUMP_STAMPDIR="$KDUMP_COREDIR/$KDUMP_STAMP" if [ -d $KDUMP_STAMPDIR ]; then log_failure_msg "Directory $KDUMP_STAMPDIR already exist" exit 1 fi mkdir -p $KDUMP_STAMPDIR KDUMP_COREFILE="$KDUMP_STAMPDIR/dump.$KDUMP_STAMP" KDUMP_DMESGFILE="$KDUMP_STAMPDIR/dmesg.$KDUMP_STAMP" if [ "$KDUMP_DUMP_DMESG" -eq 1 ] ; then log_begin_msg "running makedumpfile --dump-dmesg $vmcore file $KDUMP_DMESGFILE" sleep 2 log_end_msg makedumpfile --dump-dmesg $vmcore_file $KDUMP_DMESGFILE fi if [ "$KDUMP_SKIP_VMCORE" -ne 1 ]; then log_begin_msg "running makedumpfile $MAKEDUMP_ARGS $vmcore_file $KDUMP_COREFILE" sleep 2 log_end_msg makedumpfile $MAKEDUMP_ARGS $vmcore_file $KDUMP_COREFILE fi sync umount ${rootmnt} 2> /dev/null log_success_msg "Rebooting system" sleep 2 echo 1 > /proc/sys/kernel/sysrq echo b > /proc/sysrq-trigger