Linux kdump 是一个内核崩溃转储机制,用于在内核发生严重错误(如内核恐慌 kernel panic
)时捕获系统内存的转储信息(vmcore
),以便后续分析崩溃原因。它是调试内核级问题(如驱动故障、硬件错误等)的关键工具。
捕获崩溃现场
当内核崩溃时,kdump 会启动一个备用内核(capture kernel
),将崩溃时刻的内存转储到文件(如 /var/crash/vmcore
),保留包括进程状态、内核日志、寄存器信息等关键数据。
调试与分析
转储文件可通过工具(如 crash
、gdb
)分析,帮助开发者定位崩溃的代码位置、调用栈、硬件状态等,解决内核或驱动问题。
自动化支持
与 systemd
或初始化脚本集成,可配置为自动保存转储文件到本地或远程服务器。
双内核机制
crashkernel=
内核参数指定)。触发条件
崩溃事件包括:
kernel panic
)echo c > /proc/sysrq-trigger
)安装工具
# RHEL/CentOS
yum install kexec-tools crash
# Debian/Ubuntu
apt install kdump-tools crash
启用kdump
编辑 /etc/default/grub
,添加 crashkernel
参数:
GRUB_CMDLINE_LINUX="... crashkernel=256M"
更新GRUB并重启:
update-grub && reboot
测试kdump
手动触发崩溃(慎用!):
echo c > /proc/sysrq-trigger
转储文件通常保存在 /var/crash/
或 /var/log/dump/
。
分析转储
使用 crash
工具:
crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/vmcore
crashkernel=
需根据系统内存调整(如 512M
或 auto
)。/proc/sys/kernel/kexec_load_disabled
)。kdump 是 Linux 内核调试的“黑匣子”,通过保留崩溃现场数据,显著提高复杂内核问题的诊断效率。对于关键服务器或开发内核模块的场景,建议默认启用。