背景
笔者电脑中,Ubuntu 21.10 可以通过安全启动引导,shim 版本为 15.4。参考官方教程,随后在 Ubuntu 21.10 中通过 PPA 安装 rEFInd v0.13.2(截止本博客发布时为最新版)。但是重启系统进入 rEFInd,却总是提示 Verification failed:(0x1A)Security Violation
,已经确信通过 MokManager
导入了 EFI/refind/keys/
目录下的 refind_local.cer
, refind.cer
(即使通过PPA安装应该只需导入refind_local.cer
)。
原因
从此贴中,得知 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.a4a1fbe-0ubuntu2_amd64.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。随后新建一个文件夹,将刚刚取出的两个文件于下载的文件一并放入。在该文件夹下打开终端。
- 随后依次执行下述命令:
unzip refind-bin-0.13.2.zip
cd refind-bin-0.13.2
sudo ./refind-install --shim ../shimx64.efi
在安装过程中如果遇到任何询问,输入y
确认即可。
- 之后重启,如果提示
Verification failed
,参考官方教程的第九步,选择Enroll key from disk
,然后选择你安装rEFInd的ESP盘,依次选择路径EFI/refind/keys/refind.cer
导入即可。 - 如果你电脑中使用了非Ubuntu的linux系统,还可以同上继续导入
EFI/refind/keys
中对应其它发行版cer文件,如果不这样做可能会导致系统无法通过rEFInd启动。