正确做法是修改 /etc/default/grub 中 GRUB_CMDLINE_linux_DEFAULT 行添加参数,再执行 update-grub(debian/ubuntu)或 grub2-mkconfig(RHEL/centos/Fedora)生效;临时修改可在 GRUB 启动菜单按 e 编辑 linux 行,仅本次有效。

linux 系统 启动时修改内核参数,核心是编辑 /boot/grub/grub.cfg(或其上游 配置文件),但直接改它不推荐——因为下次更新内核或运行 update-grub 会覆盖。正确做法是修改 GRUB 的主配置源文件,再生成生效的 grub.cfg。
确认你的 GRUB 版本和配置路径
大多数现代发行版(Ubuntu、Debian、CentOS 8+/RHEL 8+、Fedora)使用 GRUB2,主 配置文件 是:
- /etc/default/grub —— 控制全局行为(如默认菜单项、超时、内核参数)
- /etc/grub.d/ 目录下的脚本 —— 控制菜单项生成逻辑(如 10_linux、30_os-prober)
运行 grub-install --version 或 dpkg -l | grep grub(Debian/Ubuntu)可确认版本;ls /boot/grub* 可查看实际路径(部分系统用 /boot/grub2/)。
修改内核启动参数(cmdline)
编辑 /etc/default/grub,找到这一行:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
在引号内添加你需要的参数,例如启用 initcall debug、禁用 nouveau 驱动、调整内存限制等:
- 加
initcall_debug:用于内核初始化调试 - 加
nouveau.modeset=0 rd.driver.blacklist=nouveau:禁用 nouveau,为安装 nvidia 驱动铺路 - 加
systemd.log_level=debug:提升 systemd 日志级别 - 加
net.ifnames=0 biosdevname=0:恢复传统网卡名(eth0)
改完后保存,** 必须执行以下命令才能生效 **:
sudo update-grub # Debian/Ubuntu
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL/CentOS/Fedora
临时修改单次启动参数(无需重启配置)
开机时在 GRUB 菜单界面按 e 键进入编辑模式,找到以 linux 开头的行(即内核命令行),在末尾空格后追加参数(如 rd.break 进入 initramfs 调试、systemd.unit=rescue.target 进救援模式)。按 Ctrl+X 或 F10 启动——该修改仅对本次有效,不影响配置文件。
验证与排错要点
- 修改后务必运行
update-grub或grub2-mkconfig,否则不会写入grub.cfg - 检查生成结果:
grep "linux.*root" /boot/grub/grub.cfg | head -1,确认新参数已出现在对应内核行中 - 若启动失败(如黑屏、卡 logo),可进 GRUB 编辑界面删掉刚加的参数临时恢复,再排查语法错误(参数间用空格分隔,不能有中文、特殊符号或换行)
- 某些参数需内核编译支持(如
mitigations=off),旧内核可能忽略或报错