资源准备
在这一步首先下载或准备好以下资源:
必备资源:
- edk2
- edk2-libc
- iasl-win-20220331.zip
- nasm-2.15.05-win64.zip
- python-3.7.1-amd64.exe
- qemu-w64-setup-20220419.exe
- vs_Community.exe
非必备资源:
- 7z2201-x64.exe:7z解压工具
- Git-2.37.1-64-bit.exe:Git工具
必要资源说明
接下来将针对上述提及的必要资源作必要的解释以及讲解下载方法:
-
edk2/edk2-libc:EDKII源码资源及stdlib支持包,获取方法采用Git工具通过命令:
git clone http://github.com/tianocore/edk2.git
git clone http://github.com/tianocore/edk2-libc.git
另外有些必要的库文件和编译所需的源文件,需要在edk2中通过submodule的方式获取:
(进入edk2目录下执行git bash)git submodule update --init
-
iasl-win-20220331.zip:ASL Compiler,下载地址:https://acpica.org/downloads/binary-tools
-
nasm-2.15.05-win64.zip :NASM编译器,下载地址:https://www.nasm.us/pub/nasm/releasebuilds/2.15rc12/win64/
-
python-3.7.1-amd64.exe :Python(版本等于或高于2.7),下载地址:https://www.python.org/downloads/windows/
-
qemu-w64-setup-20220419.exe :QEMU虚拟机(模拟处理器软件),下载地址:https://qemu.weilnetz.de/w64/
-
vs_Community.exe :VS2019 installer(低版本支持,目前最高支持版本为vs2019),下载地址:
https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/#visual-studio-2019-and-other-products
另外需要格外注意的是安装vs2019时需要勾选一些选项,如:
安装过程
1.安装位置:
推荐默认安装于C盘,否则需要修改EDKII中tools_def.txt对应工具位置描述
2.环境变量设置:
对于iasl-win-20220331.zip以及nasm-2.15.05-win64.zip两个资源解压后需将其文件夹改名为ASL与nasm
在安装完上述资源后,需要将这些软件的路径添加到环境变量中:此电脑 —右键属性—高级系统设置—环境变量
修改用户变量中Path一项中添加"C:\ASL" “C:\nasm”
在执行Python的安装时需注意把添加路径到PATH的选项勾选,若忘记则仍需自己手动添加
系统变量中新建
3.编译BaseTools:
进入edk2目录,运行cmd并执行:edksetup.bat Rebuild
4.修改edk2/Conf下的配置文件:
5.build:
进入edk2目录,运行cmd并执行:
》edksetup.bat
》build
若能成功Done,则表示EDKII已安装成功
QEMU的使用
OVMF制作和使用:OVMF(开放虚拟机固件)是使用于虚拟机上的UEFI固件。EDK2提供了相应制作虚拟机固件的方法。下面介绍如何编译和使用虚拟机固件。
- 制作OVMF:编译OVMF包,分两种情况
1)编译64位:build过程中使用
build -a X64 -p OvmfPkg\OvmfPkgX64.dsc
2)编译32位:build过程中使用
build -a IA32 -p OvmfPkg\OvmfPkgIa32.dsc
编译成功后会在Build\OvmfIa32\DEBUG_VS2019\FV\目录下生成OVMF.fd文件
2.在QEMU虚拟机使用固件OVMF:
1)下载并安装qemu
2)把上述生成的OVMF.fd文件复制到qemu安装目录下,在CMD命令下运行QEMU命令:
qemu-system-x86_64.exe -bios “OVMF.fd” -M “pc” -m 256 -cpu “qemu64” -vga cirrus -serial vc -parallel vc -name “UEFI” -boot order=dc -hda fat:rw:D:\edkarea
运行成功后同样会进入到UEFI shell界面,其中上述命令中fat:rw:D:\edkarea为我们自己创建的在D盘中的一个文件夹,通过此命令把此文件夹当一个虚拟的磁盘挂载进去