编译安装新内核后需更新GRUB配置文件使其收录新内核:先确认/boot下存在vmlinuz-和initramfs-对应文件及/lib/modules/版本目录,再执行sudo update-grub(Ubuntu/Debian)或sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL系),最后可修改/etc/default/grub中GRUB_DEFAULT并再次更新以设为默认启动项。

编译安装新内核后,系统不会自动把它加入启动菜单——引导加载程序(主要是 GRUB)需要明确知道新内核的位置和参数,才能在开机时提供选择。关键不是“重装 GRUB”,而是**更新它的配置文件**,让其扫描并收录 /boot 下新增的内核镜像和 initramfs。
确认新内核已正确安装到 /boot
执行以下命令检查是否已有对应文件:
-
ls /boot/vmlinuz-*—— 应能看到你刚编译安装的新版本,例如vmlinuz-6.11.0 -
ls /boot/initramfs-*.img—— 对应的 initramfs 文件也必须存在,否则无法启动 -
ls /lib/modules/—— 新内核模块目录(如6.11.0)应已生成且非空
运行 update-grub(Debian/Ubuntu 系统)
这是最常用、最稳妥的方式。它会自动扫描 /boot,读取所有可用内核,并生成新的 grub.cfg:
- 执行:
sudo update-grub - 输出中应包含类似
Found linux image: /boot/vmlinuz-6.11.0的提示 - 该命令本质是调用
grub-mkconfig,使用/etc/default/grub和/etc/grub.d/下的脚本生成配置
手动运行 grub-mkconfig(RHEL/CentOS/Rocky/AlmaLinux)
这些系统默认不提供 update-grub 别名,需直接调用生成工具:
- 执行:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg - 注意路径:GRUB2 配置文件通常为
/boot/grub2/grub.cfg(而非/boot/grub/grub.cfg) - 若使用 UEFI,确保
/boot/efi/EFI/<distro>/</distro>下的grub.cfg或 BOOTX64.EFI 未被覆盖;通常只需更新主配置即可
验证并设置默认启动项(可选但推荐)
更新完配置后,建议确认新内核是否出现在菜单,并设为默认(避免下次重启仍进旧内核):
- 查看当前菜单项顺序:
grep menuentry /boot/grub/grub.cfg | cat -n - 编辑
/etc/default/grub,修改GRUB_DEFAULT=0(表示第一个菜单项),或设为GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.11.0"(精确匹配名称) - 改完再运行一次
sudo update-grub或sudo grub2-mkconfig...生效


















