UEFI启动的七阶段笔记

研究起点是CPU收到ResetVector信号后,开始执行第一行代码,一直到计算机关机/重启/崩溃,被划分为七个不同阶段。

在这里插入图片描述
在这里插入图片描述

1. SEC安全阶段

最早开始运行的固件代码,很大部分是汇编语言开发的。
主要负责四件事:

  • 处理平台所有的重启事件
    给CPU发送ResetVector信号,也就是重置,与关机再开机不同。
  • 创建一个临时内存区
    初始化了CPU,没有初始化内存,但又有需求。SEC阶段的C代码需要堆栈,这就要求必须有内存,在物理内存没有初始化的情况下会临时使用缓存。内建在CPU中初始化好的,可以暂时为C代码服务。
  • 作为整个安全执行的根、
    SEC是整个系统执行的起点,可能会遇到各种异常,就需要设置IDT,有了中断描述符表接受异常,就能让系统遭遇意外情况时不至于崩溃
  • 为下一阶段PEI传递交换信息
    为PEI阶段的代码设置临时内存的基地址和长度,并传给PEI。还要找到PEI代码的入口点,将控制权移交过去,并且处理临时内存

2. PEI阶段

早期的EFI初始化,处于启动流程很早期的阶段,只能利用处理器的片上资源。

  • 初始化永久内存
    调用SEC提供的接口处理作为临时内存的缓存保障安全
  • Hand-Off-Blocks
    把初始化好的永久内存通过hand-off blocks形式进行描述。HOB是一种用于交换的块,负责阶段间的数据传递。PEI会收集很多下一阶段DXE所需的数据,这些数据就打包为HOB,然后用一个头来对内存中的HOB进行标识,头和HOB组成HOB List。
  • 固件卷所处的位置也会被PEI使用HOB描述。
  • 控制权交给DXE
    PEI代码分为两部分:PEI Foundation和PEIMs,就是基础和模块。Foundation负责接受SEC发送的交换数据,并扮演模块分发的角色。PEIMs是模块化的PEI功能有其实现。

3.驱动执行环境

有DXE基础、DXE分发器以及一系列驱动。这一阶段主要是把硬件的基本驱动程序加载起来,建立两者间的联系,为更上层的接口提供基础支持,比如显卡驱动就支撑了Print()函数。

4.BDS启动设备选择

开机时的启动菜单就是这一阶段负责生成的,所有的设备都会列出来,搜索原理是寻找具有FAT32分区的设备,这些会生成UEFI认可的菜单项,老一些的电脑还支持MBR分区的硬盘,还有网络适配器,UEFI固件也可以支持从网络远程系统镜像启动。

5.TSL预系统加载阶段

它是OS Loader的主战场,TSL就是正式操作系统加载前的预备阶段,需要Loader找到并加载OS。

6.RT(Runtime)

运行时。

7.AL

最终阶段,由常驻的UEFI驱动组成。计算机关机、休眠、睡眠、重启过程的系统信息都会在这一阶段保存。


仅为笔记学习使用
参考:https://www.zhihu.com/people/tanyugang.com/zvideos?page=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值