背景
Ubuntu 21.10可以通过安全引导加载到我的计算机上,填充程序版本为15.4。然后参考官方教程,我在Ubuntu 21.10中通过PPA安装了rEFInd v0.13.2(发布此博客时的最新版本)。但是,当我重新启动系统并加载rEFInd时,它总是失败,并显示消息Verification failed:(0x1A)Security Violation
。我确信EFI/refind/keys/
下的refind_local.cer
和refind.cer
都已通过MokManager
注册(尽管通过PPA安装只需要refind_local.cer
)。
原因
从这篇文章中,我了解到rEFInd当前(v0.13.2)缺少.sbat
部分。对于垫片15.3和更高版本,SBAT是强制性的,导致无法启动rEFInd。
帖子还指出,rEFInd的作者目前正在研究如何解决相关问题。我希望以后的版本能够解决这个问题。
解决方案
最后,您需要使用垫片15来解决此问题。为此,您可以执行以下步骤(适用于amd64。如果您使用其他架构,步骤也类似):
- 从Ubuntu启动板获取MokManager和Microsoft签名的shim-efi文件。要实现这一点,请下载shim_15+1552672080.a4a1fbe-0ubuntu2_and64.deb和shim-signed_1.45+1552672080-064ubuntub_bed64.deb
- 将下载的shim_15+1556272080.a4a1fbe-0ubuntu2_amd64.deb解压,取出
mmx64.efi
文件。(data.tar.xz
->.
->usr/lib/shim/mmx64.efi
) - 打开下载的shim-signed_1.45+1552672080.a4a1fbe-0ubuntu2_ad64.deb,取出
shimx64.efi.dualsigned
文件。(data.tar.xz
->.
->usr/lib/shim/shimx64.efi.dualsigned
)将其重命名为shimx64.efi
- 下载refid-bin-0.13.2.zip。然后创建一个新文件夹,将取出的两个文件和下载的zip文件一起放入新文件夹
- 打开前面提到的文件夹中的终端,然后执行以下命令:
unzip refind-bin-0.13.2.zip
cd refind-bin-0.13.2
sudo ./refind-install --shim ../shimx64.efi
如果在安装过程中遇到任何确认,只需输入y
即可进行确认。
- 重新启动后,如果提示
Verification failed
,请参阅官方教程的步骤9。选择Enroll key from disk
,然后选择安装rEFInd的ESP磁盘。最后,选择路径为EFI/refind/keys/refind.cer
的文件进行导入 - 如果您在计算机上使用非Ubuntu Linux系统,您可以继续导入与
EFI/refind/keys
中的发行版相对应的cer文件,如上所述。如果不这样做,可能会导致您的Linux发行版无法通过rEFInd启动