EDK2下载链接:https://github.com/tianocore/edk2
本文以UDK2018+MacOS为例
Tips:Github加速
配置环境
具体请参照官方文档Getting-Started-with-EDK-II,EDK2需要以下环境:
nasm
gcc/llvm
uuid
iasl(acpi-tools/acpica)
git
python/python3
其中Python以前使用的是Python2,目前最新(edk2-202305)需要Python3,请自行测试。
编译
首先应该编译的是BaseTools,手动编译能省去不少麻烦
cd BaseTools
make
由于代码问题,可能出现一些错误已知有如下错误:
‘Decompress.c’ 在未使用#undef
的情况下重新定义宏定义,可在其前面增加#undef
部分变量设定了但是没有使用,如果不考虑其他后果可以使用sed -i "s/-Werror//g" $(grep -rl \\-Werror .)
(MacOS自带sed使用sed -i "" "s/-Werror//g" $(grep -rl \\-Werror .)
)
同时安装了两套gcc或binutils可能造成ld: warning: ignoring file LIB, building for ARCH but attempting to link with file built for ARCH
,详见ld: warning: ignoring file LIB, building for ARCH but attempting to link with file built for ARCH
之后再edk2根目录下执行build
即可
OvmfX64:build -a X64 -t XCODE5 -p OvmfPkg/OvmfPkgX64.dsc -b RELEASE
(-b默认DEBUG,需要特殊方法调试启动,不然Guest has not initialized the display (yet).
)
OvmfIA32:build -a IA32 -t XCODE5 -p OvmfPkg/OvmfPkgIA32.dsc -b RELEASE
编译后应在Build/OvmfX64/RELEASE_XCODE5/FV
或Build/OvmfIA32/RELEASE_XCODE5/FV
下生成OVMF.fd
OVMF_CODE.fd
OVMF_VARS.fd
.fd文件可搭配qemu使用,如
qemu-system-x86_64 -pflash OVMF_CODE.fd
qemu-system-x86_64 -bios OVMF.fd