從Ubuntu開始建立EDK2 Build Code的環境

今天假定讀者安裝了一台新的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相關的東西(大概啦)

發表留言