2012-11-02 87 views
1

我拥有在原始磁盘分区上接管的Red Hat Linux机器的核心转储(vmcore)。生成了vmcore,我可以在串行控制台输出上看到它。我使用echo c > /proc/sysrq-trigger触发了核心转储过程,但我不知道如何分析它。分析在原始磁盘上接管的vmcore

/etc/kdump.conf文件中指定的选项是"raw /dev/sda5"。我之前使用fdisk命令创建了/ dev/sda5 parition,并将其作为转储文件的位置。我也做其他事情像死机等

谷歌搜索这个记忆保留了像一些信息如下: -

“的原始磁盘分区和专用文件系统选项允许你仍然转储到本地系统,但不必重新安装可能损坏的文件系统,从而减少了vmcore不被捕获的机会。假设/ dev/sda5没有格式化,kdump.conf可以配置为'raw/dev/sda5' sda5',并且vmcore文件将通过dd直接复制到分区/ dev/sda5上“。

机器重​​启后(转储后)我找不到/proc/vmcore。有人能给我提供任何线索/步骤,我如何分析那个转储?我需要做“dd”或“mknod”或类似的东西(在google上有一些不清楚的提示)。

回答

0

嘿,我碰巧看到你的问题。不知道你有你的答案已经..不管怎么说..如有

为vmcore将被复制到/ var /崩溃/或路径中的参数定义的位置..

由于save_raw功能定义。

function save_raw() 
{ 
     local raw_part=$(awk '$1 ~ /^raw$/ { print $2; }' $KDUMP_CONFIG_FILE) 
     local kdump_dir 
     if [ "$raw_part" ]; then 
       [ -b "$raw_part" ] || { 
         echo "raw partition $raw_part not found" 
         return 1 
       } 
       kdump_dir=`grep ^path $KDUMP_CONFIG_FILE | cut -d' ' -f2-` 
       if [ -z "${kdump_dir}" ]; then 
         coredir="/var/crash/`date +"%Y-%m-%d-%H:%M"`" 
       else 
         coredir="${kdump_dir}/`date +"%Y-%m-%d-%H:%M"`" 
       fi 
       mkdir -p "$coredir" 
       [ -d "$coredir" ] || { 
         echo "failed to create $coredir" 
         return 1 
       } 
       if makedumpfile -R $coredir/vmcore <$raw_part >/dev/null 2>&1; then 
         # dump found 
         echo "Dump saved to $coredir/vmcore" 
         # wipe makedumpfile header 
         dd if=/dev/zero of=$raw_part bs=1b count=1 2>/dev/null 
       else 
         rm -rf "$coredir" 
       fi 
     fi 
     return 0 
} 

该函数在重启后启动kdump时调用。

function start() 
{ 
     save_raw