禁用 Windows 对 UEFI NVRAM 的访问

禁用 Windows 对 UEFI NVRAM 的访问

我编写了 bash 脚本,将 Grub 条目添加到 UEFI NVRAM。脚本由可启动的 USB Linux 调用。此命令添加条目:

efibootmgr -c -d /dev/sda -p 2 -L "Grub2" -l "\EFI\Boot\shimx64.efi" 

脚本运行正常。但后来我从 Partclone 映像安装了 Windows。

Windows 覆盖启动顺序并添加新条目。它发生在 Windows 加载期间。重启后 Grub2 消失。

我不想在 Windows 上进行更改(bcdedit bootmgr),因为我有现成的图像(由 partclone 制作)

是否可以禁用 Windows 对 UEFI NVRAM 的访问?是否可以从 Grub EFI(安全启动)运行 Windows,而无需 Windows 启动管理器(我的意思是直接使用 winload.efi)?

你有什么主意吗?

答案1

我不知道如何阻止 Windows 写入 NVRAM 并修改 EFI 变量;但是,您还可以做其他事情......

请参阅我的回答这个问题一些可能有用的工具。bcdedit在这方面最有可能有用。你也可以尝试简易UEFI,我在之前写回复的时候还没用过它。

另一种选择是创建系统启动和/或关闭脚本,自动恢复所需的启动配置。您可以bcdedit在 Windows 中使用,但我不是 Windows 用户,无法提供详细信息。在 Linux 中执行此操作不太可能是必要的,因为 Linux 不是罪魁祸首;但如果是,您可以使用efibootmgr——或者为了更轻松一点,您可以使用refind-mkdefault脚本,我将把它添加到 rEFInd 的下一个版本中。默认情况下,此脚本将 rEFInd 设置为默认启动程序,但如果您通过选项向其传递另一个工具的名称(文件名或说明)-L,则脚本将改为将其设置为默认启动程序。

在最坏的情况下,您可以重命名或移动 Windows 引导加载程序文件(EFI\Microsoft\Boot\bootmgfw.efi在 ESP 上)并将其替换为其他文件,然后将 Shim 替换为 GRUB 副本。这将导致 GRUB 启动而不是 Windows 引导加载程序。不过,您需要重新配置 GRUB 设置才能正确启动 Windows 引导加载程序。引导修复工具可以自动执行此操作;该选项位于“高级”菜单上,名称类似于“备份和替换 Windows 启动文件”(我不记得确切的名称)。这种方法的主要缺点是,如果 Windows 更新其引导加载程序,您将需要重新应用此修复程序。它还很混乱;磁盘文件名和 NVRAM 启动条目会产生误导,这可能会使将来的修复变得复杂。

相关内容