在启用安全启动的情况下,从Windows引导管理器链式加载到Grub

我有一台带有Bitlocker的UEFI笔记本电脑,Windows分区上安装了它。为了使Bitlocker正常工作,这强制要求主引导加载程序是启用了安全启动的Windows引导管理器。也就是说,在这种设置下,只有当Windows引导管理器是UEFI首先调用的内容时,Windows才能启动,因为Bitlocker使用的加密密钥存储在TPM中。
从Grub链式加载Windows引导管理器不起作用(Windows会抱怨安全启动环境不再安全),所以我们必须采取另一种方式:使用bcdedit.exe将Ubuntu的shimx64.efi添加到Windows引导管理器的菜单项中。
我尝试过各种技巧,如bcdedit /copy、bcdedit /create等等...但即使Windows检测到该项,当跳转到它时,我在启动时会遇到致命错误。
File: \EFI\ubuntu\shimx64.efi
Status: 0xc000007b
Info: The application or operating system couldn't be loaded because a required file is missing or contains errors.

有人知道如何正确使用bcdedit命令添加Ubuntu启动项吗?谢谢。
[请注意,this answer的回答很遗憾地产生了上述结果]
编辑:请注意,如果我进入UEFI BIOS并选择Ubuntu启动项,Linux可以正常加载。所以目前我只能通过进入BIOS并选择想要启动的操作系统来解决问题。
编辑2:Linux不使用Bitlocker,也不打算这样做;它在这里的作用是加密Windows分区。

1你在/EFI/ubuntu目录下是否有grubx64.efi的副本与shimx64.efi一起? - ubfan1
1在Windows中,对于Fedora的命令是:bcdedit /set {bootmgr} path \EFI\fedora\grubx64.efi。您需要更新路径以适应Ubuntu的.efi文件。 - Panther
@ubfan1 是的,/boot/EFI/ubuntu 看起来没问题,我可以从 BIOS UEFI 菜单中无问题地启动 Linux [但这非常不方便]。 - ejgallego
@Panther,谢谢你的建议,但是这个解决方案不可行,因为它会将主引导加载程序设置为grub,然后如果我们链式加载Windows引导加载程序,Bitlocker会报错。 - ejgallego
不要做这两件事情。不要从GRUB加载Windows引导管理器。也不要从Windows引导管理器加载GRUB。这两种方式都无法与安全启动兼容。从UEFI加载它们吧。然后你需要在各自主板的UEFI启动菜单中选择要启动的方式。正如你在回答中提到的,这是正确的做法,如果你想让安全启动正常工作的话。 - jdwolf
@jdwolf - 这取决于BIOS。在我的笔记本电脑上,我无法进行链式加载,并且无法像你描述的那样选择要启动的操作系统。而在我的台式机上,我使用了我提供的命令来双启动Windows 10和Fedora 27,启用了安全启动,可以引导到grub并进行链式加载Windows。OP通过使用Bitlocker增加了另一个复杂性。 - Panther
@ejgallego - 你应该考虑更新你的问题描述,说明你正在做什么。使用Bitlocker引导Windows是另一种复杂性层面。你应该在问题中提供这些细节,而不是在评论中。 - Panther
@Panther 我不明白Bitlocker如何与此相关。它应该在Windows上正常工作。我不指望它能在Linux上工作,而且我也不明白通过从Windows引导管理器链加载grub会使其更有可能工作。 - jdwolf
@Panther 我不确定应该如何更新我的问题,因为 Bitlocker 在第一句中提到了。 - ejgallego
@jdwolf 我正在谈论Bitlocker在Windows本身上的工作,无论从Grub引导时,Windows都能正常工作,除非需要Bitlocker加密密钥来打开C盘,这是我在这里遇到的问题。我会尝试稍微修改一下问题。 - ejgallego
@ejgallego 好的,那么解决方案就很简单了。不要使用链式加载Windows。从UEFI加载Windows。不要从Windows引导管理器加载GRUB/Linux(shim.efi实际上是Linux而不是Grub)。从UEFI加载它。 - jdwolf
谢谢@jdwolf,确实这就是我现在正在做的,但它还有其他缺点,所以我对从WBL链加载Grub很感兴趣,我知道这是可行的,只是我还没有找到正确的方法。 - ejgallego
它有什么缺点? - jdwolf
1嗨@jdwolf,主要有三个问题:a)选择操作系统的窗口非常短,所以我往往会错过它;b)当我按Enter + F12时,会发出巨大的“bleep”声[这是X1 Yoga第3代];c)到达启动菜单需要很长时间。尽管如此,这还是可以忍受的,但我更希望有一个WBM解决方案。 - ejgallego
@ejgallego 你应该看一下REFInd。http://www.rodsbooks.com/refind/ https://wiki.archlinux.org/index.php/REFInd 这是一个与UEFI兼容的引导管理器。你可以使用它来加载GRUB、Windows或EFI-stub(直接加载Linux)。 - jdwolf
我自己没有尝试过,但也许这个可以行得通?https://sourceforge.net/projects/grub2win/ - tst
好的,我刚刚自己试了一下。 grub2win 实际上替换了默认的 Windows EFI 引导程序,并且需要关闭安全启动。所以这不是你要找的解决方案。 - tst
1个回答

从UEFI引导Linux和Windows。就是这么简单,你可以看到,无论是从GRUB引导Windows还是从Windows引导管理器引导Linux/GRUB,都会对安全启动和Bitlocker产生一些问题。
许多主板通过按F11键提供UEFI引导菜单。如果这个方法不起作用,请尝试按Esc或Delete键,可能会进入功能菜单,或者直接进入配置界面,该界面可能提供引导顺序配置或“即时引导”选项,与引导菜单的功能相同。
关键在于你是从UEFI选择所需的操作系统,而不是从引导加载程序选择。