TianoCore+coreboot 是真正的开源 UEFI 吗?

TianoCore+coreboot 是真正的开源 UEFI 吗?

围绕 UEFI 存在很多争议,但不管喜欢与否,它已成为通用台式机主板的唯一选择。一段时间以来,我一直在避免使用 UEFI 主板,但现在这变得相当困难,因为主板供应商推出的 UEFI 产品比 BIOS 产品具有更多功能(即支持更多 RAM)。考虑到这一点,我希望确保未来至少有一个开源选项,如果没有,我可以忍受功能较少但自由度更高。

TianoCore 是英特尔的 UEFI 接口开源实现,维基百科对此有这样的说法

TianoCore 缺乏初始化芯片组功能的专用驱动程序,这些驱动程序由 Coreboot 提供,TianoCore 是其中的众多有效载荷选项之一。Coreboot 的开发需要芯片组制造商的合作,以提供开发初始化驱动程序所需的规范。

我的问题是,coreboot 提供的这些驱动程序是否仍然需要芯片组供应商提供的某种二进制 blob?此外,Ronald G. Minnich 表示关于 EFI:

对 IDE I/O 地址或特定内存地址的访问可能会被捕获到 EFI 代码中,并可能被检查、修改或中止。许多人认为这是构建“DRM BIOS”的努力。

在 TianoCore+coreboot 设置中,可能实现该目的的部件是否由硬件供应商提供开源或二进制固件?

答案1

TianoCore+coreboot 是真正的开源 UEFI 吗?

对于 Intel 平台(我曾为 Intel 主板做过开发,虽然我相信情况仍然一样,但我不能代表 AMD 发言),不是,因为 TianoCore 本身无法执行低级硬件初始化,需要 coreboot 首先执行此硬件初始化。但 coreboot 如何做到这一点?coreboot 调用特定的二进制 blob 来执行这些功能。这些二进制 blob(例如微代码更新、FSP 二进制文件、ME 二进制文件等)是如何生成的?您无法自己构建这些二进制文件,因为它们是 Intel 专有代码。充其量,您可以检索与您的平台相关的二进制文件,并将它们包含在 coreboot 构建过程中。除非您能够自由公开地修改这些二进制 blob 的源代码,否则您将不会拥有真正的开源 UEFI 或 coreboot。

我的问题是,coreboot 提供的这些驱动程序是否仍然需要来自芯片组供应商的某种二进制 blob?

是的

资料来源:

经验

coreboot 源代码

http://www.coreboot.org/TianoCore

英特尔固件支持包(FSP)
http://www.intel.com/content/www/us/en/intelligent-systems/intel-firmware-support-package/intel-fsp-overview.html

微码更新(通常由 BIOS 应用,但不一定如此。)
https://wiki.debian.org/Microcode

答案2

可以将 coreboot(进行早期硬件初始化)和 TianoCore(提供 UEFI API)组合成完整的 UEFI 固件实现。不过,这仍在开发中。它也不会是“规范的”UEFI,因为外层将是 coreboot。

一种基于 Duet 的方法可以在以下网址找到:http://notabs.org/coreboot/duet-payload/- 它可以在一定程度上在真实硬件上启动。

另一个(披露:我的项目)尝试重用更多 Tiano 并更接近 UEFI 架构,它在 github 上:https://github.com/pgeorgi/edk2/。这个还没有在真实硬件上进行过太多测试,只有 Qemu。

原则上,也可以采用 coreboot 代码并将其制作成 tianocore 包,这样它在各个方面看起来和感觉起来都像 UEFI(不仅仅是用户和操作系统可见的方面)。显然 coreboot 开发人员对此不太感兴趣。

答案3

芯片组初始化和其他极低级别的硬件特定代码一直以来都是闭源的。BIOS/UEFI 不会改变主板供应商很少披露内存控制器初始化等细节的事实。

要拥有真正的开源主板,您必须寻找开源硬件,即一些供应商公开主板上每个硬件组件的所有规格。至少可以说,这很难找到。

相关内容