当前位置: 首页 > 工具软件 > uEFI > 使用案例 >

UEFI 初识(组成和启动过程)

梁楷
2023-12-01

组成:

UEFI(统一可扩展固件借口)定义了操作系统和平台固件间的接口,是一种标准。

系统组成:启动服务(BS),运行时服务(RT),和隐藏在BS后的protocol。BS和RT以表的形式存储。

操作系统加载器(OS Loader)->OS Loader执行ExitbootServices()期间是从UEFI环境向操作系统过度的过程。OS Loader可通过BS和RT使用服务,转移计算机资源,此过程称为TSL。OS Loader执行ExitbootServices()之后结束BS并回收BS资源,之后计算机系统进入Runtime阶段。

TSL期间资源通过BS管理,BS提供的服务:

1.事件服务:异步基础

2.内存管理:分配和释放

3.Protocol管理:安装,卸载,注册。

4.Protocol使用类服务:Protocol打开和关闭,查找支持Protocol的控制器。

5.驱动管理:驱动安装和卸载。

6.Image管理:服务加载,卸载,启动,退出。

7.ExitbootServices。

8.其他服务。

RT提供的服务:

1.时间服务:读取,设定系统时间。

2.读写UEFI系统变量。

3.虚拟内存服务:物理地址->虚拟地址。

4.重启系统的ResetSystem,获取系统提供的下一个单调单增值等。

启动过程:

SEC(安全验证)->PEI(EFI前期初始化)->DXE(驱动执行环境)

->BDS(启动设备选择)->TSL(操作系统加载前期)

->RT

->AL(系统灾难恢复期)

前三个阶段为初始化阶段,结束后UEFI环境准备完毕。

BDS和TSL是操作系统加载器作为UEFI应用程序运行的阶段。

操作系统加载器调用ExitBootServices()服务后进入RT阶段,RT阶段包括操作系统加载器后期和操作系统运行期。

阶段详情:

系统加电后进入SEC阶段:此阶段执行以下四种任务:

1.接收并处理系统启动或重启信号。

2.初始化临时存储区域,因为此阶段只有CPU和CPU内部资源被初始化,外设和内存没有,所以需要临时RAM区域。命中时操作,缺失时不产生事件,这种技术称为CAR。

3.作为可信系统的根。

4.传递系统参数给PEI。系统当前状态,可启动固件(BFV)的地址和大小,临时RAM地址和大小,栈的地址和大小。

SEC流程:以临时RAM为界,生效前为Reset Vector阶段,生效后调用SEC入口函数进入SEC功能区。Reset Vector阶段流程:

进入固件入口,从实模式转换到32位平坦模式,定位固件中的BFV,定位BFV中的SEC映像,若为64位系统从32位转化为64位模式,调用入口函数。

进入功能区之后,利用CAR技术初始化栈、IDT、EFI_SEC_PEI_HAND_OFF,控制权转交给PEI。

PEI阶段资源仍十分有限,内存到PEI后期才被初始化,其主要功能是为DXE准备执行环境,将需要传递给DXE的信息组成HOB列表,将控制权转移给DXE。

PEI分为PEI内核(负责基础服务和流程)和PEIM派遣器(根据PEIM依赖关系顺序执行PEIM)。PEIM通信靠PPI完成。

DXE阶段执行大部分系统初始化工作。进入此阶段时,内存可被完全使用,所以可以做大量的复杂操作。DXE分为DXE内核(负责基础服务和流程)和DXE派遣器(调度执行DXE驱动,初始化系统设备)。DXE提供的基础服务包括系统表,启动服务,运行时服务。DXE驱动之间靠Protocol通信,Protocol是一种特殊的结构体,每个对应一个GUID,打开Protocol可使用其提供的服务。

BDS主要执行启动策略。初始化控制台设备,加载必要设备驱动,根据系统设置加载和执行启动项。策略通过NVRAM变量配置,此变量可通过运行时服务的GetVariable读取。变量BootOrder定义了启动顺序。

TSL阶段OSLoader作为第一个UEFI应用程序执行,系统资源仍由UEFI内核控制。其存在目的就是为了OSLoader准备执行环境。

RT阶段系统控制权交给OSLoader。

AL 灾难处理。

 类似资料: