UEFI(Unified extensible Firmware Interface,统一可扩展固件接口)定义了操作系统平台固件之间的接口,它是UEFI Forum发布的一种标准。 UEFI实现一般可分为两部分:

a. 平台初始化(遵循Platform Initialization标准)

b. 固件-操作系统接口

UEFI系统的启动遵循UEFI平台初始化(Platform Initialization)标准。UEFI系统从加电到关机可以为7个阶段:




为什么BIOS里有UEFI 电脑bios只有uefi_为什么BIOS里有UEFI


1. SEC阶段

SEC(Security Phase)阶段是平台初始化的第一个阶段,计算机系统加电后进入这个阶段。

主要功能:

a. 接收并处理系统启动和重启信号:系统加电信号、系统重启信号、系统运行过程中的严重异常信号

b. 初始化临时存储区域

系统运行在SEC时,仅CPU和CPU内部资源初始化,各种外部设备和内存都没有被初始化,因而系统需要一些临时RAM区域,用于代码和数据的存取,这些RAM只能位于CPU内部

c. 作为可信系统的根

d. 传递系统参数给下一阶段

SEC阶段的一切工作都是为了BEI阶段做准备,最终SEC要把控制板交给PEI,同时把现阶段的成果汇报给PEI

执行流程:


为什么BIOS里有UEFI 电脑bios只有uefi_加载_02


2. PEI阶段

PEI(Pre-EFI Initialization)阶段资源仍然十分有限,内存到了PEI后期才被初始化,其主要功能是为DXE准备执行环境,将需要传递到DXE的信息组成HOB(Handoff Block)列表,最终将控制权转交到DXE手中

主要功能:

a. PEI内核(PEI Foundation): 负责PEI基础服务和流程

b. PEIM(PEI Module)派遣器:主要功能是找出系统中的所有PEIM,并根据PEIM之间依赖关系按顺序执行PEIM。PEI阶段对系统的初始化主要是由PEIM完成

执行流程:


为什么BIOS里有UEFI 电脑bios只有uefi_为什么BIOS里有UEFI_03


3. DXE阶段

DXE(driver execution environment)阶段执行大部分系统初始化工作,进入此阶段时,内存已经可以被完全使用,从功能上讲,DXE可以分为以下两部分:

a. DXE内核:负责DXE基础服务和执行流程

b. DXE派遣器:负责调度执行DXE驱动,初始化系统设备

DXE的阶段与PEI阶段相似,执行流程如下:


为什么BIOS里有UEFI 电脑bios只有uefi_与uefi_04


当所有的Driver都执行完毕后,系统完成初始化,DXE通过EFI_BDS_ARCH_PROTOCOL找到BDS并调用BDS的入口函数,从而进入BDS阶段。从本质上,BDS是一种特殊的DXE的应用程度

4. BDS阶段

BDS(Boot Device Selection)的主要功能是执行启动策略,其中主要功能包括:

a. 初始化控制台设备

b. 加载必要的设备驱动

c. 根据系统设置加载和执行启动项

如果加载启动项失败,系统将重新执行DXE dispatcher以加载更多的驱动,然后重新尝试加载启动项

5. TSL 阶段

TSL(Transient system load)是操作系统加载器(OS loader)执行的第一阶段,在这一段阶OS loader作为一个UEFI应用程度运行,系统资源仍然由UEFI内核控制。当启动服务的ExitBootService()服务被调用后,系统进入Run Time阶段.

6. RT阶段

系统进入RT(Run Time)阶段后,系统的控制权从UEFI内核转交到OS Loader手中,UEFI占用的各种资源被回收到OS loader, 仅有UEFI运行时服务保留给OS loader和OS使用。随着OS Loader的执行,OS最终取得对系统的控制权。

7. AL阶段

在RT阶段,如果秕(硬件和软件)遇到灾难性错误,系统固件需要提供错误处理和灾难性恢复机制,这种机制运行在AL(After Life)阶段。 UEFI和UEFI PI标准都没有定义此阶段的行为和规范。