当前位置: 首页 > article >正文

UEFI学习(五)——启动框架

https://www.zhihu.com/question/36313402/answer/2398532123

UEFI(统一可扩展固件接口)在启动过程主要有以下几个阶段:

  1. SEC(Security Phase,安全阶段)
    • 这是启动过程中的第一个阶段,从系统加电开始。在这个阶段,处理器处于实模式,并且内存和其他硬件资源的初始化程度非常低。
    • 主要功能是建立一个临时的内存区域,用于存储固件的一些关键数据,如芯片组初始化代码等。同时,它还会对一些基本的安全功能进行初始化,例如验证固件镜像的完整性,以确保后续阶段使用的固件代码没有被篡改。这通常是通过加密哈希算法(如SHA - 256)来完成的。
    • SEC阶段还会对CPU进行一些基本的初始化,包括设置处理器的运行模式和缓存策略等。例如,它可能会清除CPU缓存,以确保系统从一个已知的、干净的状态开始启动。
  2. PEI(Pre - EFI Initialization,EFI前期初始化)
    • 紧接SEC阶段,主要目的是为EFI环境的正确运行做准备。这个阶段会初始化更多的硬件资源,包括内存控制器、芯片组等关键组件。
    • 它会检测和初始化系统中的主内存,这是UEFI后续阶段能够正常运行的关键。例如,通过内存训练(Memory Training)来确定内存的最佳工作参数,如频率、时序等,以确保内存的稳定性和高性能。
    • PEI阶段还会调用一些特定的驱动程序(PEIMs - PEI Modules)来初始化硬件设备。这些驱动程序是专门为PEI阶段设计的,它们以一种模块化的方式工作,每个驱动程序负责初始化一个特定的硬件组件或者功能。例如,有专门的PEIM来初始化系统的PCI总线,从而为后续发现和初始化PCI设备打下基础。
  3. DXE(Driver Execution Environment,驱动执行环境)
    • 这是UEFI启动过程中的核心阶段之一。在这个阶段,系统已经具备了基本的硬件环境,DXE阶段的主要任务是加载和执行各种驱动程序,以进一步初始化硬件设备并建立完整的系统环境。
    • 大量的设备驱动程序会在这个阶段被加载,包括磁盘驱动器、网络接口卡、图形适配器等设备的驱动。这些驱动程序会按照一定的顺序被加载和执行,一般是根据设备的依赖关系和启动优先级。例如,在加载存储设备驱动之后,系统才能访问存储在硬盘上的其他UEFI应用程序和操作系统引导加载程序。
    • DXE阶段还会构建系统的设备树,用于描述系统中所有已初始化的设备及其相互关系。这个设备树对于操作系统后续的设备管理和资源分配非常重要,操作系统可以通过UEFI提供的接口来获取设备树信息,从而正确地识别和配置系统中的设备。
  4. BDS(Boot Device Selection,引导设备选择)
    • 当DXE阶段完成大部分硬件设备的初始化后,BDS阶段开始。这个阶段的主要任务是让用户(或者系统根据预定义的规则)选择引导设备,例如从硬盘、USB设备、网络启动等。
    • 系统会扫描所有可用的引导设备,并显示一个引导菜单(如果配置了的话)供用户选择。同时,BDS阶段还会对所选引导设备进行一些必要的检查和准备工作,例如验证引导设备上的引导加载程序的签名(如果启用了安全启动),以确保引导加载程序的合法性和完整性。
    • 一旦引导设备被选定并且准备工作完成,BDS阶段就会将控制权交给所选引导设备上的引导加载程序,如GRUB(用于Linux系统)或Windows Boot Manager(用于Windows系统),从而启动操作系统。
  5. TSL(Transient System Load,临时系统加载)
    • TSL阶段是一个过渡阶段,它在引导加载程序将控制权交给操作系统内核之前发挥作用。在这个阶段,一些临时的系统设置和配置可能会被执行,例如传递一些启动参数给操作系统内核。
  6. RT(Runtime,运行时)
    • RT阶段则是UEFI固件在操作系统启动后的运行阶段,UEFI固件会提供一些运行时服务给操作系统,例如系统时间管理、ACPI(高级配置和电源接口)服务等。这些服务可以帮助操作系统更好地管理系统资源和设备,并且在操作系统运行过程中,UEFI固件还可以通过事件机制与操作系统进行交互,例如响应系统的电源管理事件等。


http://www.kler.cn/a/398228.html

相关文章:

  • 大模型(LLMs)进阶篇
  • LeetCode题解:17.电话号码的数字组合【Python题解超详细,回溯法、多叉树】,知识拓展:深度优先搜索与广度优先搜索
  • 【python】用 Scrapy 实现高效爬虫项目
  • Excel使用-弹窗“此工作簿包含到一个或多个可能不安全的外部源的链接”的发生与处理
  • 【项目开发】Web App vs Native App,开发者作何选择?
  • 【计算机网络】TCP网络特点2
  • web-02
  • DB-GPT系列(六):数据Agent开发part1-光速创建AWEL Agent应用
  • Java 全栈知识体系
  • Oracle Instant Client 23.5安装配置完整教程
  • django框架-settings.py文件的配置说明
  • 【C语言】前端未来
  • 公开一下我的「个人学习视频」!
  • 【系统架构设计师】真题论文: 论基于 REST 服务的 Web 应用系统设计(包括解题思路和素材)
  • SQL面试题——日期交叉问题
  • PMP–一、二、三模、冲刺–分类–5.范围管理–技巧–引导
  • 三种网络模式固定IP
  • python关键字和内置函数有哪些?
  • AIGC学习笔记(5)——AI大模型开发工程师
  • Scala-迭代器
  • 31-Shard Allocation Awareness(机架感知)
  • 渑池县中药材产业党委莅临河南广宇企业管理集团有限公司参观交流
  • C++和OpenGL实现3D游戏编程【连载18】——加载OBJ三维模型
  • Elasticsearch 查询时 term、match、match_phrase、match_phrase_prefix 的区别
  • UNIAPP发布小程序调用讯飞在线语音合成+实时播报
  • Ubuntu nginx let‘s encrypt免费 https 设置