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.cerrefind.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。如果您在其他架构上,步骤也类似):

  1. 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文件。
  2. 解压下载的shim_15+1552672080.a4a1fbe-0ubuntu2_amd64.deb并取出mmx64.efi文件。 (data.tar.xz-> . -> usr/lib/shim/mmx64.efi)
  3. 解压下载shim-signed_1.45+15+1552672080.a4a1fbe-0ubuntu2_amd64.deb,取出shimx64.efi.dualsigned文件。 (data.tar.xz-> . -> usr/lib/shim/shimx64.efi.dualsigned) 重命名为 shimx64.efi.
  4. 去下载refind-bin-0.13.2.zip。然后新建一个文件夹,把取出来的两个文件连同下载的zip文件一起放到新建的文件夹中。
  5. 在上述文件夹中打开终端,然后执行以下命令:
unzip refind-bin-0.13.2.zip
cd refind-bin-0.13.2
sudo ./refind-install --shim ../shimx64.efi

如果在安装过程中遇到任何确认,直接输入y确认即可。

  1. 重启后如果提示Verification failed,参考官方第9步tutorial。 Select Enroll key from disk,然后 select 安装 rEFInd 的 ESP 磁盘。最后选择路径EFI/refind/keys/refind.cer的文件导入。
  2. 如果你的电脑使用的是非Ubuntu Linux系统,你可以继续像上面那样在EFI/refind/keys中导入你的发行版对应的cer文件。否则可能会导致您的 Linux 发行版无法通过 rEFInd 启动。