分析vmcore接管原始磁盘

时间:2012-11-02 09:27:41

标签: linux linux-kernel crash-dumps

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

/etc/kdump.conf文件中指定的选项为"raw /dev/sda5"。我之前使用fdisk命令创建了/ dev / sda5 parition,并将其作为转储文件的位置。我还做过其他事情,比如为崩溃等保留内存。

谷歌搜索提供了以下信息: -

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

机器重启后(转储后)我找不到/proc/vmcore。有人能为我提供任何线索/步骤来分析转储吗?我需要做“dd”或“mknod”或类似的事情(在谷歌上有一些不明确的提示)。

1 个答案:

答案 0 :(得分:0)

嘿,我碰巧看到了你的问题。不知道你是否已经得到答案..无论如何..

vmcore将被复制到/ var / crash /或path参数中定义的位置(如果有的话)..

定义了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