我有一个red hat linux机器的核心转储(vmcore)接管了原始磁盘分区。vmcore是生成的,我可以在串行控制台输出中看到。我使用echo c > /proc/sysrq-trigger
触发了核心转储过程,但不知道如何分析它。
在/etc/kdump.conf
文件中指定的选项是"raw /dev/sda5"
。我之前使用fdisk命令创建了/dev/sda5分区,并给出了转储文件的位置。我还做了其他的事情,比如为崩溃保留内存等。
为此,谷歌提供了如下信息:
“原始磁盘分区和专用文件系统选项允许您仍转储到本地系统,但不必重新加载可能已损坏的文件系统,
从而减少了vmcore不被捕获的机会。假设/dev/sda5未格式化,kdump.conf可以配置为“raw/dev/sda5”,vmcore文件将通过dd直接复制到分区/dev/sda5”。
机器重新启动后(转储后)找不到/proc/vmcore
。有人能给我提供一些线索/步骤,让我分析这个垃圾场吗?我需要做“dd”或“mknod”或类似的事情吗(在google上得到了一些不清楚的提示)。
最佳答案
嘿,我碰巧看到你的问题。不知道你是否已经得到了答案。无论如何..
vmcore将被复制到/var/crash/或path参数中定义的位置(如果有)。
定义了as 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
关于linux - 分析vmcore接管原始磁盘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13192522/