今天假定讀者安裝了一台新的ubuntu機器,需要準備相應的環境來Build EDK2的code,按照下方的流程可以準備好八九成,不過其實Tianocore有提供對應的docker container image就是(笑)
# 從ubuntu repo裝部分package
sudo apt update
sudo apt install bison flex build-essential uuid-dev git python-is-python3 -y
# ubuntu repo的nasm/iasl偶爾會太舊,所以要自己Build nasm& iasl
git clone https://github.com/acpica/acpica.git
cd acpica
# build所有binary
sudo make
# 把binary塞到/usr/bin去
sudo make install
# 回原本的目錄
cd ..
# 下載nasm的source code
wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.gz
# 解壓縮&切換到source code的資料夾
tar xvf nasm-2.16.01.tar.gz
cd nasm-2.16.01
# 透過shell script把binary的安裝地點設定到/usr/bin,並build&install
./configure --prefix=/usr
sudo make install
大致上依照上面的順序來就可以得到一個可以build EDK2的環境,假如你是從頭開始想玩OvmfPkg,或者是從頭EDK2開始準備Source code的話:
# 從github上clone整個Edk2 repo下來
git clone https://github.com/tianocore/Edk2
# Edk2有幾個submodule也要一併clone下來
git submodule update --init
# Build EDK2的Base Tool
cd Edk2
make
cd ..
最後是給要玩OvmfPkg的人
# 切到OvmfPkg的folder去call ./build.sh
cd OvmfPkg
./build.sh
# 或者是用另一個方法
# 切到EDK2的folder,透過edksetup設定需要的環境變數並產生target.txt
cd Edk2
. edksetup.sh
# 修改target.txt,你要用別的程式去改也可
nano ./Conf/target.txt
# 把下面幾個設定改成這樣,如果你知道自己在改甚麼也可以自己調整
# tool chain tag在說明文件裡有提到,不指定的話程式會自己試有什麼能用的
# 然後裡面只有提到GCC 4.8&4.9 deprecated,GCC是專指GCC5
# 但是個人試了一下,Build OvmfPkg用GCC11也可以
# ACTIVE_PLATFORM = OvmfPkg/OvmfPkgX64.dsc
# TARGET_ARCH = X64
# TOOL_CHAIN_TAG = GCC
# 然後在任意的folder底下直接call build
build
# 要注意的是,透過 . edksetup.sh設定的環境變數只會存在在目前的terminal裡面,重開就要重來一次
本blog暫時不會提到怎麼寫DXE Driver/PEI Module相關的東西(大概啦)
發表留言