一个疑似 grub 的 bug

三块硬盘,全部 gpt 分区格式。
第一块 500G nvme SSD,装 win
第二块 sata SSD,装 opensuse
第三块 hdd,文档盘

grub2-efi 装在 sata SSD 的 efi 分区,win 的引导装在 nvme 盘的 efi 分区。

现在问题是,grub2-efi 的 windows 引导菜单项,不能正常引导 win。

报错如下:
error:no such device:92C3-83AC
ERror:file ‘/efi/Microsoft/Boot/bootmgfw.efi’ not found.

Press any key to continue…

进入 opensuse 后检查 uuid:

#blkid /dev/nvme0n1p1
/dev/nvme0n1p1: LABEL=“EFI-500” UUID=“92C3-83AC” TYPE=“vfat” PARTLABEL=“EFI system partition” PARTUUID=“76e8c1df-bc3f-4ca0-813d-2a46616030d8”

/dev/disk/by-uuid # ls
329fc2b6-d2ed-4c64-8aea-8b09c34c3eea 7663ac5f-ba35-45bb-a68c-f4c2e69d746d e77a3159-ebf6-41b4-8a02-0826aaec297e
386C088A6C0844DA 7a67ee15-5ae9-4fb7-8ae0-0474cfd49271 e9b7a17d-ff96-430b-9909-bd6cfc356b02
67E3-17ED 92C3-83AC FE20-83D4
6AE86C13E86BDC37 E04A4C204A4BF238

从以上运行结果来看,grub2 读取到的 uuid 与系统内读取到的吻合,但这个报错~~~

百思不得其解。

两块盘的话就不要用 grub 来引导 windows,直接开机 F11 从主板选择从哪块盘启动

建议你把 grub prober 这个包 (应该叫这个吧) 删掉,不要让他检测外来操作系统

/boot/grub2/grub.cfg 里的 Windows 段落晒一下

menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-92C3-83AC' {
    insmod part_gpt
    insmod fat
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  92C3-83AC
    else
      search --no-floppy --fs-uuid --set=root 92C3-83AC
    fi
    chainloader /efi/Microsoft/Boot/bootmgfw.efi

}

os-probe 自动生成的配置:

grub-prober 运行时候你跑的是 DVD 或者正常的系统,那个盘是能挂载的。单跑 grub2 的时候那个盘是没挂载的。它只支持把所有系统的引导都装到一个 efi 底下

1赞

我试试把 grub 重新安装到第一块盘的 efi 看看。

grub 安装到第一块盘的 efi 分区解决。

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。