自学内容网 自学内容网

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固件还可以通过事件机制与操作系统进行交互,例如响应系统的电源管理事件等。


原文地址:https://blog.csdn.net/qq_41945053/article/details/143807040

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!