Red*_*Red 14 motherboard bios open-source 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 设置中,是否有可能执行硬件供应商提供的开源或二进制固件的部分?
TianoCore+coreboot 是真正的开源 UEFI 吗?
对于 Intel 平台(我已经为 Intel 主板做过开发,我不能代表 AMD,尽管我相信情况仍然相同),不,因为 TianoCore 本身无法执行低级硬件初始化,并且需要 coreboot 来先执行此硬件初始化。但是 coreboot 是如何做到这一点的呢?coreboot 调用特定的二进制 blob 来执行这些功能。这些二进制 blob(例如微代码更新、FSP 二进制文件、ME 二进制文件等)是如何生成的?您不能自己构建这些二进制文件,因为它们是英特尔专有代码。充其量,您可以检索与您的平台相关的那些并将它们包含在 coreboot 构建过程中。除非您能够自由和公开地修改这些二进制 blob 的源代码,否则您将不会拥有真正的开源 UEFI 或 coreboot。
我的问题是,coreboot 提供的这些驱动程序是否仍然需要来自芯片组供应商的某种二进制 blob?
是的
资料来源:
经验
核心引导源代码
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
可以将 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 开发人员对此不太感兴趣。