Rocky 9 禁用 kdump (Crashkernel)

在某些场景下, 我们可能不希望系统占用额外内存用于 kdump (Crashkernel), 例如在内存受限的虚拟机中。

为什么要禁用 kdump

  1. 开启 kdump 后在 1024MB 内存的虚拟机中只剩下 765 MB 的可用内存, 浪费系统内存
  2. 安装系统时禁用 kdump, 但更新内核时又会重新启用 (这是一个 RHEL 上游的 bug)

检查当前 crashkernel 状态

使用 dmesg 命令检查当前内核启动参数和 crashkernel 预留内存

[root@rocky9 ~]# dmesg | grep -i crash
[    0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-570.17.1.el9_6.x86_64 root=/dev/mapper/rl-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap
[    0.003027] crashkernel reserved: 0x0000000027000000 - 0x0000000033000000 (192 MB)
[    0.007620] Kernel command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-570.17.1.el9_6.x86_64 root=/dev/mapper/rl-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap

从输出可以看到, 系统默认预留了部分内存用于 crashkernel

使用 grubby 禁用 crashkernel

Rocky Linux 9 使用 grubby 管理内核启动参数。可以通过以下命令将 crashkernel 设置为 no

[root@rocky9 ~]# grubby --update-kernel=ALL --args="crashkernel=no"

然后可以验证内核参数是否生效

[root@rocky9 ~]# grubby --info /boot/vmlinuz-$(uname -r)
index=1
kernel="/boot/vmlinuz-5.14.0-570.17.1.el9_6.x86_64"
args="ro resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap crashkernel=no"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-5.14.0-570.17.1.el9_6.x86_64.img"
title="Rocky Linux (5.14.0-570.17.1.el9_6.x86_64) 9.6 (Blue Onyx)"
id="6b59b1d289ec44c4bb346a1add32b8c9-5.14.0-570.17.1.el9_6.x86_64"

可以看到 args 中已包含 crashkernel=no

重启并验证

重启系统后, 再次查看内核启动参数

[root@rocky9 ~]# dmesg | grep -i crash
[    0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-570.33.2.el9_6.x86_64 root=/dev/mapper/rl-root ro resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap crashkernel=no
[    0.011807] crashkernel: memory value expected
[    0.026396] Kernel command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-570.33.2.el9_6.x86_64 root=/dev/mapper/rl-root ro resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap crashkernel=no

从输出可以看到, 系统不再为 crashkernel 预留内存

恢复默认设置 (可选)

如果未来需要恢复 crashkernel 设置, 可以使用

grubby --remove-args="crashkernel=no" --update=ALL

原文

How do I remove crashkernel from cmdline?

最后更新于 2025-08-28