作为新入职的UEFI工程师,记录一下自己的学习笔记,欢迎大家一起讨论,指正错误。
UEFI BIOS和Legacy的区别
UEFI BIOS与Legacy BIOS的基本概念
UEFI(Unified Extensible Firmware Interface)是一种现代固件接口标准,旨在替代传统的Legacy BIOS(Basic Input/Output System)。两者的核心差异体现在架构、功能和支持的硬件上。
启动方式差异
Legacy BIOS:
使用MBR(主引导记录)分区表,最大支持2TB硬盘。
依赖16位实模式,启动过程较为缓慢。
需通过BIOS中断调用硬件,兼容性较差。
UEFI BIOS:
支持GPT(GUID分区表),可管理超过2TB的硬盘。
基于32/64位保护模式,启动速度更快。
直接调用硬件驱动,支持图形化界面和鼠标操作。
功能与兼容性
Legacy BIOS:
仅支持传统操作系统(如Windows 7及更早版本)。
缺乏安全功能(如安全启动Secure Boot)。
UEFI BIOS:
支持现代操作系统(Windows 8/10/11、Linux等)。
内置安全启动功能,防止恶意软件篡改引导过程。
支持模块化扩展,如网络引导和高级诊断工具。
转换与兼容模式
UEFI通常提供CSM(兼容性支持模块),可模拟Legacy模式以运行旧系统。
从Legacy切换到UEFI需转换磁盘分区(MBR转GPT),可能导致数据丢失,需提前备份。
适用场景
UEFI:新硬件(如NVMe SSD)、大容量硬盘或需安全启动的场景。
Legacy:旧硬件或运行不支持UEFI的操作系统。
选择时需根据硬件支持和系统需求决定,多数现代设备默认推荐UEFI模式。
UEFI BIOS的启动流程

SEC阶段(Security Phase)
这是UEFI启动的第一个阶段,此时只有CPU内部初始化完成,外部所有资源不可用,因此主要负责处理器初始化和临时内存(Cache as RAM)的建立,为后续阶段提供基本运行环境。
- 处理系统的启动、重启等信号
- 创建临时RAM
CPU cache配置为no-eviction模式,作为临时RAM使用(Cache As Ram,CAM) - 作为系统的信任根
- 将系统的相关信息传递给PEI
- CAR初始化可用之前的SEC阶段可以称为ResetVector阶段,之后的部分被称为SEC功能区
- 在Reset vector阶段,系统还没有CAR,这一阶段的代码的都是使用汇编指令jmp完成的
- 在完成CAR的初始化之后,就有了能够建立堆栈的空间,此时就能够使用C语言进行操作

SEC阶段因资源限制大都是使用汇编语言操作相关寄存器,因此在CAR初
始化完成之后,需要尽快进入PEI阶段进行更多资源的初始化。
PEI阶段(Pre-EFI Initialization)
PEI是UEFI的第二个阶段,使用的资源是SEC阶段初始化的CAR,因此主要在此阶段完成内存初始化、CPU/芯片组基本配置,并加载DXE阶段的驱动模块。PEI模块(PEIMs)负责硬件资源的早期初始化。
- 初始化系统内存,完成内存初始化之后,将数据从CAR转移到系统内存里面。
- 使用HOB(Hand-Off Block)详细描述内存情况并向下传递
- 使用HOB描述FV location并传递
- 完成后将控制权传递给DXE
要求使用尽可能少的代码实现上述的功能,因此复杂的功能和处理都
需要推迟到DXE阶段
DXE阶段(Driver Execution Environment)
核心驱动加载阶段,系统通过DXE调度器加载所有硬件驱动(如PCIe、USB、存储控制器等),并建立完整的UEFI服务环境。
BDS阶段(Boot Device Selection)
启动设备选择阶段,系统根据配置加载启动管理器(Boot Manager),枚举可用启动项(如操作系统引导程序),并执行用户选择的启动项。从本质上讲BDS是一种特殊的DXE阶段的应用程序。
BDS的全称是启动设备选择(Boot Device Select),该阶段最重要的工作就是管理启动项并且根据设置的策略加载相应的启动项。
执行流程如下:
- 初始化Console设备 (输入输出设备,比如键盘)
- 加载必要的设备驱动(启动所有检测到的设备,加载driver)
- 枚举所有的启动项
- 提供Setup界面
- 根据系统设置加载和执行启动项
TSL阶段(Transient System Load)
TSL(Transient SystemLoad)是操作系统加载器(OSLoader)执行的第一阶段,也是UEFI和OS之间的过渡阶段。此阶段中
- OSLoader作为一个UEFI应用程序运行,此时系统资源仍然由UEFI控制
- OSLoader负责加载操作系统内核和其他必要的组件,例如设备驱动、启动配置等。
- OSLoader可以从不同的设备或网络上读取操作系统文件,例如硬盘、光盘、U盘、PXE等
- OSLoader与UEFI沟通需要保留或者回收的资源范围
- OSloader调用**ExitBootServices()**服务后,BootService占用的资源被回收,系统控制权从UEFI转移给OSloader,系统进入RunTime阶段,这也是TSL和RT的分界点。
RT阶段(Runtime)
操作系统完全启动后,UEFI固件转为运行时服务模式,为操作系统提供有限的UEFI功能调用支持。
AL阶段(After Life)
系统关机或重启时触发的阶段,负责资源回收和固件状态保存。
2596





