Grub 的控制台 ls 命令检测到的驱动器比我实际拥有的多一个

Grub 的控制台 ls 命令检测到的驱动器比我实际拥有的多一个

我有两个驱动器。第一个只有一个ext4分区,用于存储数据。第二个有七个分区,包括 EFI 引导分区和四个操作系统。由于某种原因,grub 的控制台检测到三个驱动器:

grub> ls
(hd0) (hd1) (hd1,gpt1) (hd2) (hd2, gpt1) (hd2, gpt2) (hd2, gpt3) (hd2, gpt4) (hd2, gpt5) (hd2, gpt6) (hd2, gpt7)

虽然grub的LS命令列出了“移动”到右侧的驱动器(例如显示真实的(HD1,GPT1)作为(HD2,GPT1),真实的(HD1,GPT2)作为(HD2、GPT2)等),grub.cfg 中的菜单项已根据实际驱动器顺序正确配置:

...
set root='hd1,gpt2' #Part of Fedora's menu entry. Boots normally.
...
set root='hd1,gpt3' #Part of Slackware's menu entry. Boots normally. 
...
set root='hd1,gpt1' #Part of Windows 10 menu entry. Points to EFI Boot Partition and boots normally.
...

唯一抱怨 grub.cfg 上配置的分区的操作系统是 FreeBSD:

...
set root='hd1,gpt5' #Part of FreeBSD's menu entry. Causes an error.
...

尝试启动 FreeBSD 会抛出以下消息:

../../grub-core/net/net.c:1547:disk not found

当我将 FreeBSD 菜单项更改为HD2、GPT5,它尝试启动,但会重新启动机器。不过,我认为这种行为与这个问题无关。

为什么grub会显示这个“幻影”(HD0)驾驶?它从何而来?可以修复吗?

PS:我已经测试过,这种行为发生在两个不同的 grub 实例上。一个来自 Fedora,另一个来自 Slackware。 Booth 实例是 grub 2.04。

相关内容