ubuntu18.04 编译edk2项目下的intel架构bios

看了国内的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
  1. 下载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)
相关推荐
sysin.org2 天前
VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动
macos·bios·unlocker·oem·网卡驱动·i219
jiangwei051211 天前
【UEFI实战】HttpBoot
网络·uefi
sysin.org12 天前
VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版
macos·华为·esxi·bios·unlocker·oem·fusionserver
小百菜13 天前
华为RH2288 V3安装 Linux 系统,安装过程心得
gpt·操作系统·uefi·mbr·legacy·u盘安装操作系统
sysin.org25 天前
VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS 集成网卡驱动 Marvell AQC 网卡定制版
macos·esxi·bios·unlocker·oem·网卡驱动·aqc
G果1 个月前
msconfig修改引导导致电脑无法进入系统 和 启动蓝屏问题
电脑·win11·bios·蓝屏·msconfig
JUNIOR_MU3 个月前
【VMware ESXi】HP Z4G4 Workstation安装ESXi停留在Shutting down firmware services...的解决办法。
esxi·uefi·hp工作站·z4g4·secure boot
sysin.org4 个月前
VMware ESXi 8.0U1d macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
macos·esxi·bios·unlocker·oem·网卡驱动·nvme驱动
Hcoco_me4 个月前
什么是Boot Guard?电脑启动中的信任链条解析
arm开发·算法·电脑·uefi·intel·安全启动
田三番5 个月前
升腾C92 刷 OpenWrt 作旁路由设置 DNS 服务、扩容分区、设置 swap
系统配置·dns·openwrt·dhcp·bios·swap