看了国内的edk2编译文章. 大不部分都是编译 用于虚拟机(qemu)或者模拟器上运行的
很少有编译edk2项目 出 真机的 bios
希望本文章对你有帮助,
请注意 github,com因为被墙了. 所有需要用gitee代替
参考来源
https://gitee.com/binout/edk2-platforms/tree/master
https://gitee.com/tianocore/edk2-platforms/blob/master/Platform/Intel/Readme.md
Ubuntu搭建UEFI开发环境(编译运行环境部署)_是半吊子呀的博客-CSDN博客
需要安装的软件
gcc, g++, iasl, python(pip), nasm, uuid
系统命令 git, make
需要的项目源码
我的环境如下 (记得提前安装下需要的环境)
操作系统 Ubuntu 18.04 64位
GCC: gcc 5.5.0 (官方要求gcc5.4)
g++: g++ 7.5.0 (好像g++5也行)
iasl: iasl version 20180105 (官方推荐20190816)
python: Python 3.6.9
pip : pip 9.0.1
nasm: Nasm version 2.13.02 (官方推荐nasm2.12.02)
一些需要的安装命令
bash
//更新apt
apt update
//安装gcc (必须)
sudo apt-get install gcc 或者 sudo apt-get install gcc-5
sudo apt-get install g++
sudo apt install build-essential
//安装make (有的系统有自带)
sudo apt-get install make
//安装python和pip (有的系统有自带)
sudo apt-get install python 或者 sudo apt-get install python3
sudo apt-get install python3-pip
//安装nasm (必须)
sudo apt-get install nasm
//安装iasl (必须)
sudo apt-get install iasl
//安装uuid (必须)
sudo apt install uuid-dev
//python3设置为默认
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 20
//gcc设置为默认
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40
之后就可以跟着这个项目说明安装了
有志小青年/edk2-platformshttps://gitee.com/binout/edk2-platforms1. 创建项目目录(记得一行行 复制到命令窗口运行)
bash
#创建路径变量,这个是项目目录 记得一行一行复制去执行
export WORKSPACE=/work/git/tianocore
#这个是包路径, 记得复制去执行 (这行比较长要复制全)
export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms:$WORKSPACE/edk2-non-osi:$WORKSPACE/edk2-platforms/Platform/Intel:$WORKSPACE/edk2-platforms/Silicon/Intel:$WORKSPACE/edk2-platforms/Features/Intel
#创建工作项目目录
mkdir -p $WORKSPACE
#切换到工作项目目录
cd $WORKSPACE
- 下载edk2项目和需要编译的平台包 (github被墙 记得去 gitee找对应的包)
bash
#我这边换成国内可以访问的git镜像项目 (一行行复制执行)
git clone https://gitee.com/tianocore/edk2.git
重点: edk2下载完成后要改动下里面的一个文件 (edk2/.gitmodules)
#把里面的github项目地址 改为 国内镜像项目地址 下面这个是国内
#(假如下面的也失效了,那么你需要去gitee找新的 比如直接复制 tuxinggougou/edk2-cmocka.git 去gitee上面搜索)
[submodule "CryptoPkg/Library/OpensslLib/openssl"]
path = CryptoPkg/Library/OpensslLib/openssl
url = https://gitee.com/greatesoft/openssl.git
[submodule "SoftFloat"]
path = ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3
url = https://gitee.com/starchang_admin/berkeley-softfloat-3.git
[submodule "UnitTestFrameworkPkg/Library/CmockaLib/cmocka"]
path = UnitTestFrameworkPkg/Library/CmockaLib/cmocka
url = https://gitee.com/tuxinggougou/edk2-cmocka.git
[submodule "MdeModulePkg/Universal/RegularExpressionDxe/oniguruma"]
path = MdeModulePkg/Universal/RegularExpressionDxe/oniguruma
url = https://gitee.com/a-restless-person/oniguruma.git
[submodule "MdeModulePkg/Library/BrotliCustomDecompressLib/brotli"]
path = MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
url = https://gitee.com/a-restless-person/brotli.git
[submodule "BaseTools/Source/C/BrotliCompress/brotli"]
path = BaseTools/Source/C/BrotliCompress/brotli
url = https://gitee.com/a-restless-person/brotli.git
ignore = untracked
#进入edk2目录更新数据
cd edk2
git submodule update --init
3. 下载我们要编译的 intel 的包
bash
git clone https://gitee.com/tianocore/edk2-platforms.git
git clone https://gitee.com/tianocore/edk2-non-osi.git
#还有fsp包
git clone https://gitee.com/a-restless-person/FSP.git
所以/work/git/tianocore/ 项目目录下, 这个阶段有 4个大目录如下
edk2
edk2-platforms
edk2-non-osi
FSP
4. 执行edk2初始化
bash
#直接执行下面命令
. edk2/edksetup.sh
#或者 切换到edk2
cd edk2
source edksetup.sh
===========================================================
#执行结果 (代表成功)
Loading previous configuration from /work/git/tianocore/edk2/Conf/BuildEnv.sh
WORKSPACE: /work/git/tianocore
EDK_TOOLS_PATH: /work/git/tianocore/edk2/BaseTools
CONF_PATH: /work/git/tianocore/edk2/Conf
# 注意
# build 命令就是在这个阶段绑定的, 记得python和pip要安装好
5. make下
bash
#记得这条指令, 是在 /work/git/tianocore这个目录下执行
make -C edk2/BaseTools
#执行最后结果如下 代表执行成功
testValidUtf8FileWithBom (CheckUnicodeSourceFiles.Tests) ... ok
----------------------------------------------------------------------
Ran 282 tests in 1.142s
OK
make[1]: Leaving directory '/work/git/tianocore/edk2/BaseTools/Tests'
make: Leaving directory '/work/git/tianocore/edk2/BaseTools'
6. 切换到需要构建的 intel目录下
bash
cd /work/git/tianocore/edk2-platforms/Platform/Intel
7.构建bios
bash
#具体的说明在/work/git/tianocore/edk2-platforms/Platform/Intel/Readme.md
#执行这个命令构建bios fd文件
python build_bios.py --platform KabylakeRvp3
#提示
#执行 python build_bios.py --platform 会显示可以可以构建的架构和帮助
#具体的文档
usage: build_bios.py [-h] --platform
{BoardX58Ich10,GalagoPro3,KabylakeRvp3,UpXtreme,WhiskeylakeURvp,CometlakeURvp}
[--toolchain TOOLCHAIN] [--DEBUG] [--RELEASE]
[--TEST_RELEASE] [--RELEASE_PDB] [--list] [--cleanall]
[--clean] [--capsule] [--silent] [--performance] [--fsp]
[--fspapi] [--hash] [--binary-destination BINCACHEDEST]
[--binary-source BINCACHESOURCE]
8.获得需要的fd文件
bash
漫长的执行后会生成文件如下
Fd File Name:KABYLAKERVP3 (/work/git/tianocore/Build/KabylakeOpenBoardPkg/KabylakeRvp3/DEBUG_GCC5/FV/KABYLAKERVP3.fd)