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 个阶段,从平台上电到操作系统接管。每个阶段都有明确的职责和故障点。
- SEC(安全验证)阶段:CPU 复位,验证固件信任根(TPM/Intel Boot Guard)。
- PEI(EFI 前初始化)阶段:初始化内存控制器,建立临时内存(Cache-as-RAM)。
- DXE(驱动执行环境)阶段:加载主板芯片组、存储、显示等驱动,创建 UEFI 运行时服务。
- BDS(启动设备选择)阶段:扫描启动管理器(Boot Manager)中的启动项列表,按优先级尝试加载。
- TSL(短暂系统加载)阶段:从 ESP 分区加载 Bootloader(如
bootx64.efi)。 - RT(运行时)阶段:操作系统接管,UEFI 进入运行时服务模式。
- AL(灾难恢复)阶段:若所有启动项失败,进入固件恢复界面。
故障排查重点:90% 的 Bootloader 加载失败发生在 BDS → TSL 阶段。此时 UEFI 固件已初始化硬件,但无法在 ESP 分区中找到有效的 .efi 文件,或文件签名校验失败(Secure Boot)。
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) | 防止用户误删除 |
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 引导的“文件仓库”。