最近两个星期都在折腾这件事情。 之前在写一个内核网络模块。模块加载之后,会引起内核panic,panic分三种类型,我现在碰到的panic应该属于最严重的那种,导致内核crash,而且crash的时候内核打印出来的错误,并不能完全的显示在屏幕上面,因为一屏幕打印不满,会刷频,所以看不到crash时候dump_stack的消息看不到,这样调试就很困难,真心非常非常的郁闷。
后来经过咨询,有哥们提示说用kdump,可以记录内核崩溃时候的堆栈,相当于是可以记录内核崩溃时候整个内存中的信息。 因此,我开始了为期两周的郁闷惆怅的kdump的安装之旅。有同志有碰到和我相似的问题,请给我留言。
首先,我是在虚拟机vmware上面进行的实验。出现的各种问题,我觉得也有可能是因为vmware虚拟机的原因,毕竟它只是一个软件,与真实的计算机是有区别的,特别是涉及到内核这个部分的时候。这是我自己的猜测,没有被证实。目前我已经开始打算把linux安装在自己的笔记本上,装成双系统,或者干脆笔记本不要windows了,只留Linux。这是后话。
1. fedora core 10。
首先,我在fedora core10上面,开始安装kdump。fc10上面是2.6.27的内核。这个是我最常用的系统。按照这个帖子中所述,http://fedoraproject.org/wiki/How_to_use_kdump_to_debug_kernel_crashes,首先安装kexec-tools\kernel-debuginfo。其中我不明白的是这条指令: