直接编辑 /etc/default/grub 文件中的 grub_cmdline_linux 变量值,修改后需运行 sudo grub2-mkconfig -o /boot/grub2/grub.cfg 更新配置并重启生效,最后用 cat /proc/cmdline 验证。

GRUB_CMDLINE_LINUX 参数在哪改
直接编辑 /etc/default/grub 文件,这是唯一需要修改的配置位置。其他地方(比如 /boot/grub2/grub.cfg)是自动生成的,手动改会被下次 grub2-mkconfig 覆盖。
用 root 权限打开该文件:sudo vi /etc/default/grub
找到这行:GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
在引号内追加参数,例如要禁用 nouveau 驱动:GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet rd.driver.blacklist=nouveau"
- 多个参数用空格分隔,不要加逗号
- 引号必须保留,否则 shell 解析会出错
- 参数名和等号之间不能有空格(如
net.ifnames=0正确,net.ifnames = 0错误)
改完怎么让参数生效
改完 /etc/default/grub 后,必须运行命令生成新配置,否则重启无效:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
这个命令会读取 /etc/default/grub 和 /etc/grub.d/ 下的脚本,重新生成 /boot/grub2/grub.cfg。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
- 执行后检查输出是否含
done,且无报错(如 “error: file not found” 通常表示路径或模块缺失) - 如果系统是 UEFI 启动,目标路径仍是
/boot/grub2/grub.cfg,不是 EFI 分区下的文件 - 别手贱直接编辑
/boot/grub2/grub.cfg—— 它不是配置源,只是产物
常见参数用途和典型错误
不同场景下加的参数作用差异很大,选错可能让系统卡在启动界面或硬件失能:
-
rd.driver.blacklist=nouveau:装 NVIDIA 闭源驱动前必须加,否则内核加载冲突导致黑屏 -
net.ifnames=0 biosdevname=0:恢复传统网卡名(eth0),但若同时漏掉biosdevname=0,部分老脚本仍会失败 -
console=ttyS0,115200n8:串口调试必需,但若实际没有串口硬件,会导致启动日志消失,排查困难 -
iommu=off:解决某些 AMD 主板或旧虚拟机 PCI 设备识别失败,但关闭 IOMMU 可能影响 VT-d 功能
加参数前建议先查内核文档:man 7 bootparam 或访问 kernel.org 的 boot parameters 页面,避免拼写错误(比如把 rd.lvm.lv 写成 rd.lvm.lv 少个 l)。
如何验证参数已生效
重启后,在正在运行的系统里检查实际加载的内核命令行:
cat /proc/cmdline
输出应包含你添加的所有参数。如果没出现,说明要么没运行 grub2-mkconfig,要么改错了文件,或者参数被 GRUB 子菜单覆盖(比如用了 GRUB_CMDLINE_LINUX_DEFAULT 而非 GRUB_CMDLINE_LINUX)。
-
GRUB_CMDLINE_LINUX_DEFAULT只用于图形界面启动项,GRUB_CMDLINE_LINUX才是所有内核通用参数 - 如果系统启用了
GRUB_DEFAULT=saved,还需确认当前默认启动项确实指向你改的那个内核(可用grub2-editenv list查看) - 某些云镜像或定制 ISO 会把
rhgb和quiet去掉才能看到完整启动过程,方便定位参数是否被解析
真正容易被忽略的是:参数生效 ≠ 功能正常。比如加了 net.ifnames=0,但 network service 仍按 ens33 名字找设备,就得同步改 /etc/sysconfig/network-scripts/ifcfg-* 文件里的 DEVICE= 字段。










