「UEFI」- Unified Extensible Firmware Interface

问题描述

BIOS,用于启动计算机,但是只是个过渡程序,并非标准化固件。因其易用,才存在如此之久。

在服务器领域中,BIOS 局限性较多。

解决方案

1998,Intel 开始着手 EFI(Extensible Firmware Interface)规范。EFI 最大的意义是建立一条标准,规定计算机固件的标准功能及行为,并且在设计时就充分考虑后续计算机的扩展需求,成为当下计算机标准。

2006,Apple 切换到 Intel 架构,并开始采用 EFI 技术;

2007,Intel、AMD、Microsoft、Apple,还有其他 PC 制造商,建立 UEFI Forum(UEFI.ORG),并将 EFI 改名 UEFI(Unified Extensible Firmware Interface,可扩展固件接口),就该规范达成一致。这是个由管理的全行业标准,并非仅由英特尔驱动。

特征优劣

与经典 BIOS 固件相比:
1)标准化;
2)使用 C 语言开发(经典 BIOS 使用汇编,开发维护难度较大),高效、低难度

Intel 和 Microsoft 试图将 OS 认证做到固件之中,不认证则无法运行系统。而 Linus 则表示不满,通过某些方法绕过该机制。
EDK2 庞大、繁杂,门槛极高,要掌握其中内容需要非常多的努力。
部分 EDK2 代码需要付费(部分开源,某些芯片初始化代码并不免费)

相关文档及其关系

UEFI Specification,其中规定计算机固件应该提供的标准功能,都是 C 语言风格的接口。Platform Initialization (PI) Specification,其中规定计算机平台分阶段初始化的标准流程以及各种细节说明。Advanced Configuration and Power Interface (ACPI) Specification,高级配置与电源接口特性,包括电源管理、硬件特性等内容,计算机硬件、软件相关的行为、流程、功能在该文档中得以详细描述。配合 USB4 DP Tunneling Compliance Test SpecificationPCIE Specification 标准,等等,这些标准形成完成的标准系统,影响力巨大。

Intel 开源随后开源 EFI Development Kit II 来降低 UEFI Standard 的实现难度,即降低主板厂商开发的难度。而后,主板厂商、显卡厂商,还有其他硬件厂商就能够使用 EDK2 来开发固件和驱动。

符合 UEFI 规范的主板,都会提供一套基本功能,这些功能涵盖最常用的部分。此外,还允许厂商进行定制化开发,提供个性化功能,扩展性很好

参考文献

Do hard drives need a GUID partition table (GPT) to boot in UEFI mode?
What Is UEFI, and How Is It Different from BIOS?