安装linux-crashdump必须完成交互式配置,执行sudo apt install linux-crashdump后需选择yes启用kdump,否则use_kdump=0导致服务不生效;crashkernel参数须正确写入grub_cmdline_linux_default并运行update-grub,重启后通过cat /proc/cmdline验证是否生效。

安装 linux-crashdump 时必须确认交互式配置
Ubuntu 安装 linux-crashdump 不是纯命令行静默过程,会弹出 TUI 界面要求你选择是否启用 kdump。如果跳过或按 Ctrl+C 中断,kdump-tools 服务不会自动启用,后续所有配置都无效。
- 执行
sudo apt install linux-crashdump后,务必用方向键选中Yes并回车,否则/etc/default/kdump-tools中的USE_KDUMP=0会被保留 - 若已跳过,可手动编辑
/etc/default/kdump-tools,把USE_KDUMP=0改为USE_KDUMP=1,再运行sudo systemctl restart kdump-tools - 验证是否生效:运行
kdump-config show,输出中必须含STATUS: ready to kdump,否则说明预留内存未成功分配
crashkernel= 参数写错会导致 kdump 启动失败
crashkernel= 必须写在 /etc/default/grub 的 GRUB_CMDLINE_LINUX_DEFAULT 行里,且不能与其它内核参数冲突。常见错误是把它误加到 GRUB_CMDLINE_LINUX 或漏掉引号包裹。
PostgreSQL 18.4 官方 Ubuntu 安装包现已发布,这是目前最新的稳定版本。推荐通过官方 APT 仓库安装:先执行 sudo apt update 更新索引,再运行 sudo apt install postgresql-18 即可完成部署。新版本引入了异步 I/O 子系统,在顺序扫描与 VACUUM 场景下性能提升显著,同时支持 UUID v7 原生生成函数与虚拟生成列。
- 正确写法示例:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash crashkernel=256M" - 数值不是越大越好:物理内存 ≤ 4GB 推荐
128M,≥ 8GB 可设512M;设成crashkernel=auto在 Ubuntu 20.04+ 上不可靠,建议显式指定 - 改完必须运行
sudo update-grub,否则重启后内核根本看不到该参数 - 验证是否加载成功:重启后运行
cat /proc/cmdline | grep crashkernel,应能看见完整参数
分析 vmcore 前必须装对版本的 vmlinux-dbgsym
crash 工具本身不带符号表,它依赖与当前运行内核严格匹配的 vmlinux 调试文件。Ubuntu 官方源默认不提供 dbgsym 包,直接 apt install crash 后运行会报 no debugging symbols found。
- 先查当前内核:
uname -r,比如输出5.15.0-107-generic - 添加 debug 符号源:
sudo tee /etc/apt/sources.list.d/ddebs.list写入对应 codename 的 ddebs 源(如 jammy),然后sudo apt update - 安装对应包:
sudo apt install linux-image-$(uname -r)-dbgsym—— 注意不是linux-image-$(uname -r),后者是内核本体,不含调试符号 - 符号文件路径通常是
/usr/lib/debug/boot/vmlinux-$(uname -r),运行crash /usr/lib/debug/boot/vmlinux-$(uname -r) /var/crash/*/vmcore才能正常解析堆栈
测试崩溃触发后别急着看 /var/crash
系统通过 sysrq-trigger 崩溃后,kdump 会在重启过程中自动保存转储,但新生成的 vmcore 不一定立刻出现在 /var/crash 下——它可能还在压缩或校验中,强行查看会看到空目录或不完整文件。
- 触发命令:
echo c > /proc/sysrq-trigger(需先echo 1 > /proc/sys/kernel/sysrq) - 重启进入系统后,先等 1–2 分钟,再运行
ls -lt /var/crash查最新子目录 - 若目录为空或只有
dump-*文件没vmcore,说明预留内存不足或 crashkernel 未生效,检查dmesg | grep -i kdump输出是否有Failed to allocate memory - 真实崩溃场景下,
/var/crash下的目录名含时间戳和内核版本,如/var/crash/202607090700/,里面才是可用的vmcore
crashkernel= 参数写进 GRUB 后必须 reboot 才生效,而 kdump-config show 显示 “ready” 仅表示服务进程跑起来了,不代表内核真的预留了内存。只要 cat /proc/cmdline 里没看到 crashkernel,后面全白搭。










