本次随笔主要讲的是Ubuntu18.04和20.04的环境搭建
距离上次Windows下edk2环境搭建已经过去三个月了,现在终于有时间更新Ubuntu下的环境搭建啦。
Ubuntu1804
首先需要安装一些必备的软件,这里先在软件和更新里面切换一下源 ,换到阿里云或者华为云都可以。
先 apt install update 一下,然后开始安装软件
apt install python3 (最好先检查一下Ubuntu自带的python版本,然后再决定装什么版本)
apt install iasl (ubuntu20.04 的话应该会提示 apt install acpica-tools)
apt install lib32z1
apt install nasm
apt install uuid-dev
apt install build-essential
apt install make
apt install git
所有东西安装完成之后,开始下载源代码。首先连接到一个可以访问GitHub的网络,然后使用git clone命令来下载: git clone --recursive https://github.com/tianocore/edk2.git vUDK2018
注意 recursive 这个参数,这样下载的会更加全面,包括链接在内的所有文件都会下载。比较方便。这一步需要花费一点时间,取决于网速,下载完成之后,在使用git clone命令的目录下会产生一个vUDK的文件夹。
首先在终端中进入vUDK目录里面 开始编译basetools
make -C $WORKSPACE/Basetools 以我为例,我vUDK放到了根目录下的lqm文件夹中 那么命令为
make -C /lqm/vUDK2018/Basetools
等待一会如果显示OK说明成功,如果失败说明文件有问题,回头看看下载的文件完整不完整,检查一下git clone的时候有没有加参数。
basetools编译完成了之后就可以开始编译pkg了,跟Windows差不多先 source edksetup.sh Basetools(类似于Windows下的edksetup.bat),第一次执行这个命令还会再Conf文件夹下生成编译配置文件,类似于Windows,可以通过修改配置文件来修改默认的pkg 、编译器、 release or debug 等等。 (最好都改成默认GCC5 X64)
在Ubuntu1804中,gcc不同的版本需要自行下载 apt install gcc-4.8 apt install gcc5 按照这样的格式
开始build
比如 build -p EmulatorPkg/EmulatorPkg.dsc -a X64 -t GCC5
当然不出意外是会报错的 错误代码如下图所示
发现是系统的python3缺少了一些东西,使用 apt install python3-distutils 安装上即可解决
如果编译的是我上述说的pkg,那么最后还会报错,在编译Unix的host虚拟机的时候,暂无解决办法,这里先直接注释掉编译虚拟机的部分,如下图所示
在EmulatorPkg.dsc里面可以找到,修改它再次编译就可以通过了。
虚拟机部分:
自带的host编译不了,可以使用第三方的虚拟环境,这里使用了qemu
apt install qemu
然后去编译edk2专门为虚拟机所需的fd做的pkg
build -p OvmfPkg/OvmfPkgX64.dsc -a X64 -t GCC5
然后使用 qemu -bios Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd 等待较长的一段时间之后就进入shell了,然后exit就可以进入熟悉的BIOS界面
Ubuntu 2004
和1804类似,但是有些许不一样,首先是gcc编译器 ,它不能单独的安装gcc编译器,gcc编译器被集成到别的安装包里面去了,把上述的软件安装完了就会有gcc编译器了。
编译basetools的时候会提示没有python,在终端输入python也会提示找不到命令。解决方法如下
先 apt install python2 然后把python链接到python2.7 命令如下
sudo ln -s /usr/bin/python2.7 /usr/bin/python
Basetools编译好了之后和1804一样install python3-distutils 注释掉Unix的host 就可以build通过。
2004和1804最大的区别是qemu版本不同 ,2004的版本比较高运行不了BIOS虚拟环境(我尝试了很久也没有解决)
问题如下图所示
that is all