200字
Grub 自动扫描其他系统引导
2026-01-15
2026-01-15

Grub自动扫描其他系统引导

多系统环境中,可能会出现Grub引导菜单缺失其他系统、内核更新后引导项丢失等问题。

实现Grub自动扫描其他系统引导,需要使用的三个工具:

  • os-prober:系统探测核心工具,用于扫描本地已挂载的所有分区,识别其中安装的操作系统(包括Windows、macOS、各类Linux发行版等),并获取系统类型、启动文件路径等关键引导信息,为后续配置提供数据支撑。
  • grub-mkconfig:Grub配置生成工具,功能是调用os-prober获取所有系统的引导信息,按照规则或自定义配置,自动生成Grub主配置文件(默认路径为/boot/grub/grub.cfg)。
  • Grub Customizer(可选):可视化Grub配置工具,通过图形界面简化操作,可以自动调用os-prober完成系统扫描,将结果可视化展示,用户确认后自动触发grub-mkconfig生成配置,无需手动输入命令,支持引导项编辑、配置备份等扩展功能。

安装os-prober

很多Linux发行版并没有默认没有安装os-prober。

根据你的Linux发行版,执行对应的安装命令,以Arch为例:


sudo pacman -S os-prober

开启Grub自动扫描功能

安装完os-prober并完成分区挂载配置后,还需要确保Grub的配置文件中开启了“允许调用os-prober”的选项,否则grub-mkconfig不会主动探测其它系统。

Grub的主配置文件是/etc/default/grub,执行以下命令用文本编辑器打开:


sudo vim /etc/default/grub

在文件中找到以下配置项(如果没有,直接添加到文件末尾):

# 允许Grub调用os-prober探测其它系统
GRUB_DISABLE_OS_PROBER=false

生成Grub配置并生效

配置完成后,需要执行grub-mkconfig命令生成新的引导配置文件,命令如下:


sudo grub-mkconfig -o /boot/grub/grub.cfg

执行命令后,终端会输出扫描过程,比如类似这样的内容:


Found Windows 10 on /dev/nvme0n1p1
Found Ubuntu 23.04 on /dev/nvme0n1p2
Found Fedora 39 on /dev/nvme0n1p3

这说明os-prober已经成功识别到了其它系统,并且已经写入Grub配置。此时重启电脑,就能在Grub引导菜单中看到所有被识别的系统了。

Grub Customizer可视化扫描配置

Grub Customizer是一款可视化Grub配置工具,核心价值在于将os-prober探测、grub-mkconfig配置生成等命令行操作转化为图形化界面,可通过界面完成系统扫描、引导项编辑、配置备份与还原等操作,适用于所有系统共用一个EFI分区的场景,也可用于常规多系统引导配置。以下为具体安装及扫描步骤:

不同发行版安装Grub Customizer

Grub Customizer在主流Linux发行版的官方源中均有收录,部分发行版需先添加专用源,以Arch为例:


yay -S grub-customizer

启动Grub Customizer并完成系统扫描

打开Grub-Customizer,选择常规设置,勾选查找其他系统:

进入常规设置之后,点击右下角的选择高级设置,勾选GRUB_DISABLE_OS_PROBER,并设置为false,然后关闭:

回到列表配置,点击保存,扫描出来的引导会显示在下方列表:

评论