rEFInd unable to load using shim when Secure Boot is enabled的解决方法
A solution to rEFInd unable to load using shim when Secure Boot is enabled
背景
Ubuntu 21.10可以通过secure boot加载到我的电脑上,shim版本是15.4。然后参考官方tutorial,我在Ubuntu21.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
)。
原因
From this post, I got that rEFInd currently (v0.13.2) lacks the .sbat
section. For shim 15.3 and later versions, SBAT是必须的,导致rEFInd启动失败
post也说明rEFInd的作者目前正在研究如何解决相关问题。希望以后的版本可以解决这个问题
解决方案
综上所述,您需要使用 shim 15 来解决此问题。为此,您可以执行以下步骤(适用于amd64。如果您在其他架构上,步骤也类似):
- 从Ubuntu launchpad. To achieve this, download shim_15+1552672080.a4a1fbe-0ubuntu2_amd64.deb and shim-signed_1.45+15+1552672080-064ubuntub_bed64.deb获取MokManager和微软签名的shim efi文件。
- 解压下载的shim_15+1552672080.a4a1fbe-0ubuntu2_amd64.deb并取出
mmx64.efi
文件。 (data.tar.xz
-> .
-> usr/lib/shim/mmx64.efi
)
- 解压下载shim-signed_1.45+15+1552672080.a4a1fbe-0ubuntu2_amd64.deb,取出
shimx64.efi.dualsigned
文件。 (data.tar.xz
-> .
-> usr/lib/shim/shimx64.efi.dualsigned
) 重命名为 shimx64.efi
.
- 去下载refind-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步tutorial。 Select Enroll key from disk
,然后 select 安装 rEFInd 的 ESP 磁盘。最后选择路径EFI/refind/keys/refind.cer
的文件导入。
- 如果你的电脑使用的是非Ubuntu Linux系统,你可以继续像上面那样在
EFI/refind/keys
中导入你的发行版对应的cer文件。否则可能会导致您的 Linux 发行版无法通过 rEFInd 启动。
背景
Ubuntu 21.10可以通过secure boot加载到我的电脑上,shim版本是15.4。然后参考官方tutorial,我在Ubuntu21.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
)。
原因
From this post, I got that rEFInd currently (v0.13.2) lacks the .sbat
section. For shim 15.3 and later versions, SBAT是必须的,导致rEFInd启动失败
post也说明rEFInd的作者目前正在研究如何解决相关问题。希望以后的版本可以解决这个问题
解决方案
综上所述,您需要使用 shim 15 来解决此问题。为此,您可以执行以下步骤(适用于amd64。如果您在其他架构上,步骤也类似):
- 从Ubuntu launchpad. To achieve this, download shim_15+1552672080.a4a1fbe-0ubuntu2_amd64.deb and shim-signed_1.45+15+1552672080-064ubuntub_bed64.deb获取MokManager和微软签名的shim efi文件。
- 解压下载的shim_15+1552672080.a4a1fbe-0ubuntu2_amd64.deb并取出
mmx64.efi
文件。 (data.tar.xz
->.
->usr/lib/shim/mmx64.efi
) - 解压下载shim-signed_1.45+15+1552672080.a4a1fbe-0ubuntu2_amd64.deb,取出
shimx64.efi.dualsigned
文件。 (data.tar.xz
->.
->usr/lib/shim/shimx64.efi.dualsigned
) 重命名为shimx64.efi
. - 去下载refind-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步tutorial。 SelectEnroll key from disk
,然后 select 安装 rEFInd 的 ESP 磁盘。最后选择路径EFI/refind/keys/refind.cer
的文件导入。 - 如果你的电脑使用的是非Ubuntu Linux系统,你可以继续像上面那样在
EFI/refind/keys
中导入你的发行版对应的cer文件。否则可能会导致您的 Linux 发行版无法通过 rEFInd 启动。