GRUB_CMDLINE_LINUX是修改内核启动参数的核心配置项,需在/etc/default/grub中整行替换双引号内的参数并用空格分隔,修改后必须执行sudo grub2-mkconfig -o /boot/grub2/grub.cfg生效,最后通过cat /proc/cmdline验证。

GRUB_CMDLINE_LINUX 是你要改的核心配置项,它控制内核启动时传入的参数。改错会导致系统无法启动,必须谨慎操作。
修改 /etc/default/grub 中的 GRUB_CMDLINE_LINUX
所有永久生效的内核启动参数都写在 /etc/default/grub 的 GRUB_CMDLINE_LINUX 行里。这不是“追加”,而是整行替换——你新加的参数必须和原有参数一起放在双引号内,用空格分隔。
- 不要直接编辑
/boot/grub2/grub.cfg:它是自动生成的,手动改会被下次grub2-mkconfig覆盖 - 常见误操作:把新参数单独写一行、漏掉引号、用逗号或等号连接(正确是空格)
- 示例:想禁用 IPv6 并调低 swappiness,应改为:
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet ipv6.disable=1 swappiness=1"
执行 grub2-mkconfig 重新生成配置
改完 /etc/default/grub 后,必须运行 grub2-mkconfig,否则改动完全不生效。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
- 命令固定为:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg - 执行后会输出 “Found linux image: …” 等扫描日志,末尾出现
done才算成功 - 如果报错(比如语法错误、路径不存在),
grub.cfg不会被覆盖,但也不会应用你的修改——得先修复错误再重试
验证参数是否真正进入内核启动命令行
重启后不能只看 uname -r,要确认参数确实被加载进启动流程:
- 运行
cat /proc/cmdline:它显示当前正在运行的内核实际收到的全部启动参数 - 检查你新增的项(如
ipv6.disable=1或swappiness=1)是否出现在输出中 - 如果没出现,说明
grub2-mkconfig没成功,或者你改错了位置(比如写到了注释行后面)
临时调试建议:用 grub2-reboot + 单次启动验证
怕改错导致系统起不来?可以用 grub2-reboot 临时指定一次启动参数,不碰默认配置。
- 先备份当前配置:
sudo cp /etc/default/grub /etc/default/grub.bak - 临时加参启动(仅下一次有效):
sudo grub2-reboot "$(grep 'menuentry' /boot/grub2/grub.cfg | head -n1 | sed "s/^menuentry '\(.*\)'.*$/\1/")" --args="ipv6.disable=1" - 然后
sudo reboot,再cat /proc/cmdline看是否生效 - 确认没问题,再回过头去改
/etc/default/grub并生成正式配置
最易忽略的一点:GRUB_CMDLINE_LINUX 里的参数会和内核自带默认值合并,但**同名参数以后写的为准**。比如原值含 rhgb quiet,你加了 quiet splash,最终效果取决于内核解析顺序——所以尽量避免重复定义,删掉冗余项更稳妥。

















