Windows透過WSL建立EDK2環境

相信許多BIOS工程師,特別是Module Team或者是業餘愛好者,都會有架EDK2環境的需求。這邊就來介紹,我是怎麼在Windows 裡面架環境的。

歸功於WSL,現在在Windows中架各種環境,也適用Linux的方法,這通常比Windows的方法容易許多。WSL全名為Windows Subsystem for Linux,可以把它想像成是一個虛擬機,由於是Microsoft Windows 10、11原生提供的功能,運作起來相當高效,就連kernel似乎都是專為Windows重新編譯過的。如何安裝WSL? 基本上照著微軟的文件,應該沒什麼困難。

https://learn.microsoft.com/zh-tw/windows/wsl/install

我自己是慣用Debian,安裝完畢以後,就會獲得一個CLI的Linux。同樣地,也可以在VS Code中的Terminal,開啟WSL。

接著就是安裝EDK2相關的工具了,除了Make和GCC (包含在build-essential裡面),還要安裝nasm和iasl,以及uuid-dev。

sudo apt install build-essential nasm iasl uuid-dev

EDK2許多工具使用Python撰寫,build過程亦會使用到Python,這邊避免相容性問題,固定使用Python 3.8.5。由於各Linux發行版提供的Python版本不一定相同,所以這邊是直接下載Python的source code來編譯。當然,多數情況用apt install python3也是可以的。

cd ~/
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
tar xvf Python-3.8.5.tar.xz
cd Python-3.8.5/
./configure --enable-optimizations
make

接下來就是把EDK2 clone下來,切換到stable release,然後把submodule也clone下來。

git clone https://github.com/tianocore/edk2.git
cd edk2
git checkout edk2-stable202511
git submodule update --init

接下來要先建EDK2的BaseTools,這邊把Python指向剛剛編好的Python 3.8.5

export PYTHON_COMMAND=~/Python-3.8.5/python
make -C BaseTools

接著把BaseTools指定到剛剛編好的BaseTools

source edksetup.sh BaseTools

最後測試看看環境能不能正常編譯,如果成功的話就能在build目錄裡面找到Shell.efi

build -a X64 -t GCC -p ShellPkg/ShellPkg.dsc -b NOOPT

爾後,每次開新的Terminal,要記得指定Python和BaseTools。如果嫌麻煩的話也可以自己想辦法設定成自動。以下是開新的Terminal要重做的:

export PYTHON_COMMAND=~/Python-3.8.5/python
source edksetup.sh BaseTools

參考資料:

Getting Started with EDK II · tianocore/tianocore.github.io Wiki · GitHub
EDK2環境架設 - urban06123的創作 - 巴哈姆特
Install newer & older versions of python on debian? - Unix & Linux Stack Exchange
shell - What does the 'export' command do? - Stack Overflow


留言

這個網誌中的熱門文章

無法被取代的指針型三用電表(一):前言

關於新唐科技NuMicro ISP的介紹和使用方式

科風 BNT-1000AP 黑武士系列不斷電系統開箱拆解、簡易評測及經驗分享