Ubuntu下EDK2的环境搭建

  本次随笔主要讲的是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

原文地址:https://www.cnblogs.com/zedd/p/13209101.html