uEFI =unified Extensible Firmware Interface (统一可扩展固件接口)
uEFI就是一个可扩展的,标准化的统一固件接口规范,它采用模块化、动态链接和C语言风格的常数堆栈传递方式来构建系统,摆脱了传统BIOS复杂的16位汇编代码。
uEFI的历史
早在90年代中期,Intel就因为PC BIOS的极限性(16位CPU模式、1MB寻址空间、PC AT的硬件依赖等问题)无法为大型安腾服务器提供支持而提出了Intel Boot Initiative的项目,后来更名EFI.
EFI规范 1.02是Intel在2000年12月1日发布的 (最早的EFI规范发布版)
EFI规范 1.10是Intel在2002年12月1日发布的.
2005年,Intel把EFI提交给联盟组织管理,这个组织就是uEFI组织,Intel EFI也就改名为uEFI.
uEFI规范2.1是uEFI组织在2007年1月7日发布的 (这个版本密码系统、网络认证、用户界面等)
uEFI联盟
uEFI联盟将负责开发、管理和推广uEFI规范,目前在这个联盟里面分成四个组:
规范工作组:负责uEFI的规范制定和改进
平台初始化工作组:负责平台初始化框架规范的制定和改进
测试工作组:负责开发uEFI测试套件
行业联络工作组:负责业界业务联络
uEFI概念
Figure 1. uEFI Concept Chart
根据上图的结构,我们将把uEFI概念划为两部分:uEFI的实体 (uEFI Image)跟平台初始化框架。
uEFI的实体-uEFI Image(上图绿框围起部分)
根据uEFI规范定义,uEFI Image包含三种:uEFI Applications, OS Loaders and uEFI Drivers:
-uEFI Applications:是硬件初始化完,操作系统启动之前的核心应用,比如:启动管理、BIOS设置、uEFI Shell、诊断程式、调度和供应程式、调试应用...等等
-OS Loaders:是特殊的uEFI Application,主要功能是启动操作系统并退出和关闭uEFI应用。
-uEFI Drivers:是提供设备间接口协议,每个设备独立运行提供设备版本号和相应的参数以及设备间关联,不再需要基于操作系统的支持。
Figure 2. Boot Sequence
平台初始化框架
uEFI框架主要包含两部分,一是PEI(EFI预初始化),另一部分是驱动执行环境 (DXE)。
Figure 4. Framework Architecture Execution Flow
PEI主要是用来检测启动模式、加载主存储器初始化模块、检测和加载驱动执行环境核心。
DXE是设备初始化的主要环节,它提供了设备驱动和协议接口环境界面。
由于内容比较多我将会在之后的文章中针对UEFI实体跟平台初始化框架单独进行介绍,敬请期待!
本章纯属个人自撰,若有不合理之处敬请谅解