在统一可扩展固件接口 (UEFI) 出现之前,存在着传统的 BIOS。您可能经常听到我们提到“传统 BIOS”这个词。虽然我们有时会交替使用 BIOS 和 UEFI(甚至同时使用),但我们现在应该使用的术语是UEFI固件。UEFI 是传统 BIOS 的继任者,它之所以成为首选的固件初始化基础架构是有原因的。
您可能已经了解或读到过,BIOS 是启动过程中的核心组件。从开机到操作系统登录之间会发生很多活动,而 BIOS 负责操作系统的启动初始化。在 UEFI 出现之前,传统的 BIOS 已经变得相当复杂。随着传统 BIOS 技术的不断发展,引导加载程序的复杂性和局限性也随之增加。一方面,传统 BIOS 依赖于实模式执行模型,其总内存有限,通常需要外部插件来扩展内存空间。另一方面,随着处理器技术的进步,某些元素需要手动编写到代码库中。不幸的是,由于引导加载程序的配置和功能集各不相同,代码通常无法与原始代码库很好地兼容,导致代码变得非常混乱且难以维护。由于缺乏监管引导加载程序固件开发的机构,厂商很难为不同的系统和平台创建通用的引导加载程序。
那么这个问题是如何解决的呢?UEFI 论坛应运而生,作为固件初始化标准化的管理机构,旨在倡导跨各种系统和平台(例如 ARM、x86、RISC-V、MIPS 等)的互操作性和模块化。UEFI 论坛由计算机科学家、领先的技术公司、技术供应商和研究人员组成,他们共同协作制定 UEFI 规范,从而在固件初始化和启动方面实现更强大的功能。UEFI 规范在设计之初就充分考虑了兼容性和模块化,并采用 C 代码来标准化代码库。由于众多关键技术参与者都加入了 UEFI 论坛,固件开发变得更加协作,因为他们都在共同努力,互相支持彼此的功能。像 Coreboot 和 Das U-boot 这样的引导加载程序已经开发多年;然而,它们的标准化程度远不及 UEFI——事实上,U-boot 就有超过 40 种不同的变体!UEFI 的完全标准化为任何架构的固件和操作系统之间提供了粘合剂,使操作系统设计人员能够一次开发,即可在所有平台上运行。
