kdump已启用需满足三条件:/proc/cmdline含crashkernel参数、/sys/kernel/kexec_crash_size非零、/proc/meminfo有crashkernel行;再运行kdump-config show显示“ready to kdump”且systemctl status kdump-tools为active。

怎么确认kdump是否已启用
先别急着改配置,直接运行 kdump-config show。输出里如果看到 status: ready to kdump,说明服务已加载且内存预留成功;若显示 disabled 或 not ready,大概率是 crashkernel= 参数没生效,或 kdump-tools 服务没启动。
再补查一遍服务状态:systemctl status kdump-tools。常见问题包括:服务未 enable、启动失败(日志里常报 no crashkernel parameter)、或内核模块 crash_core 未加载(lsmod | grep crash 可验证)。
crashkernel参数怎么设才不翻车
crashkernel= 不是越大越好,也不是越小越省——它必须在 boot 阶段就从物理内存中硬切一块出来,且不能和其它内存管理机制冲突。Ubuntu 默认值 crashkernel=512M-:192M 意思是:内存 ≥512MB 时预留 192MB;但实际建议按物理内存总量调整:
- ≤4GB 物理内存:设
crashkernel=256M - 4–16GB:设
crashkernel=512M - ≥16GB:设
crashkernel=1G(低于 768M 在某些驱动场景下会 dump 失败)
参数必须写进 /etc/default/grub.d/kdump-tools.cfg 的 CRASHKERNEL 行,不是 /etc/default/grub 里的 GRUB_CMDLINE_LINUX_DEFAULT ——后者只影响主内核启动参数,kdump 工具读的是前者。
触发崩溃后vmcore没生成?检查这三处
手动触发 echo c > /proc/sysrq-trigger 后系统重启,但 /var/crash/ 下空空如也,常见原因有:
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
-
/var/crash所在分区空间不足(至少预留 2GB,vmcore 大小 ≈ 预留内存大小 × 0.8) -
kdump-tools配置里USE_KDUMP=1没开,或DEFAULT_KERNEL="auto"导致找不到匹配的 vmlinux 符号文件 - 内核启动时没加载
crash_kexec模块(dmesg | grep -i crash查是否有crashkernel reservation成功提示)
注意:/var/crash 目录权限必须是 root:root 且 755,否则 kdump 进程无法写入。
分析vmcore前必须装什么
光有 crash 命令不够,缺三样东西没法解析 vmcore:
- 当前运行内核的调试符号包:
linux-image-$(uname -r)-dbgsym(不是linux-image-$(uname -r)) - 对应版本的
vmlinux文件,通常安装 dbgsym 后位于/usr/lib/debug/boot/vmlinux-$(uname -r) -
crash工具本身:sudo apt install crash(Ubuntu 20.04+ 自带,旧版需手动装)
验证符号是否到位:file /usr/lib/debug/boot/vmlinux-$(uname -r) 应输出 ELF 64-bit LSB pie executable;若报 “No such file”,说明 dbgsym 没装对或仓库源没配全(需加 ddebs.ubuntu.com 源)。
最易被忽略的是:kdump 生成的 vmcore 是压缩的(vmcore.gz),crash 默认不自动解压,得先 gunzip /var/crash/*/vmcore.gz 再传路径进去。直接拖 .gz 文件进去会报 invalid magic number。










