我试图创建一个最终的USB棒,它将包含2个Linux发行版、Windows和大量的ISO。
到目前为止,我已经将Windows、Ubuntu和安装到磁盘上(我一直在VM中进行测试,以使事情更快)。在机器的UEFI启动菜单中,我可以看到所有的选项并成功地引导其中的任何一个。

在Fedora或Ubuntu菜单中,我可以引导Windows,但它们都无法彼此引导。

由于我最终也希望启动ISO文件,所以我需要能够从GRUB加载其他Linux安装程序。
我尝试过的
这确实有效,但是我不想这样做,因为我希望能够在其他人的机器上使用它,而且我可能不高兴禁用他们的安全引导。
GRUB通过链式加载程序加载Windows,所以我想我也可以在Linux上做同样的事情。
如果我chainloader /EFI/ubuntu/grubx64.efi (从Fedora的GRUB菜单),那么我会得到同样的垫片错误。
如果我使用chainloader /EFI/ubuntu/shimx64.efi (来自Fedora的GRUB菜单),那么我就可以找到Ubuntu的GRUB菜单了--尽管我在试图引导Ubuntu时仍然会遇到一个shim错误。
如果我正确理解,shimx64.efi就是UEFI实际加载的内容。该文件是否仅包含单个内核的安全引导信息?
当我选择将UEFI链接到另一个GRUB菜单时,我能让UEFI再次加载shimx64.efi吗?
有人能向我解释一下shimx64.efi的情况吗?如果可以从同一个GRUB菜单双引导两个Linux发行版,同时启用安全引导。
非常感谢,威尔
发布于 2022-07-25 00:38:54
如果我正确理解,那么shimx64.efi就是UEFI实际加载的内容。该文件是否仅包含单个内核的安全引导信息?
差不多但不完全正确。每个发行版的shim版本都由Microsoft签名,该shim包含其所属发行版的安全启动公钥。当使用shim时,它暂时(非持久化)将发行版的安全启动密钥添加到允许引导系统的密钥列表中。另外,shim还可以添加机器所有者的密钥(MOK)。
因此,当您加载Fedora的shimx64.efi时,安全引导就可以接受由Fedora签名的内容。然后加载grubx64.efi,它由Fedora签名,现在可以被安全引导固件接受。当grubx64.efi加载Fedora的内核时,内核文件由Fedora签名,因此安全引导允许执行内核代码。
如果您想构建自定义内核,则必须创建一个MOK并使用它对您的自定义内核进行签名。此外,如果您想构建自定义或第三方内核模块,您也必须与MOK签署它们,因为安全启动“契约”的一个部分是,必须不允许任何未经签名的内核代码。因此,当启用安全引导时,引导加载程序必须检查内核的签名,内核必须检查每个模块的签名。
您将无法用发行版的安全启动密钥签署任何内容,因为这需要发行版安全启动密钥的私有部分--这可能是负责相应发行版安全性的人员非常安全的。
在其他人的机器上安装你的MOK几乎和禁用他们的安全启动一样糟糕,因为这样你就可以在他们的系统上启动任何东西。
显然,在加载了一个shim之后,链接加载另一个shim副本在理论上是可行的,但是shim的源代码注释表明它并不是很简单.
https://unix.stackexchange.com/questions/711118
复制相似问题