Linux 命令速查
系统管理 man grub-mkconfig

grub-mkconfig

根据系统配置生成 GRUB 引导菜单

返回

补充说明

grub-mkconfig 读取 /etc/default/grub 与 /etc/grub.d/ 下的脚本,探测已安装的内核,生成完整的 grub.cfg。它本身不写文件,默认把结果输出到标准输出,因此通常配合 -o 使用。

生成流程大致是:/etc/grub.d/00_header 生成头部,10_linux 枚举内核,30_os-prober(若启用)探测其他系统,40_custom 容纳自定义条目。要修改内核参数或超时时间,应编辑 /etc/default/grub 中的 GRUB_CMDLINE_LINUX、GRUB_TIMEOUT 等变量,而不是直接改 grub.cfg。

不同发行版有包装命令:Debian/Ubuntu 用 update-grub,RHEL 系用 grub2-mkconfig -o /boot/grub2/grub.cfg。EFI 与 BIOS 的 grub.cfg 路径不同,执行前先确认目标路径存在。

语法

grub-mkconfig [选项]

选项

  • -o 文件 / --output=文件:把生成的配置写入指定文件
  • -h / --help:显示帮助
  • -V / --version:显示版本

实例

# 预览生成的配置,不写入文件
sudo grub-mkconfig | less

# Debian/Ubuntu:重新生成配置
sudo grub-mkconfig -o /boot/grub/grub.cfg

# 等价的包装命令
sudo update-grub

# RHEL/CentOS:路径不同
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

# 修改默认内核参数后重新生成
sudoedit /etc/default/grub
# GRUB_CMDLINE_LINUX="quiet splash"
sudo grub-mkconfig -o /boot/grub/grub.cfg

# 添加自定义菜单项
sudoedit /etc/grub.d/40_custom
sudo grub-mkconfig -o /boot/grub/grub.cfg

/etc/grub.d/ 下的脚本必须具有可执行权限,否则会被跳过。启用 os-prober 探测其他操作系统时,Debian 12 起需要把 GRUB_DISABLE_OS_PROBER=false 写入 /etc/default/grub。

参考链接