kdump 系统配置

kdump系统配置记录

Kdump在Linux环境下的配置

最近在交CNVD时用到了Kdump,用它来捕获系统崩溃后的崩溃信息,这里进行一个简单的记录。

Kdump原理

Kdump使用了一种双内核的结构,主内核正常运行,但会预留一块区域保存crashkernel,另一个是捕获内核,当主内核崩溃时,它会进入预留的区域运行。另一种关键技术是Kexec,主内核崩溃时会通过Kexec立即跳转到捕获内核中,捕获内核随机运行,读取主内核中的旧数据,保存下崩溃现场,数据保存完毕以后重启。

Kdump安装前的配置

vmlinux安装 安装Kdump之前,首先我们需要检查/usr/lib/debug下是否为空,如果为空我们需要下载带调试符号的内核镜像,Kdump的核心工具crash需要用它来分析生成的vmcore文件。可以用如下命令进行安装:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# GPG密钥导入
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C8CAB6595FDFF622

codename=$(lsb_release -c | awk  '{print $2}')  
sudo tee /etc/apt/sources.list.d/ddebs.list << EOF  
deb http://ddebs.ubuntu.com/ ${codename}      main restricted universe multiverse  
deb http://ddebs.ubuntu.com/ ${codename}-security main restricted universe multiverse  
deb http://ddebs.ubuntu.com/ ${codename}-updates  main restricted universe multiverse  
deb http://ddebs.ubuntu.com/ ${codename}-proposed main restricted universe multiverse  
EOF

sudo apt-get update

sudo apt-get install linux-image-$(uname -r)-dbgsym

安装完成之后,/usr/lib/debug目录下就会出现带符号调试信息的内核:

vmlinux

系统配置 随后我们需要在系统启动时预留一部分内存给备用内核,修改/etc/default/grub,在GRUB_CMDLINE_LINUX中添加 crashkernel=auto(或指定大小如crashkernel=256M)。随后重启使其生效。

crashkernel

Kdump安装与配置

Ubuntu中的安装指令如下:

1
sudo apt install linux-crashdump

安装的过程中应该会有弹窗,让我们配置kexec-tools或者kdump-tools,我们也可以手动配置:

1
2
sudo dpkg-reconfigure kexec-tools
sudo dpkg-reconfigure kdump-tools

配置成功后,可以运行如下命令查看状态:

1
kdump-config show

kdump

Kdump测试

运行如下命令触发系统崩溃:

1
2
sudo sh -c "echo 1 > /proc/sys/kernel/sysrq"
sudo sh -c "echo c > /proc/sysrq-trigger"

系统崩溃重启以后可以在/var/crash/目录下看到崩溃转储的vmcore和dmesg信息:

varcrash

参考

https://blog.csdn.net/Javachichi/article/details/139823714

https://blog.csdn.net/dwh0403/article/details/123551691

Licensed under CC BY-NC-SA 4.0
View: Loading