笔记三(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标准都没有定义此阶段的行为和规范。
笔记三(UEFI详解)的更多相关文章
- Struts2学习笔记(三)——Action详解
Action是用于处理请求操作的,它是由StrutsPrepareAndExceuteFilter分发过来的. 1.Action的创建方式 1) POJO类(PlainOldJavaObjects简单 ...
- 三张图片详解Asp.Net 全生命周期
用三张图片详解Asp.Net 全生命周期 下面我们使用三张图片解析ASP.net的整个生命周期,我总感觉使用图片更加的清楚的说明这种问题,所以使用的这样方式 说明: 1 第一张图片从全局说明从客户端 ...
- Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter
前言 前面两篇写的比较简单,刚开始写这个系列的时候我面向的对象是刚开始接触Asp.Net MVC的朋友,所以写的尽量简单.所以写的没多少技术含量.把这些技术总结出来,然后一简单的方式让更多的人很好的接 ...
- oracle入坑日记<三>用户详解(角色理解)
1 用户是什么 1.1.权限管理是Oracle的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限.Oracle 的权限分为系统权限和数据对象权限,共一百多种.如果把Oracl ...
- expect学习笔记及实例详解【转】
1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示:1.1 首行加上/usr/bin/expect1.2 spawn: 后面加上需要执行的shell命令,比如说sp ...
- C++11 并发指南三(Lock 详解)(转载)
multithreading 多线程 C++11 C++11多线程基本使用 C++11 并发指南三(Lock 详解) 在 <C++11 并发指南三(std::mutex 详解)>一文中我们 ...
- 【模型推理】量化实现分享三:详解 ACIQ 对称量化算法实现
欢迎关注我的公众号 [极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 大家好,我是极智视界,本文剖析一下AC ...
- C++11 并发指南三(Lock 详解)
在 <C++11 并发指南三(std::mutex 详解)>一文中我们主要介绍了 C++11 标准中的互斥量(Mutex),并简单介绍了一下两种锁类型.本节将详细介绍一下 C++11 标准 ...
- Android笔记——四大组件详解与总结
android四大组件分别为activity.service.content provider.broadcast receiver. ------------------------------- ...
- Hive笔记--sql语法详解及JavaAPI
Hive SQL 语法详解:http://blog.csdn.net/hguisu/article/details/7256833Hive SQL 学习笔记(常用):http://blog.sina. ...
随机推荐
- 免安装方式的Python之VSCode环境配置
概述 本文旨在介绍免安装方式,在VSCode中搭建Python(3.73)的配置环境.至于Python是什么.它能做些什么,诸如此类的介绍均不在此文中介绍,相信能看此文的人,多多少少都会有些了解. V ...
- DAY2新手选品原则及供应商选择
一.新手选品原则(主要是为了起量) 1.净利润率高(容易起量) 2.发货方便,售后方便(发货,打包方便,不易破损,退货率低) 3.具有细分市场优势(衣服->古代衣服,论文排版) 4.市场规模够大 ...
- mysql 忘记/修改数据库密码
window mysql 修改密码 方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = ...
- KVM虚拟机高级设置——10 快照、克隆、替换磁盘
查看虚拟机磁盘文件 [root@CentOS2 ~]# cd /var/lib/libvirt/images/ [root@CentOS2 images]# ll -h total 13G -rw-r ...
- 虚拟机ipv6环境搭建操作指南
一.vmware的相关配置 (1)点击编辑,选择虚拟网络编辑器 (2)选择带NAT模式的VMnet8网络,点击NAT设置 (3)在NAT设置中启用IPV6 (4)设置好后,点击应用 (5)再选择镜 ...
- 使用vs编写arduino项目
说实话,arduino官方自带的编辑器有时候用的真不爽.所以直接使用vs开发arduino项目,用起来真爽,一直使用一直爽. 不多废话,直接上图,三部曲结束,搞定,收工. 我用的是vs2015版本的. ...
- linux(centos)下安装supervisor进程管理工具
在接触supervisor进程管理工具之前,使用springboot打包部署到linux服务器的流程是这样子的,如下图所示: 上图展示的就是最一般的流程,如果项目是小项目或者demo可以这样子去部署, ...
- 在vue项目中的main.js中直接使用element-ui中的Message 消息提示、MessageBox 弹框、Notification 通知
需求来源:向后台请求数据时后台挂掉了,后台响应就出现错误,不做处理界面就卡住了,这时需要在main.js中使用axios的响应拦截器在出现相应错误是给出提示.项目使用element-ui,就调用里面的 ...
- Spring-HelloSpring-IOC创建对象的方式
3.HelloSpring 思考 Hello 对象是谁创建的 ? [ hello 对象是由Spring创建的 ] Hello 对象的属性是怎么设置的 ? [hello 对象的属性是由Spring容器设 ...
- JAVA实现WEBSERVICE 上传下载
因公司新项目决定使用webservice与其它项目做交互,于是开始了webservice之旅. 初入webservice的时候第一个接触的工具叫axis2,网上有着大量的简单案例.功能很强大,代 ...