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
留言
張貼留言