如何学习和掌握kdump和crash调试技术

我们需要学习掌握kdump和crash调试技术,请提供相关资料,谢谢!
1、3.10内核中已经集成了kdump工具,需要了解编译并运行kdump所需的内核配置;
​2、运行kdump所需的内核启动参数;
​3、kexec启动捕获内核的参数;
​4、crash工具包;
5、其他相关资料。
已邀请:

wangjianxing

赞同来自:

兄嘚,你还在吗

xen0n

赞同来自:

英文文档应该有,这一套应该是成熟的流程,去搜 kdump debug tutorial 吧

wangjianxing

赞同来自:

hw:L300-G25
kernel ver:3.10.0
1.grub中添加参数,必须手动指定offset,而且size太大的话第一个内核就启动不起来了
crashkernel=96M@64M
2.编译kexec
git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git
当前HEAD为
fa3f0ed Limit the size of vmcore-dmesg.txt to 2G
3.编译dump内核,可以从http://cgit.loongnix.org/cgit上下载kernel
3.1修改内核配置
 197 CONFIG_CRASH_DUMP=y                                                                                                                       
 198 CONFIG_PHYSICAL_START=0xffffffff86000000
3.2修改arch/mips/loongson/Platform
load-$(CONFIG_LOONGSON_MACH3X) += 0xffffffff86000000
3.3编译,之后strip vmlinx,最终size为18M
4.编译一个最小文件系统
用parted resize现有的一个分区,划分出来了一个小分区用来安装根文件系统,文件系统格式为ext2.
下载busybox,然后编译安装到新的分区,注意创建init的软链接,我当前是/bin/init->/bin/busybox
5.加载panic内核
kexec -d -p --command-line='root=/dev/sda7 console=tty console=ttyS0,115200 autoplug=off debug loglevel=10 irqpoll nr_cpus=1 cgroup_disable=memory numa=off rd_start=0x89efc000 rd_size=0x4000' /path/to/vmlinux
其中sda7是带有根文件系统的小分区;rd_start和rd_size只是利用mips内核会将这部分reserve出来,不让内核动这部分内存,当内核尝试解压这部分的时候会失败,所以root是一直生效的。
里面可能有些参数对mips无效,没有仔细验证

6.主动panic进入第二个内核
echo c > /proc/sysrq-trigger

结果:能进入dump内核,能看到/proc/vmcore,里面的大小就是整个内存的大小,下面还需要验证dump出来的东西是否完全正确可用,makedumpfile和crash等工具的编译,离真正kdump用起来还有一段距离。

wangjianxing

赞同来自:

这个链接也可以参考:https://docs.windriver.com/bundle/Wind_River_Linux_Kernel_and_BSP_Developers_Guide_8.0_1/page/gso1478821632311.html

要回复问题请先登录注册