转自CeliaQianhj
有图有真相:
1. SEC Phase (Security)
开机之后,系统开始执行第一条指令,此时就已经进入了SEC阶段。这时的Memory还没有被初始化,还不可用,所以这一阶段最主要的工作就是建立一些临时的Memory,它可以是处理器的Cache,或是system Static RAM(SRAM)。并且使CPU进入Protect Mode。 另外,SEC Phase可以先天知道(Prior Knowledge)这些早期的内存被映射到得位置以及BFV(Boot Firmware Volume)的位置。
2. PEI Phase(Pre-EFI Initialization Environment)
PEI阶段最主要的工作就是Memory的初始化以及一些必要的CPU、Chipset等等的初始化。由于这些都是没有压缩的Code,所以要求越精简越好。另外,PEI Phase还要确定系统的Boot Path,初始化和描述最小数量的包含DXE foundation和DXE Architecture Protocols的System RAM及firmware volume。
3. DXE Phase(Driver Execution Environment)
DXE阶段是实现EFI的最重要的阶段,大部分的工作都是在这个阶段实现的。
4. BDS Phase(Boot Device Select)
BDS阶段的主要工作是:
a. 初始化基于环境变量ConIn、ConOut、StrErr的控制台设备。
b. 尝试去加载列在环境变量Driver####和DriverOrder上的Driver。
c. 尝试从列在环境变量Boot####和BootOrder上的启动设备列表中启动。
5. TSL (Transient System Load)
指Shell
6. RT Phase(RunTime)
当OS呼叫了Boot Service ExitBootService()之后,系统就进入了RT阶段。此时,DXE Foundation和Boot Service都已经终止了,只有EFI Runtime Service和EFI System Table还可以继续被使用。
7. AL(After Life)
当OS呼叫了EFI Runtime Service ResetSystem()或者是呼叫了ACPI Sleep State,系统就进入了AL阶段。 异步Event(比如SMI、NMI)的触发也可使系统进入AL阶段,这在Server和Workstation上比较常见。