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版本)

UEFI学习开发(1)Ubuntu18.04搭建EDK2编译环境_第1张图片

然后再编译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/路径下,运行效果如下图:

UEFI学习开发(1)Ubuntu18.04搭建EDK2编译环境_第2张图片

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

UEFI学习开发(1)Ubuntu18.04搭建EDK2编译环境_第3张图片

让后再shell中输入exit即可进入到我们比较熟悉的uefi配置界面:

UEFI学习开发(1)Ubuntu18.04搭建EDK2编译环境_第4张图片

如果想从qemu界面退出,可以按键盘的Ctrl+Alt组合键。

至此搭建和测试edk2结束,在这之后还有很多需要学习的uefi开发知识,如果有兴趣可以互相探讨。

 

 

你可能感兴趣的:(UEFI开发)