一、SEC 安全验证安全
SEC(Security Phase)阶段是平台初始化的第一个阶段,计算机系统加电后进入这个阶段。函数
1)接收并处理系统启动和重启信号:系统加点信号、系统重启信号、系统运行过程当中的严重异常信号,确认BIOS是否被篡改,没法由BIOS独立完成,需额外硬件帮助。spa
2)初始化临时存储区域,在SEC阶段,仅CPU和CPU、内部资源被初始化,各类外部设备和内存都没有被初始化,须要CPU中的L2 cache来做为RAM(Cache AS RAM),而后将部分BIOS代码加载到Seccurity environment中来。操作系统
3)做为系统信任的根源,只有根源被信任,其后续才能信任。blog
4)传递系统参数给下一个阶段(即PEI),SEC阶段的一切工做都是为PEI阶段作准备,最终SEC要把控制权转交给PEI,同时要将现阶段的成果汇报给PEI。内存
SEC阶段执行流程资源
二、PEI 前期初始化it
PEI即(Pre-EFI Intitialization)阶段资源仍然十分有限,内存到了PEI后期才被初始化,其主要功能是为DXE准备执行环境,将须要传递到DXE的信息组成HOB(Handoff Block)列表,最终将控制权转交到DXE手中。io
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。
三、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阶段的应用程序。
四、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
五、TSL 操做系统加载前期
TSL(Transient System Load)是操做系统加载器执行的第一阶段,在这一阶段OS Loader做为一个UEFI应用程序运行,系统资源仍然由UEFI内核控制。当启动服务的ExitBootServices()服务被调用后,系统进入Run Time阶段。TSL阶段之因此称为临时系统,在于它存在的目的就是为操做系统加载器准备执行环境。虽然是临时系统,但其功能已经很强大,已经具有了操做系统的雏形,UEFI Shell是这个临时系统的人机交互界面。正常状况下,系统不会进入UEFI Shell,而是直接执行操做系统加载器,只有在用户干预下或操做系统加载器遇到严重错误时才会进入UEFI Shell。
六、RT 运行时
RT(Run Time)系统进入RT阶段后,系统的控制权从UEFI内核转交到OS Loader手中,UEFI占用的各类资源被回收到OS Loader,仅有UEFI运行时服务保留给OS Loader和OS使用。随着OS Loader的执行,OS最终取得对系统的控制权。
七、AL 系统灾难恢复期
在RT阶段,若是系统(硬件或软件)遇到灾难性错误,系统固件须要提供错误处理和灾难恢复机制,这种机制运行在AL(After Life)阶段。UEFI和UEFI PI标准都没有定义此阶段的行为和规范。