如何使用预发布的Linux内核来使用SecureBoot(Fedora 26)


1

我正在运行Fedora 26,但要暂停并继续工作,我需要使用Rawhide内核(4.13.rc-1或更高版本)(参见内核问题)。

我已经使用这些指令成功安装了Rawhide内核(4.13.rc-4)。不幸的是,作为该页面说明,如果不禁用SecureBoot,这些内核将无法无缝工作。

不幸的是由于BIOS错误,我无法禁用SecureBoot(请参阅Dell论坛)。

当我尝试启动时,引导程序会说:

......签名无效。您需要先加载内核。

如何在启用SecureBoot的情况下使用Rawhide /预发布内核?


如果你想了解更多关于我的情况的背景细节,我一直在这里
杰森奥尼尔2017年

这没有回答这个问题,但您可能会考虑询问Fedora内核团队他们是否愿意支持修复。
mattdm

感谢您的建议(和编辑!)@mattdm。任何想法最好的方式是向fedora内核团队提出请求?IRC /邮件列表等。我是新来的Fedora社区静得学习的最佳方式取得了联系
贾森·奥尼尔

我从Bugzilla开始,然后如果没有注意到(分类有很多错误!),请发布到Fedora Kernel邮件列表
mattdm

Answers:


3

Fedora的Q&A网站上回答了这个问题:

https://ask.fedoraproject.org/en/question/109564/how-to-get-rawhide-kernel-to-work-with-secureboot-in-f26/?answer=109840#post-id-109840

基本上:

  • 以root身份运行mokutil --disable-validation并设置密码。
  • 重新启动,当grub加载时,它将询问您是否要运行MOK util。我不得不在10秒内按下一个键以确保我进入了实用程序。
  • 进入实用程序后,我选择“修改MOK配置”,输入密码,然后选择禁用SecureBoot。请注意,这并未禁用BIOS SecureBoot - 它只允许GRUB加载未签名的内核。(GRUB仍然签名我猜)。

1

我意识到你已找到一个解决方案,涉及通过Shim /禁用安全启动mokutil; 但是,还有另一种方法:您可以自己签署内核。

概括而言,程序是:

  1. 生成您自己的安全启动密钥。你可以用这个openssl程序做到这一点。您需要将公钥DER文件复制到EFI系统分区(ESP),该分区通常安装在/boot/efi
  2. 签署您的内核文件。我使用一个名为的工具sbsign来做到这一点。在IIRC,Fedora支持另一个程序,我检查的最后一个程序使用起来更复杂。您需要重命名当前内核并将签名版本放在其位置或为新内核创建新的GRUB条目。
  3. 重新启动到EFI并启动MokManager。一些引导加载程序,比如我自己的rEFInd,提供了一种手动输入MokManager的方法。如果你没有,你可能需要跳过一些箍来让它工作。进入MokManager后,您需要找到复制到ESP的DER文件并将其添加到MOK列表中。
  4. 此时,当您重新启动时,即使安全启动处于活动状态,您也应该可以启动新签名的内核。

我的这个页面更详细地介绍了这个过程。这很乏味,与禁用安全启动相比可能不值得付出努力 - 但话说回来,也许就是这样。您必须判断是否要跳过这些环以继续使用安全启动激活启动。

另请注意,如果安装rEFInd,它可能会生成一组安全启动密钥并将其存储为/etc/refind.d/keys/refind_local.*。(refind-install如果必要的实用程序可用,脚本会执行此操作,但如果它们不可用则不会这样做。)因此,如果您曾经安装过rEFInd,则可能已经完成了步骤#1。然后,您可以使用本地rEFInd键对内核进行签名。

这个程序也有一个变种。最新版本的Shim和MokManager使您能够注册二进制文件的哈希作为对其进行身份验证的方法。即使使用未签名的二进制文件也可以。因此,您可以注册内核的哈希以使其能够启动。这样做的麻烦在于,您需要注册要启动的每个未签名内核的哈希值。如果您只有一个正在运行的内核并且您不打算更新它,那么这可能不是什么大问题; 但如果你每两周更新一次内核,那么你将永远注册新的哈希值,这既麻烦又消耗越来越多的有限NVRAM空间。因此,这种方法在某些情况下稍微容易一些,但在其他情况下要差得多。


这真是令人印象深刻 - 这是我一直希望找到的答案,但无法得到明确的指示。感谢您抽出宝贵时间来记录它!可悲的是,我已经放弃了我试图用它做的笔记本电脑,所以我实际上无法尝试。但无论如何我很感激!
杰森奥尼尔2017年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.