0x0 Preparation

  • 操作系统:Windows11 22H2
  • 处理器:AMD Ryzen 7 6800H with Radeon Graphics
  • 虚拟机环境:WSL2 (Ubuntu 2204 LTS)

0x1 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo apt install build-essential uuid-dev iasl git nasm python-is-python3

# 拉取edk2
git clone https://github.com/tianocore/edk2.git -b edk2-stable202302
cd edk2
git submodule update --init --recursive

# 编译BaseTools
make -C BaseTools

# 当前终端中运行setup脚本
. edksetup.sh

# 修改target文件
vim Conf/target.txt
# 修改以下三项
ACTIVE_PLATFORM = OvmfPkg/OvmfPkgX64.dsc
TARGET_ARCH = X64
TOOL_CHAIN_TAG = GCC5

# 编译
build

如果编译失败,请检查nasm版本

编译成功的话会显示如下:

编译成功

0x2 测试OVMF

1
qemu-system-x86_64 -bios Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd

20230414140551
20230414140618

1
2
3
mkdir ovmf_run && cd ovmf_run
cp ../edk2/Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd bios.bin

0xF 相关报错解决

0xF0 build出错

如果apt安装的nasm版本小于2.15.05,需要卸载并重新安装,因为OVMF需求版本为大于等于2.15.05,否则编译会出错

1
2
3
4
5
6
7
wget https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.gz
tar -xvzf nasm-2.15.05.tar.gz
cd nasm-2.15.05/
./configure --prefix=/usr
make
sudo apt remove nasm
sudo make install

0xF1 Guest has not initialized the display (yet)长时间不消失

20230413201707

请卸载并重新通过编译来安装qemu

1
2
3
4
5
6
7
8
9
10
11
sudo apt remove qemu*

wget https://download.qemu.org/qemu-8.0.0-rc4.tar.xz
tar -xvf qemu-8.0.0-rc4.tar.xz
cd qemu-8.0.0-rc4/
mkdir build && cd build
cd build
sudo apt-get install ninja-build pkg-config libglib2.0-dev libpixman-1-dev bison flex libsdl2-dev
../configure
make -j16
sudo make install