启动设备太多可供选择

启动设备太多可供选择

我使用两个单独的 m.2 SSD 双启动 Windows 11 和 Debian 12:

  1. 三星 980 Pro:Debian 12
  2. CT10000P3SSD8(至关重要):Windows 11

我没有其他物理或分区。

如果我需要在两个操作系统之间切换,我只需在启动时按 F12 并选择操作系统即可。见下图:

在此输入图像描述

我的问题是为什么我会看到这么多选项?我只想看到列出的两个选项:Debian Samsung SSD 980 Pro 和 CT10000P3SSD8。我怎样才能做到这一点?

运行这两个命令后更新:lsblk -o +PARTUUID 和 sudo efibootmgr -v:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS PARTUUID
nvme0n1     259:0    0 465.8G  0 disk             
├─nvme0n1p1 259:1    0   512M  0 part /boot/efi   c87cc3b1-6e6b-4345-af08-8340743d0670
├─nvme0n1p2 259:2    0 464.3G  0 part /           c77cf17f-b626-4c68-af3a-c96c1e90c025
└─nvme0n1p3 259:3    0   976M  0 part [SWAP]      b7e19d19-aab0-40a2-989c-38215499d658
nvme1n1     259:4    0 931.5G  0 disk             
├─nvme1n1p1 259:5    0   100M  0 part             daec26ee-01
├─nvme1n1p2 259:6    0 930.8G  0 part             daec26ee-02
└─nvme1n1p3 259:7    0   674M  0 part             daec26ee-03

username on debian ~ took 12ms ❯ efibootmgr -v
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 000A,0007,0009,0000,0006
Boot0000* debian        HD(1,GPT,c87cc3b1-6e6b-4345-af08-8340743d0670,0x800,0x100000)/File(\EFI\DEBIAN\SHIMX64.EFI)
Boot0006  Windows Boot Manager  HD(1,GPT,c87cc3b1-6e6b-4345-af08-8340743d0670,0x800,0x100000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot0007* debian        HD(1,GPT,c87cc3b1-6e6b-4345-af08-8340743d0670,0x800,0x100000)/File(\EFI\DEBIAN\GRUBX64.EFI)..BO
Boot0009* Samsung SSD 980 PRO 500GB     BBS(HD,,0x0)..BO
Boot000A* CT1000P3SSD8  BBS(HD,,0x0)..BO

答案1

一些背景

Windows Boot Manager由于您看到诸如和 之类的命名引导条目debian,因此您显然拥有一个带有 UEFI 固件的系统,以 UEFI 本机模式引导命名操作系统。由于指定的启动项之一涉及 Windows,因此它还表明您的磁盘使用 GPT 分区样式,因为 Microsoft 通过设计将分区样式和固件类型的选择捆绑在一起:Windows 仅支持旧版 BIOS + MBR 的组合,或者UEFI + GPT:与 Linux 不同,您不能混合使用这两组。

大多数 UEFI 系统仍然能够运行 BIOS 兼容性支持模块 (CSM),尽管根据 Microsoft Windows 8.1 认证要求,它可能已默认禁用。

在 BIOS 兼容模式下,您基本上只需选择要从中启动的磁盘,除了磁盘供应商/型号名称之外,没有任何标签。磁盘主引导记录 (MBR) 中的代码将决定接下来发生的情况:经典的 Windows MBR 将查找启用了引导标志的主分区。 GRUB 的 BIOS 版本将忽略分区引导标志并遵循其配置。

在 UEFI 模式下,要完全识别启动目标,理想情况下应该同时指定分割和一个启动文件名在那个分区上。 UEFI 固件具有从 FAT 类型文件系统(通常不包括 exFAT)格式化的分区读取文件的内置功能。在 GPT 分区中,有一个指定的分区类型,称为“EFI 系统分区”或简称 ESP,它预计包含安装在包含 ESP 的磁盘上的所有操作系统的引导加载程序。

同一磁盘上可以有多个 ESP,但我不建议这样做,因为固件级启动选择用户界面并不总是支持这一点。由于系统的启动菜单没有指示分区号,我怀疑在每个磁盘上显示多个 ESP 时可能会遇到一些麻烦 - 或者至少,您在区分启动项时会遇到更多麻烦。

在 UEFI 启动方式中,安装的操作系统预计会定义一个UEFI NVRAM 启动变量:这将创建一个命名的引导条目,然后该条目将指向特定 ESP 分区上的特定引导文件。

如果没有为某些 UEFI 可启动媒体定义启动变量,则 UEFI 固件可以查找可移动媒体/后备启动文件:在 64 位 x86 硬件中,它将是<ESP mountpoint>/EFI/BOOT/BOOTx64.efi,尽管 FAT 文件系统类型应该不区分大小写。


你的系统

底部的两个启动项(除了进入设置)实际上可能意味着“尝试在 UEFI 模式下启动此磁盘上第一个 ESP 上的可移动媒体/回退启动文件”,或“尝试在传统 BIOS 模式下从此磁盘启动”。不幸的是,启动菜单界面没有提供任何线索,表明它可能是两者中的哪一个。

Linuxefibootmgr -v输出表明与它们关联的 UEFI 设备路径是BBS(HD,,0x0)..BO,其中 BBS 指的是BIOS 启动规范,它早于 UEFI,因此这两个条目似乎用于在传统 BIOS 模式下启动。

的两个条目debian显示为efibootmgr -v“已启用安全启动支持的 Debian”(Boot0000,指定\EFI\DEBIAN\SHIMX64.EFI为启动文件)和“不带安全启动支持的 Debian”(Boot0007,跳过填充程序并直接进入\EFI\DEBIAN\GRUBX64.EFI)。

根据第二个磁盘上 PARTUUID 字符串的简短程度,您的 Windows 磁盘似乎是 MBR 分区的,这对于 Windows 来说意味着以 BIOS 方式启动。这表明启动菜单中的“Windows 启动管理器”条目可能是早期安装的无功能残留:if (并且仅当)确实如此,您可以在 Linux 中删除它,方法是注意它位于引导变量中Boot0006,然后使用efibootmgr以下命令删除它:

sudo efibootmgr -b 0006 -B

表示BootCurrent: 0000您已使用安全启动兼容方法(该Boot0000行)成功启动 Debian。我强烈建议您继续使用它来保证您的系统面向未来。您可以Boot0007使用以下命令删除 Debian ( )的非安全启动条目:

sudo efibootmgr -b 0007 -B

不幸的是,只要您的 Windows 磁盘仍然是 MBR 分区,因此您的 Windows 必须以旧版 BIOS 方式启动,删除上面提到的两个启动项可能是最好的选择。由于固件无法知道所有可能的可启动和不可启动的MBR启动代码内容,因此它可能无法确定三星磁盘的MBR是否实际上是BIOS风格的可启动,因此它会显示无论如何,为了安全起见,它的菜单项。

禁用旧版 BIOS 兼容模式将删除底部的两个启动选项,但只要您的 Windows 位于 MBR 分区磁盘上,您就无法执行此操作(除非 Windows 11 悄悄添加了对 UEFI + MBR 的支持) - 分区磁盘组合)。

为了确保即使您的固件设置完全丢失(BIOS 更新可能会发生这种情况,具体取决于系统供应商),您的 Debian 也能轻松启动,您可能需要在可移动媒体路径中安装 Debian 引导加载程序的第二个副本:

sudo grub-install --uefi-secure-boot --force-extra-removable /dev/nvme0n1

这可能会在“Samsung SSD”启动项中添加某种“UEFI”注释,或者可能会完全添加另一个菜单项:如果不尝试,就不可能确定,因为固件实现各不相同。

答案2

您所看到的是 UEFI 和主板的功能。我在家里的 ASROCK 和工作的 Dell optiplex 上看到了类似的情况。

首先按 F2 或 DEL 或其他方式进入 BIOS/EFI,转到选项boot卡,针对每个菜单项查看它们并查看它们所指的磁盘。记录该信息以供参考;你会看到重复项。然后删除所有这些菜单项并从头开始重新添加它们,从每个磁盘中选择启动文件,然后相应地命名它......win11、Debian等等。

如果您只连接了 2 个 SSD,那么您会期望在上面的图片中只看到 2 个菜单条目,并且您可以按照我刚才的描述实现这一点。如果您连接了额外的磁盘,它们有时也会出现,或者当磁盘来来去去时,EFI 启动菜单中的条目会残留下来。

如果您在清理过程中遇到奇怪的情况,请检查您的主板是否有 BIOS 更新。

答案3

在我的系统上(与此问题无关的细节)BIOS/UEFI 所谓的“启动设备”实际上是引导加载程序,而不是物理设备或分区。从上面efibootmgr -v看来,您似乎安装了 2 个不同的引导加载程序(grubshim)。对于上下文双引导,通过使用主引导加载程序(在您的情况下可能是 grub)来工作,该主引导加载程序用于执行不同系统的其他引导加载程序,例如 Windows 引导加载程序。

这可以解释为什么菜单中列出了 2 个 Debian 条目。我不确定它是否shim实际上是 Debian 12 的默认引导加载程序(这可以解释为什么 grub 需要链式加载 shim),但我想将其切换为使用 grub 应该不会太难。从那里您可以运行os-prober以查找 Windows 引导加载程序并将引导条目添加到 grub 菜单。

我很确定这可能是解决这个问题的方法。另外,两个启动项都有效吗?如果没有,可能不会出现链式加载,但如果链式加载损坏了,我们无论如何都可以将其删除。如果您有任何问题,我很乐意(尝试)回答它们:D

相关内容