系统升级后内核参数被重置,本质是grub配置未同步更新:升级只更新内核镜像和initramfs,不修改/etc/default/grub或重建grub.cfg;需对比cat /proc/cmdline与grep grub_cmdline_linux /etc/default/grub确认差异,存在备份文件(如.grub.rpmsave或.dpkg-old)时应合并关键参数,再执行grub2-mkconfig或update-grub重建配置并验证。

系统升级后内核参数被重置,本质是 GRUB 配置未同步更新,而非内核本身“忘记”了参数。升级过程通常只更新内核镜像和 initramfs,但不会自动修改 /etc/default/grub 中的 GRUB_CMDLINE_LINUX,更不会重新生成 grub.cfg。一旦你之前手动改过启动参数(比如加了 quiet splash、net.ifnames=0 或 iommu=off),升级后这些改动就可能丢失。
确认是否真被重置
别急着改配置,先验证当前生效的参数:
- 运行
cat /proc/cmdline—— 这是**当前正在运行的内核实际加载的全部参数**,最权威; - 对比
grep GRUB_CMDLINE_LINUX /etc/default/grub—— 这是你期望下次启动时使用的参数; - 如果两者不一致,说明
grub.cfg没有按最新配置重建,参数确实“丢了”。
检查 GRUB 配置文件是否被覆盖或备份
升级时包管理器可能把你的自定义 /etc/default/grub 替换为新版本默认值,并保留旧版为 .rpmsave 或 .dpkg-old:
- RHEL/CentOS/Fedora:运行
ls -l /etc/default/grub*,看是否存在grub.rpmsave; - Debian/Ubuntu:查
grub.dpkg-old或grub.ucf-old; - 若有备份,用
diff -u /etc/default/grub.rpmsave /etc/default/grub对比差异,把关键参数(如rd.md=0、mitigations=off)合并回去。
重建 GRUB 配置并验证
改完 /etc/default/grub 后,必须显式重建启动菜单:
- BIOS 启动(传统 Legacy):运行
grub2-mkconfig -o /boot/grub2/grub.cfg; - UEFI 启动:目标路径通常是
/boot/efi/EFI/fedora/grub.cfg或/boot/efi/EFI/ubuntu/grub.cfg,具体看发行版,可用find /boot/efi -name "grub.cfg"定位; - 执行后检查输出是否有
Found linux image类提示,确认新参数已写入; - 重启前可临时在 GRUB 菜单按
e编辑启动项,直接在linux行末尾加参数测试,避免误操作导致无法进系统。
排查是否被 systemd 或 initramfs 干扰
有些参数(如 systemd.unified_cgroup_hierarchy=1 或 rd.driver.pre=xxx)需同时满足内核命令行 + initramfs 支持。若参数看似生效但行为异常:
- 运行
lsinitrd | grep -i "your_param",确认该参数是否被 initramfs 解析识别; - 检查
journalctl -k | grep -i "command line",看内核是否在启动早期就记录了参数解析结果; - 某些发行版(如 Ubuntu)会通过
/etc/default/grub.d/下的碎片文件叠加参数,别只盯着主文件。











