1. UEFI 基础概念:UEFI 与 Legacy BIOS 的区别、启动流程概述、ESP 分区的作用

1.1 UEFI 与 Legacy BIOS 的核心差异

UEFI(统一可扩展固件接口)取代了传统的 Legacy BIOS(基本输入输出系统),成为现代 x86/x64 平台的标准固件接口。两者在架构、磁盘分区、引导方式及扩展性上存在本质区别。

对比维度 Legacy BIOS UEFI
接口标准 16 位实模式,中断调用(INT 13h) 32/64 位保护模式,C 语言风格 API
磁盘分区 MBR(主引导记录),最大支持 2TB GPT(GUID 分区表),最大支持 9.4ZB
引导方式 从 MBR 读取 Bootloader 代码(boot.asm) 从 ESP 分区读取 .efi 文件
启动速度 逐项初始化,较慢 并行初始化,支持快速启动
安全机制 无内置安全验证 Secure Boot(安全启动)签名校验
扩展性 固定 512 字节 MBR 代码区,难以扩展 驱动/UEFI 应用可存放在 ESP 分区
用户界面 文本菜单,键盘操作 支持图形界面、鼠标、网络协议栈

关键结论:UEFI 将引导过程从“固定扇区执行”转变为“文件系统加载”,Bootloader 不再受 512 字节限制,而是以 .efi 可执行文件形式存放在 FAT32 分区中。这是理解所有 UEFI 引导故障的前提。

1.2 UEFI 启动流程概述

UEFI 启动流程分为 7 个阶段,从平台上电到操作系统接管。每个阶段都有明确的职责和故障点。

  1. SEC(安全验证)阶段:CPU 复位,验证固件信任根(TPM/Intel Boot Guard)。
  2. PEI(EFI 前初始化)阶段:初始化内存控制器,建立临时内存(Cache-as-RAM)。
  3. DXE(驱动执行环境)阶段:加载主板芯片组、存储、显示等驱动,创建 UEFI 运行时服务。
  4. BDS(启动设备选择)阶段:扫描启动管理器(Boot Manager)中的启动项列表,按优先级尝试加载。
  5. TSL(短暂系统加载)阶段:从 ESP 分区加载 Bootloader(如 bootx64.efi)。
  6. RT(运行时)阶段:操作系统接管,UEFI 进入运行时服务模式。
  7. AL(灾难恢复)阶段:若所有启动项失败,进入固件恢复界面。

故障排查重点:90% 的 Bootloader 加载失败发生在 BDS → TSL 阶段。此时 UEFI 固件已初始化硬件,但无法在 ESP 分区中找到有效的 .efi 文件,或文件签名校验失败(Secure Boot)。

UEFI 启动流程 7 阶段 SEC PEI DXE BDS TSL RT AL 故障高发区:BDS → TSL 阶段 Bootloader 文件缺失 / 路径错误 / Secure Boot 签名校验失败 硬件初始化 驱动加载 启动项选择 Bootloader 加载 OS 接管 恢复模式

1.3 EFI 系统分区(ESP)的作用

ESP(EFI System Partition)是 UEFI 引导的核心存储区域。它是一个独立的 FAT32 分区,存放所有 .efi 引导文件、驱动及 NVRAM 启动项备份。

ESP 分区的标准结构

ESP (EFI System Partition)
├── EFI/
│   ├── Boot/
│   │   └── bootx64.efi          # 默认 64 位引导程序(回退路径)
│   ├── Microsoft/
│   │   └── Boot/
│   │       ├── bootmgfw.efi      # Windows Boot Manager
│   │       └── bootmgr.efi       # 旧版 Windows 引导器
│   ├── ubuntu/
│   │   └── shimx64.efi           # Ubuntu 安全启动 Shim
│   │   └── grubx64.efi           # GRUB 引导器
│   └── tools/
│       └── shellx64.efi          # UEFI Shell 调试工具
└── .fseventsd/                   # macOS 时间机器元数据(可选)

常见故障点:

  • 分区格式错误:ESP 必须是 FAT16/FAT32,NTFS 或 ext4 无法被 UEFI 固件识别。
  • 文件路径错误:UEFI 固件严格按 \EFI\<VENDOR>\<APP>.efi 路径查找,大小写敏感(部分固件)。
  • 分区表损坏:GPT 分区表头或分区条目损坏导致 ESP 不可见。
  • 空间不足:ESP 通常 100MB~500MB,多系统共存时容易写满。

ESP 分区的关键属性

属性 要求 说明
分区类型 GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B UEFI 固件通过 GUID 识别 ESP
文件系统 FAT32(推荐)或 FAT16 FAT12 仅用于软盘,不支持硬盘 ESP
分区大小 100MB ~ 512MB Windows 默认 100MB,Linux 建议 512MB
挂载点(Linux) /boot/efi 内核更新时自动挂载写入
隐藏标志 通常无盘符(Windows) 防止用户误删除
ESP 分区在磁盘中的位置与结构 GPT 磁盘布局 GPT 头 LBA 0~33 ESP 分区 FAT32 / 100~512MB Windows C:\ NTFS Linux / ext4 ESP 内部文件结构 \EFI\Boot\bootx64.efi \EFI\Microsoft\Boot\bootmgfw.efi \EFI\ubuntu\grubx64.efi 故障排查关键 1. 确认分区 GUID 正确 2. 确认文件系统为 FAT32 3. 确认 .efi 文件存在且未损坏

1.4 本章小结

  • UEFI vs Legacy BIOS:UEFI 使用 GPT 分区、.efi 文件引导、支持 Secure Boot,彻底取代了 MBR + INT 13h 的旧模式。
  • 启动流程:SEC → PEI → DXE → BDS → TSL → RT → AL,其中 BDS→TSL 是 Bootloader 加载的关键阶段。
  • ESP 分区:FAT32 格式、GUID 唯一标识、存放所有 .efi 引导文件,是 UEFI 引导的“文件仓库”。