如何防止Linux吸收Windows启动管理器?

如何防止Linux吸收Windows启动管理器?

我的服务器中插入了 2 个 SSD。一台安装了 Windows Server 2019,另一台安装了 RadHat 8.3。

让我有点恼火的是,每次我安装 Windows 和 RedHat 时,RedHat会删除原来的Windows Boot Manager并在自己的EFI分区中创建一个新的,无论它们的安装顺序如何。

有没有办法

  1. 撤消 RedHat 所做的事情
  2. 并防止将来发生这种情况?

答案1

首先,RedHat 安装程序是否真的删除了 Windows EFI 分区的内容(除非您选择重新格式化该分区,否则不太可能)?

RedHat安装完成后,运行efibootmgr -v查看NVRAM启动变量。

Windows 启动项应类似于以下内容:

Boot0000* Windows Boot Manager  HD(1,GPT,12345678-9abc-def0-1234-56789abcdef0,0x800,0x82000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.0.1.2.3.4.5.6.7.-.8.9.a.b.-.c.d.e.f.-.0.1.2.3.-.4.5.6.7.8.9.a.b.c.d.e.f.}...d................

如果“Windows Boot Manager”条目消失了,您应该能够使用以下命令重建它:

efibootmgr -c -L "Windows Boot Manager" -l \\EFI\\MICROSOFT\\BOOT\\BOOTMGFW.EFI -d <disk containing Windows ESP>

(当然,它将丢失 Windows 使用的额外二进制参数,但 Windows 似乎可以自行恢复该参数。Windows 启动管理器条目中的第一个 GUID 应自动生成,以efibootmgr匹配 PARTUUID包含 Windows 启动管理器的 ESP 分区。)

如果Windows条目只是被停用或在优先级列表中被推低,您可以使用其他efibootmgr选项来修复它。我认为这是最有可能发生的事情,除非您的系统固件在处理 UEFI 启动变量方面有一些怪癖。

例如,某些 UEFI 实现将“有效地”删除任何似乎引用不再存在的磁盘的引导条目。如果系统磁盘出现间歇性故障,这种行为可能会为恢复过程增加额外的步骤。

相关内容