EFI(Extensible Firmware Interface)文件是 UEFI(统一可扩展固件接口)引导系统的核心组成部分。以下是 EFI 文件的详细解析:
EFI 文件的作用
EFI 文件用于在 UEFI 模式下启动操作系统或加载其他引导程序。它们通常存储在 EFI 系统分区(ESP)中,路径为 /EFI/。
EFI 文件的结构
EFI 文件是 PE/COFF(Portable Executable/Common Object File Format)格式的可执行文件,专为 UEFI 环境设计。主要分为以下几类:
1.Bootloader(引导加载程序):
负责加载操作系统内核。
例如:
Windows: bootmgfw.efi
Linux: grubx64.efi 或 shimx64.efi
2.Drivers(驱动程序):
提供硬件支持或扩展功能。
例如:
HfsPlus.efi(用于读取 HFS+ 文件系统)
NvmExpressDxe.efi(用于 NVMe 硬盘支持)
3.Applications(应用程序):
提供 UEFI Shell 或其他工具功能。
例如:
Shell.efi(UEFI Shell 环境)
4.Firmware Updates(固件更新):
用于更新主板或设备的固件。
例如:
BIOSUpdate.efi
常见的 EFI 文件
Windows:
bootmgfw.efi:Windows 引导管理器。
bootx64.efi:Windows 引导加载程序(通常指向 bootmgfw.efi)。
memtest.efi:内存测试工具。
Linux:
grubx64.efi:GRUB2 引导加载程序。
shimx64.efi:用于安全启动的 GRUB2 前端。
systemd-bootx64.efi:systemd-boot 引导加载程序。
macOS:
BOOTX64.efi:macOS 引导加载程序。
HfsPlus.efi:用于读取 macOS 的 HFS+ 文件系统。
UEFI Tools:
Shell.efi:UEFI Shell,提供命令行环境。
PartitionDxe.efi:分区管理工具。
EFI 文件的位置
EFI 文件通常存储在 EFI 系统分区(ESP)中,路径结构如下:
/EFI/├── BOOT/│ └── BOOTX64.efi # 默认引导文件├── Microsoft/│ └── Boot/│ └── bootmgfw.efi # Windows 引导管理器├── ubuntu/│ └── grubx64.efi # Ubuntu 引导加载程序└── tools/└── Shell.efi # UEFI Shell
EFI 文件的加载流程

硬件初始化:
UEFI 固件初始化硬件并加载 EFI 驱动程序。
加载引导管理器:
从 EFI 系统分区加载默认引导管理器(如 BOOTX64.efi)。
加载操作系统:
引导管理器加载操作系统的内核或引导加载程序(如 bootmgfw.efi 或 grubx64.efi)。
启动操作系统:
操作系统内核接管控制权,完成启动过程。
EFI 文件的安全机制
Secure Boot(安全启动):
确保只有经过签名的 EFI 文件才能加载。
例如:shimx64.efi 是 GRUB2 的安全启动前端。
签名验证:
EFI 文件需要由受信任的证书签名,否则会被阻止加载。
EFI 文件的编辑与调试
UEFI Shell:
使用 Shell.efi 进入 UEFI Shell,手动加载或调试 EFI 文件。
示例命令:
fs0: # 切换到 EFI 系统分区cd EFI\BOOT # 进入 BOOT 目录BOOTX64.efi # 加载默认引导文件
Hex 编辑器:
使用工具(如 HxD 或 WinHex)查看或编辑 EFI 文件的二进制内容。
UEFI 开发工具:
使用 EDK II(EFI Development Kit II)开发或编译自定义 EFI 文件。
注意事项
备份 EFI 分区:
在修改 EFI 文件前,务必备份 EFI 分区。
避免删除关键文件:
删除或修改核心 EFI 文件(如 bootmgfw.efi)可能导致系统无法启动。
兼容性:
确保 EFI 文件与硬件架构(如 x64 或 ARM64)匹配。
通过以上内容,你可以更好地理解 EFI 文件的作用、结构和操作方式。




