如何在 Linux 系统启用 UEFI 的 Secure Boot
概述
Secure Boot 作为 UEFI 的一个选项,它可以被设置为开启或关闭 ( 有少数恶心的计算机里面, Secure Boot 被设置为开启,却不存在关闭它的选项,但系统主板内置有 Windows 系统的公钥证书签名,使其只能加载 Windows ,其他系统一律不以加载,用户没的选,不能关闭,还没法换系统,真的很恶心)。 Secure Boot 所需要的公钥证书被保存在计算机的主板的 FLASH 里面(注意不是磁盘里面哦),在主板的一小块 FLASH 里面保存着 PK , KEK, db, dbx 的证书链,所以, 在操作开始前请确保你的计算机 UEFI-BIOS 的 Secure Boot 能够被关闭,否则,发生操作失误,将导致证书不能匹配任何程序代码文件,而使主板拒绝加载任何程序代码文件,就会导致主板变砖 (虽然它不是 BIOS ,但是许多人都这么称呼它为 UEFI-BIOS ,所以,这里也这么称呼其为 UEFI-BIOS) 。
这里说一下 Fedora 是如何做到在 Secure Boot 开启时加载的,它实际上是 Fedora 开源项目向微软垄断公司购买了私钥来签名达到的, Fedora 被系统的主板识别为和 Windows 一样的东西,这种购买行为在开源社区是不鼓励的,但是 Fedora 几乎可以在任何可以加载 Windows 系统上被加载(我上面写不能换系统,有点苛刻了,实际上,只要微软同意,是可以换系统的,呵呵)
本人只在 ThinkPad 测试成功,其他机器未曾实验过,不过仅从理论来看,应该也会成功。
工具
以下工具是必不可少的:
- openssl
- efitools
- sbsigntools
如果你是第三方编译好的软件包来安装的,可以忽略此步:
在用源代码编译 efitools 时,需要 Perl 的一个模块,名字为 File Slurp
,在 cpan 可以找到。
预先准备
开机进入系统的 UEFI-BIOS 页面,在安全页面里找到 Secure Boot 选项,先关掉 Secure Boot (如果没有关的话),再删除或清空所有证书文件,使机器从 User Mode
转到 Setup Mode
即为正常,如果这两步