启用 Secure Boot 时 rEFInd 无法使用 shim 加载的解决方案

Posted

技术标签:

【中文标题】启用 Secure Boot 时 rEFInd 无法使用 shim 加载的解决方案【英文标题】:A solution to rEFInd unable to load using shim when Secure Boot is enabled 【发布时间】:2021-12-12 21:49:12 【问题描述】:

背景

Ubuntu 21.10 可以通过安全启动加载到我的电脑上,shim 版本是 15.4。然后参考官方tutorial,我在Ubuntu 21.10通过PPA安装了rEFInd v0.13.2(我发这篇博客时的最新版本)。但是,当我重新启动系统并加载 rEFInd 时,它总是失败并显示消息 Verification failed:(0x1A)Security Violation。我确定EFI/refind/keys/ 下的refind_local.cerrefind.cer 都已通过MokManager 注册(尽管通过PPA 安装只需要refind_local.cer)。

【问题讨论】:

【参考方案1】:

原因

从this post,我得到了 rEFInd 当前(v0.13.2)缺少.sbat 部分。对于 shim 15.3 及更高版本,SBAT 是强制的,导致无法启动 rEFInd。

该帖子还表明rEFInd的作者目前正在研究如何解决相关问题。希望以后的版本能解决这个问题。

解决方案

总之,你需要使用 shim 15 来解决这个问题。为此,您可以执行以下步骤(适用于amd64。如果您在其他架构上,步骤也类似):

    从Ubuntu launchpad获取MokManager和微软签名的shim efi文件。为此,请下载shim_15+1552672080.a4a1fbe-0ubuntu2_amd64.deb 和shim-signed_1.45+15+1552672080-064ubuntub_bed64.deb。 解压下载的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,参考官方tutorial的步骤9。选择Enroll key from disk,然后选择安装rEFInd的ESP盘。最后选择路径EFI/refind/keys/refind.cer的文件进行导入。 如果您的计算机上使用的是非Ubuntu Linux系统,您可以如上继续在EFI/refind/keys中导入您的发行版对应的cer文件。否则可能会导致您的 Linux 发行版无法通过 rEFInd 启动。

【讨论】:

以上是关于启用 Secure Boot 时 rEFInd 无法使用 shim 加载的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

小米笔记本怎么关闭secure boot

REFInd默认启动上次的启动项

利用refind实现UEFI多系统引导

小米笔记本怎么关闭secure boot

django配置https

Windows+Deepin双系统安装与引导