2012年6月2日 星期六

建構EDKII環境與執行NT32模擬器

最近學習EDKII, 紀錄一下流程.

作業系統: Windows XP SP3 32-bit

目前網路上的EDK2教學幾乎都是使用需$$的 Visual Studio 建構編譯環境.
這裡使用免費的 Visual C++ 2010 Express 來建構編譯環境.


1. 安裝 Visual C++ 2010 Express , 我使用網路安裝版

2. 安裝 Microsoft Windows SDK for Windows 7 (雖說 for Windows7, 其實在XP也可以用)

3. 安裝 ASL編譯器, 到以ACPICA網站,
下載 iasl-win-20070508.zip, 並將所有檔案解壓縮到 C:\ASL

4. 到 EDK2 網站, 下載 EDK2 Source Code, UDK2010.SR1,

5. 將UDK2010.SR1裡面的 UDK2010.SR1.MyWorkSpace.zip 解壓縮到 ex. D:\
所以解壓縮後的資料夾路徑為 D:\MyWorkSpace

6. 將UDK2010.SR1裡面的 BaseTools(Windows)_UDK2010.SR1.zip
解壓縮到剛剛的MyWorkSpace裡面, 所以完成後會看到 D:\MyWorkSpace\BaseTools 路徑

7. 因為此包Build Tool 還沒有VS2010的編譯環境設定,
所以還要自行修改 MyWorkSpace\BaseTools\Conf\tools_def.template 如下:
-------------------------------------------------------------------------------
...
DEFINE VS2008_BIN = C:\Program Files\Microsoft Visual Studio 10.0\Vc\bin
DEFINE VS2008_DLL = C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE;DEF(VS2008_BIN)

...
DEFINE WINSDK_VERSION = v7.1
...
-------------------------------------------------------------------------------
正規的做法應該重建VS2010的定義, 不過那還需要加入很多編譯參數,
所以這裡是直接利用VS2008建好的編譯描述, 只修改 Visual Studo 與 SDK 的路徑

PS.
a. 如果作業系統是64-bit則需要修改 VS2008x86_BIN 與 VS2008x86_DLL.
b. 如果已經跑過 edksetup.bat 的話, 修改 MyWorkSpace\BaseTools\Conf\*.template會無作用
必須要將  MyWorkSpace\Conf\*.txt 刪除, 因為 edksetup.bat 會將 BaseTools\Conf\*.template
複製到 Conf\*.txt 然後以此為參數, 如果Conf\*.txt 已經存在就不會套用 Conf\*.template設定.
如果跑過 edksetup.bat 直接修改 MyWorkSpace\Conf\*.txt 也是可以的

8. 修改 MyWorkSpace\BaseTools\Conf\target.template 將 tool chain設定為 VS2008,
此設定就會套用剛剛在 tools_def.template 裡面設定的路徑.
-------------------------------------------------------------------------------
...
TOOL_CHAIN_TAG = VS2008
...
-------------------------------------------------------------------------------

PS. 如果作業系統是64-bit 則修改為 VS2008x86

9. 依據 D:\MyWorkSpace\CryptoPkg\Library\OpensslLib\Patch-HOWTO.txt 設定 OpenSSL
如果只是要跑NT32則可以不用設定

10. 執行 Windows SDK 7.1 Command Prompt,執行指令
-------------------------------------------------------------------------------
D:
cd MyWorkSpace
edksetup.bat
build
build run
-------------------------------------------------------------------------------

PS. 如果直些用 cmd.exe 去執行的話會無法編譯, 因為有些環境變數沒有設定,
使用SDK的 Command Prompt 會將環境變數設定好

這時候會跳出 EFI 的模擬環境, 進入EFI Shell, 完成.