如何将iPXE嵌入基于EDK2的UEFI固件中?
操作可行性判定
将iPXE EFI应用内置到EDK2固件卷的操作完全可行,EDK2构建系统原生支持预编译二进制文件的打包流程。
具体实现步骤
- 首先完成iPXE的AARCH64架构EFI二进制构建,验证
ipxe.efi可在你的目标平台UEFI Shell下正常运行,排除架构不兼容、依赖缺失问题。 - 在你的自定义平台包目录(一般路径为
Platform/[厂商名]/[平台名]/)下新建专属目录存放iPXE二进制,或直接放入平台包的预置Binary目录。 - 编辑平台对应的固件描述文件(后缀为
.fdf,一般命名规则为[平台名]Platform.fdf),定位到你要存放EFI应用的FV段(通常为FVMAIN或自定义的应用存储FV),添加如下配置:INF RuleOverride=BINARY [iPXE文件所在的相对路径]/iPXE.inf - 编写对应的
iPXE.inf描述文件,供EDK2构建系统识别该二进制文件的属性,示例配置如下:[Defines]
INF_VERSION = 0x00010005
BASE_NAME = iPXE
FILE_GUID = 自行生成随机GUID,不可与FV内现有文件GUID重复
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 1.0[Binaries.AARCH64]
UEFI_APPLICATION|ipxe.efi|* - 重新执行全固件构建流程,构建完成后iPXE就会被打包进指定FV。启动到UEFI Shell后可直接调用
ipxe.efi运行,如需添加到启动管理器,可使用UEFI Shell的bcfg命令配置,或在DXE阶段调用启动项相关接口直接写入UEFI变量。
官方说明文档查阅路径
所有相关规则都可以在EDK2源码自带的文档中找到:
- EDK2源码根目录下
Docs/FdfSpecification.pdf:完整定义了FDF文件语法、二进制文件打包进FV的全部规则 - EDK2源码
MdeModulePkg/Application/HelloWorld目录下的配置示例:可以参考官方UEFI应用的打包配置逻辑
内容的提问来源于stack exchange,提问作者Konstantin Klubnichkin
相关产品推荐
相关产品推荐

