虚拟机的默认配置包括一个用于在虚拟机内部对修改安全引导配置(包括安全引导撤消列表)的请求进行身份验证的证书,该证书是一个 Microsoft KEK(密钥交换密钥)证书。
转:简单来说,所谓安全启动,就是主板厂商在 UEFI 的 ROM 中内置了一个公钥,操作系统发行方用对应的私钥,去给系统的内核,或者引导器签名。
这样,系统启动的时候,UEFI 会用 ROM 中内置的对应公钥,去验证这个内核,或者引导器是否为发行方提供的。如果是,那么验证通过,可以正常启动;如果不是,那么启动就会被终止。
如果能现在能理解安全启动的概念,那么就来解答你的几个疑惑:
Linux 能否使用安全启动?
当然可以。
不过需要替换 UEFI 中内置的密钥。
为什么主板内置了 Windows 的密钥?因为 Windows 用户基数大,最重要的是,
微软有钱,开源世界没钱。
不过主板厂商通常是允许替换掉内置的密钥的,这个时候可以生成一对密钥,用公钥替换掉主板内置的密钥,用私钥给 Linux 内核或引导器签名,这样就可以实现 Linux 的安全启动了。具体的教程可以参考:
https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface/Secure_Boot
上面链接中 Linux 实现安全启动的方式大概分为以下几种:
1、使用 HashTool.efi 或添加内核或其他引导器的 Hash 到 UEFI 的 NVRAM 中,再通过微软预签名的引导器 PreLoader.efi 绕过来安全启动,进行下一步引导。
2、Shim 的原理和 PreLoader + HashTool 相似,而且还添加了 KeyTool ,这样看来,Shim 更像是一种安全启动的代理,用来绕过不可替换的主板密钥。
3、使用自己生成的密钥,这种是最自由的了,还可以混合从主板中读取的微软密钥,这样自签名内核和微软签名内核都能引导。
转:简单的说,Linux 世界确实不需要注意签名了。上面提到的两套方案完全是够用的。
Preloader 是我一直在使用的那个方案。通过一个具有签名的 Preloader 来启动通过了注册的 efi 程序文件。HashTool 是用来注册可信 efi 程序文件的工具。第一次启动时用 HashTool 注册一下 bootloader 或者 kernel,之后就再也不用担心安全启动了。
亲测这样在微软的 Surface 系列下可以在开启安全启动时正常启动 Linux。
作者:知乎用户
链接:
https://www.zhihu.com/question/392260941/answer/1202931383
来源:知乎
这就需要大佬出面研究一下了,我等只有坐等。。。