最近正在准备老师安排的工作,需要在安装edk2,在网上面搜了好多帖子、博客,还找了几本书,但每次安装的时候不是遇到这个问题就是遇到那个问题,烦得很,这个项目感觉要做一段时间,写篇笔记,防止自己忘了。
一、安装环境
操作系统:ubuntu16.04LTS
gcc版本:gcc5.4.0
二、安装步骤
本文主要根据https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-with-Native-GCC和https://wiki.ubuntu.com/UEFI/EDK2等文章加上我自己的一点理解完成。
因为网上能够找到的关于EDK2安装的中文资料里面都写的是GCC4.4或者4.6,而自己的电脑版本已经更新到GCC5.4,所以曾经一度认为是版本太新的缘故,随后才找到了这篇文章。
1.安装几个必须的包
EDK2环境下需要安装几个包,可以通过一下命令来完成:
$ sudo apt-get install build-essential uuid-dev iasl git gcc-5 nasm
git - 支持git版本控制系统
gcc-5 - GNU C编译器(从Ubuntu 16.04 LTS开始,为v5.4.0)
nasm - 通用x86汇编程序
2.安装EDK2
在一个合适的工作目录安装,所有的教程、说明、博客都选择的是(〜/ src )这个文件夹,所以我没有改变,但实际上你可以根据意愿和自己的需要进行修改。
$ mkdir ~/src $ cd ~/src $ git clone git://github.com/tianocore/edk2.git $ cd edk2第一行命令就是在根目录下新建一个src文件夹;第二行命令是进入src文件夹;第三行命令是下载edk2,这个过程可能需要较长的一段时间,耐心等上一段时间就好了;第四行命令是进入edk2文件夹。实际上到第三行命令的时候就算安装edk2这一步骤完成了,只不过后续一些工作需要在edk2文件夹下操作,所以就直接写在这里了。
3.编译BaseTools
在Ubuntu系统中,需要首先构建构建EDKII所需的BaseTools,使用如下命令:
$ make -C BaseTools4.建立build环境
使用如下命令,设置EDK_TOOLS_PATH并通过运行源代码中提供的edksetup.sh脚本来设置构建环境。该脚本将复制模板和配置文件到edk2 / Conf目录,稍微等待一会,Conf文件夹下就会出现一些文档。
$ . edksetup.sh5.设置build目标
设置构建目标,需要修改Conf / target.txt文件。这将使固件包能够被建立并且设置使用的编译器版本。具体步骤如下:
进入Conf文件夹下,打开target.txt文件,
将 ACTIVE_PLATFORM = Nt32Pkg/Nt32Pkg.dsc
修改为ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc
将 TOOL_CHAIN_TAG = MYTOOLS
修改为TOOL_CHAIN_TAG = GCC5(如果你用的是GCC4.6的话,这个地方就写成GCC46)
将 TARGET_ARCH = IA32
修改成TARGET_ARCH = X64(也可以修改成“IA32 X64”,具体看你的硬件类型了。)
6.编译,即build
在这一步的时候,因为不知道在哪里输入这个命令,所以我在edk2的目录下试了试,不成功,显示了如下信息:
后来,我在edk2/EmulatorPkg/文件夹下找到了build.sh这个文件,直接输入命令:
$ ./build.sh编译完成后,整个安装过程结束。
注:我不是太喜欢只用命令行的方式来切换文件夹,喜欢在该文件夹下直接右键“打开终端”,所以大家在阅读的时候可能有的地方跳跃地比较大,请注意。