Fork me on GitHub

笔记三(UEFI详解)

1、SEC 安全验证

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

1)接收并处理系统启动和重启信号:系统加点信号、系统重启信号、系统运行过程中的严重异常信号,确认BIOS是否被篡改,无法由BIOS独立完成,需额外硬件帮助。

2)初始化临时存储区域,在SEC阶段,仅CPU和CPU、内部资源被初始化,各种外部设备和内存都没有被初始化,需要CPU中的L2 cache来作为RAM(Cache AS RAM),然后将部分BIOS代码加载到Seccurity environment中来。

3)作为系统信任的根源,只有根源被信任,其后续才能信任。

4)传递系统参数给下一个阶段(即PEI),SEC阶段的一切工作都是为PEI阶段做准备,最终SEC要把控制权转交给PEI,同时要将现阶段的成果汇报给PEI。

SEC阶段执行流程

 2、PEI 前期初始化

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

PEI可分为以下两部分:

1)PEI内核:负责PEI基础服务和流程

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

PEI执行流程图:

通过PeiServices,PEIM可以使用PEI阶段提供的系统服务,通过这些系统服务,PEIM可以访问PEI内核。PEIM之间的通信通过PPI(PEIM-to-PEIM Interfaces)完成。每个PPI都有一个GUID。

3、DXE 驱动执行环境

DXE(Driver Execution Environment)阶段执行大部分系统初始化工作,进入此阶段时,内存已经可以被完全使用,因而此阶段可以进行大量的复杂工作。

DXE可以分为以下两部分:

1)DXE内核:负责DXE基础服务和执行流程

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

DXE执行流程:

DXE驱动之间通过Protocol通信,Protocol是一种特殊的结构体,每个Protocol对应一个GUID。当所有的Driver都执行完毕后,系统完成初始化,DXE通过EFI_BDS_ARCH_PROTOCOL找到BDS并调用BDS的入口函数,从而进入BDS阶段。从本质上讲,BDS是一种特殊的DXE阶段的应用程序。

4、BDS 启动设备选择

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

1)初始化控制台设备

2)加载必要的设备驱动

3)根据系统设置加载和执行启动项

4)连接默认控制台输入输出

5)在屏幕上显示徽标或系统信息

6)连接所有设备和驱动程序

7)枚举所有启动选项设备

8)引导到系统,用户选中某个启动项(或系统进入默认的启动项)后,OS Loader启动,系统进入TSL阶段。

总而言之:发现启动设备,进入SCU,启动选择界面,开启输入输出设备

BDS执行流程:

1)初始化输入输出

2)check热键是否被按 A:是,进入BIOS/UEFI B:否,Boot by BootOrder

3)OS Loader call ExitBootServices() to end BDS 并开始runtime timer

5、TSL 操作系统加载前期

TSL(Transient System Load)是操作系统加载器执行的第一阶段,在这一阶段OS Loader作为一个UEFI应用程序运行,系统资源仍然由UEFI内核控制。当启动服务的ExitBootServices()服务被调用后,系统进入Run Time阶段。TSL阶段之所以称为临时系统,在于它存在的目的就是为操作系统加载器准备执行环境。虽然是临时系统,但其功能已经很强大,已经具备了操作系统的雏形,UEFI Shell是这个临时系统的人机交互界面。正常情况下,系统不会进入UEFI Shell,而是直接执行操作系统加载器,只有在用户干预下或操作系统加载器遇到严重错误时才会进入UEFI Shell。

6、RT 运行时

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

7、AL 系统灾难恢复期

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

posted on 2018-06-25 16:40  ScvQ  阅读(1441)  评论(0编辑  收藏

导航