使用kump调试内核崩溃

引言

Kump是一项在发生内核崩溃时创建崩溃转储的服务。它使用kexec引导到辅助内核(称为捕获内核),然后将内核内存的内容(称为崩溃转储或vmcore)导出到文件系统。然后可以分析vmcore的内容,找出内核崩溃的根本原因。

配置kump需要设置 crashkernel 内核参数,并启用kump system d服务。在引导第一个内核时,必须为崩溃的内核保留内存。 crashkernel=auto 通常不会在Fedora CoreOS上保留足够的内存,因此建议指定 crashkernel=300M

默认情况下,vmcore将保存在 /var/crash 。还可以将转储写入本地系统上的其他位置,或通过编辑通过网络发送转储 /etc/kdump.conf 。有关其他信息,请参阅 kdump.conf(5) 中的评论 /etc/kdump.conf/etc/sysconfig/kdump

通过Ignition配置kump

KDUMP配置示例
variant: fcos
version: 1.4.0
kernel_arguments:
  should_exist:
  - 'crashkernel=300M'
systemd:
  units:
  - name: kdump.service
    enabled: true

在初始资源调配后配置kump

设置crashcore参数

+

sudo rpm-ostree kargs --append='crashkernel=300M'

更多信息 关于如何通过以下方式修改卡格斯 rpm-ostree

启用kump系统d服务。

+

sudo systemctl enable kdump.service
重新启动系统。

+

sudo systemctl reboot
强烈建议在设置后测试配置 kdump 服务,特别注意为崩溃内核保留的内存量。有关如何测试kump是否已正确武装以及如何分析转储的信息,请参阅 Fedora的kump文档Kump上的Linux内核文档