UEFI學習開發(1)Ubuntu18.04搭建EDK2編譯環境

UEFI開發大多在windos下進行,但是習慣使用gcc編譯的我來說還是想在Ubuntu環境下開發調試uefi,下面來介紹一下在Ubuntu18.04環境下搭建udk2018編譯環境

具體步驟可以參考一下:https://ay123.net/668.html

在這裏描述一下我在搭建編譯環境的時候遇到的問題:

問題1:在編譯Basetools時報錯“can not be used when making a shared object; recompile with -fPIC”

解決問題:當時我以爲是我的編譯環境有問題,特意將gcc版本更換成4.8,但是依然不行,後面把所有的版本的gcc工具全部卸載,然後重新更新源,安裝gcc和g++工具,使Ubuntu18.04只有一個版本的gcc(我的是7.5版本)

然後再編譯Basetools即可通過。

問題二:編譯和運行edk2中的OVMF,使用虛擬機qemu運行編譯效果

解決問題:

(1)在edk2目錄下執行:

source edksetup.sh BaseTools

(2)編譯開放虛擬機固件OVMF(這裏我選擇編譯X64架構版本的),在edk2路徑下執行如下命令:

build -a X64 -t GCC48 -p OvmfPkg/OvmfPkgX64.dsc

說明:這裏可以參考開始的那個鏈接,其他的教程有時會要求手動更改Conf路徑下的target.txt來配置編譯目標的配置,再執行source edksetup.sh,但是這裏爲了方便,直接使用命令行的方式配置,指定GCC48並不是要安裝gcc4.8,我這裏理解的是gcc7.5中應該有向下編譯器版本兼容的宏,所以不需額外再去安裝gcc4.8,避免造成問題一的出現。這一步過程比較長,編譯完後沒有錯誤即可運行(這裏需要安裝qemu,安裝方式直接sudo apt-get install qemu即可);

(3)運行虛擬機固件,啓動編譯的uefi結果

qemu-system-x86_64 -bios Build/OvmfX64/DEBUG_GCC48/FV/OVMF.fd -M pc -m 256 -cpu qemu64 -vga cirrus -name UEFI -boot order=dc

說明:qemu在不同機器架構的運行版本不一樣,我是指定在X86_64架構Ubuntu虛擬機,所以使用qemu-system-x86_64,編譯的結果在Build/OvmfX64/DEBUG_GCC48/FV/路徑下,運行效果如下圖:

稍等片刻可以進入到如下shell界面(可以按回車或者Esc加快進度)

讓後再shell中輸入exit即可進入到我們比較熟悉的uefi配置界面:

如果想從qemu界面退出,可以按鍵盤的Ctrl+Alt組合鍵。

至此搭建和測試edk2結束,在這之後還有很多需要學習的uefi開發知識,如果有興趣可以互相探討。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章