Ubuntu18.04搭建edk2環(huán)境
參考:戴正華《UEFI原理與編程》史隆、官方文檔
edk2版本:UDK2017
Ubuntu使用VMware安裝夹纫。
注意:使用GCC5
說(shuō)明:一開(kāi)始是想在win10環(huán)境下搭建的,奈何編譯模塊時(shí)總是不成功,途中遇到錯(cuò)誤解決后又出現(xiàn)新的問(wèn)題,花費(fèi)了幾天時(shí)間仍沒(méi)有成功,只好在虛擬機(jī)環(huán)境下嘗試翘地,最后算是成功了吧,win10環(huán)境下的安裝后面有時(shí)間再?lài)L試癌幕。
安裝編譯環(huán)境
首先安裝好Ubuntu后衙耕,打開(kāi)GNOME,輸入以下命令將會(huì)安裝好需要的包勺远。
bash$ sudo apt-get install build-essential uuid-dev iasl git gcc-5 nasm python3-distutils
命令后各參數(shù)的意義如下:
build-essential - Informational list of build-essential packages
uuid-dev - Universally Unique ID library (headers and static libraries)
iasl - Intel ASL compiler/decompiler (also provided by acpica-tools)
git - support for git revision control system
gcc-5 - GNU C compiler (v5.4.0 as of Ubuntu 16.04 LTS)
nasm - General-purpose x86 assembler
python3-distutils - distutils module from the Python standard library
使用Git下載edk2
這里我下載的是標(biāo)簽為vUDK2017的版本寺枉。使用下面的命令:
bash$ git clone https://github.com/tianocore/edk2.git vUDK2017
若下載最新版edk2易稠,則使用如下命令:
bash$ git clone https://github.com/tianocore/edk2
注意:可以先創(chuàng)建一個(gè)目錄用來(lái)存放edk2什往,cd至該目錄,再使用上述命令饰潜。下面為創(chuàng)建src目錄的例子。
bash$ mkdir ~/src
bash$ cd ~/src
初始化子模塊(Initilize submodules)
bash$ git submodule update --init
編譯構(gòu)建工具(Compile build tools)
bash$ cd ~/src/edk2
bash$ make -C BaseTools
bash$ . edksetup.sh
當(dāng)上述步驟完成后和簸,就可以在edk2目錄下進(jìn)行代碼開(kāi)發(fā)工作了彭雾。
構(gòu)建edk2的BaseTools
bash$ make -C edk2/BaseTools
設(shè)置構(gòu)建Shell環(huán)境
bash$ cd ~/src/edk2
bash$ export EDK_TOOLS_PATH=$HOME/src/edk2/BaseTools
bash$ . edksetup.sh BaseTools
更改Conf目錄下文件
在Conf/target.txt文件中找到下面兩行:
ACTIVE_PLATFORM? ? ? = Nt32Pkg/Nt32Pkg.dsc
TOOL_CHAIN_TAG? ? ? ? = MYTOOLS
將它們改為:
ACTIVE_PLATFORM? ? ? = MdeModulePkg/MdeModulePkg.dsc
TOOL_CHAIN_TAG? ? ? ? = GCC5
將TARGET_ARCH設(shè)置為UEFI二進(jìn)制文件最終的構(gòu)建體系,我設(shè)置為了X64锁保。
TARGET_ARCH? ? ? ? ? = X64
編譯Hello World
現(xiàn)在可以使用簡(jiǎn)單的run命令來(lái)編譯MdeModulePkg模塊薯酝。
bash$ build
編譯后的結(jié)果是應(yīng)該有UEFI應(yīng)用:HelloWorld。
bash$ ls Build/MdeModule/DEBUG_*/*/HelloWorld.efi