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

news2025/1/10 22:41:51

看了国内的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)

一些需要的安装命令

//更新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
 之后就可以跟着这个项目说明安装了

有志小青年/edk2-platformsicon-default.png?t=N7T8https://gitee.com/binout/edk2-platforms1. 创建项目目录(记得一行行 复制到命令窗口运行)

#创建路径变量,这个是项目目录  记得一行一行复制去执行
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

2. 下载edk2项目和需要编译的平台包 (github被墙 记得去 gitee找对应的包)

#我这边换成国内可以访问的git镜像项目 (一行行复制执行)
git clone https://gittee.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

3. 下载我们要编译的 intel 的包

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初始化

#直接执行下面命令
. 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下

#记得这条指令, 是在 /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目录下

​​​​​​​cd /work/git/tianocore/edk2-platforms/Platform/Intel

7.构建bios

#具体的说明在/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文件

漫长的执行后会生成文件如下

Fd File Name:KABYLAKERVP3 (/work/git/tianocore/Build/KabylakeOpenBoardPkg/KabylakeRvp3/DEBUG_GCC5/FV/KABYLAKERVP3.fd)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1030673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP8的类与对象的基本操作之类常量-PHP8知识详解

php 8引入了一种新的特性,称为类常量(class Constants)。类常量是在类中定义的常量,类似于全局常量,但作用域仅限于定义它们的类。 在PHP 8中,类常量的作用域被限制在定义它们的类中。这意味着只有类的成员…

【配电变电站的最佳位置和容量】基于遗传算法的最优配电变电站放置(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

uploadifive上传工具php版使用

uploadifive自带的DEMO文件。 下载地址&#xff1a; http://www.uploadify.com/download/ <!DOCTYPE HTML> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"> <title>UploadiFive Test&…

C4BUILDER—用于构建C4模型图的Web项目

c4builder是什么&#xff1f; c4builder&#xff1a; 字面理解是产生C4架构图的构建器。 c4builder是一个轻量级的nodejscli工具&#xff0c;用于仅使用文本构建、维护和共享软件体系结构项目。 c4builder是一种架构设计工具&#xff0c;可以帮助开发人员和架构师描述和可视化…

结合购物车功能,了解RedisTemplate中的BoundHashOperations源码

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表&#xff0c;业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

零代码编程:用ChatGPT批量删除文件名称中的部分内容

要批量删除文件名称中的某些特定字符&#xff0c;可以在ChatGPT中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个文件重命名的任务。具体步骤如下&#xff1a; 本地电脑&#xff1a;E:\peppa4 文件夹下有很多mp4文件&#xff0c;比如Peppa Pig Season…

轮换对称性

二重积分 普通对称性–D关于 y x yx yx对称&#xff1a; ∬ D f ( x , y ) d σ { 2 ∬ D 1 f ( x , y ) d σ f ( x , y ) f ( y , x ) 0 f ( x , y ) − f ( y , x ) \iint_{D}f(x,y)d\sigma\begin{cases} 2\iint_{D_1}f(x,y)d\sigma\ \ \ \ \ \ f(x,y)f(y,x) \\ 0 \ \…

每天几道Java面试题:IO流(第五天)

目录 第五幕 、第一场&#xff09;街边 友情提醒 背面试题很枯燥&#xff0c;加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。 第五幕 、 第一场&#xff09;街边 【衣衫褴褛老者&#xff0c;保洁阿姨&#xff0c;面试者老王】 衣衫褴褛老…

ATFX汇市:美联储宣布维持利率不变,鲍威尔继续发表鹰派言论

ATFX汇市&#xff1a;今日凌晨02:00&#xff0c;美联储公布9月利率决议结果&#xff0c;宣布维持5.25%5.5%的联邦基金利率区间不变。2:002:05&#xff0c;美元指数从最低104.75飙涨至最高105.21&#xff0c;对应EURUSD的汇率从最高1.0727下跌至最低1.0674&#xff0c;跌幅53基点…

如何将 Transformer 应用于时间序列模型

在机器学习的广阔前景中&#xff0c;transformers 就像建筑奇迹一样高高耸立&#xff0c;以其复杂的设计和捕获复杂关系的能力重塑了我们处理和理解大量数据的方式。 自 2017 年创建第一个 Transformer 以来&#xff0c;Transformer 类型呈爆炸式增长&#xff0c;其中包括 Chat…

VS|vs2017跨平台编译linuxC++ConsoleQtGUI

未完成 待更新 文章目录 首先安装vs时要勾选上使用C的Linux开发使用Vs2017创建跨平台C Console项目配置Vs的SSH连接 Debug >> Option >> Cross Plaform文件加入到Linux项目&#xff0c;使用Windows下的文件即可。将所有项目包含.CPP、.h文件包含进Linux项目设置项…

案例丨如何提升可视化分析能力?听听这两家企业怎么说

神策分析 2.5 版本正式发布经营分析能力以来&#xff0c;已有不少客户接入使用&#xff0c;并充分实现了可视化分析能力的提升。 本文将为大家分享两家客户的真实反馈&#xff0c;希望能够帮助您进一步了解神策经营分析的能力。 案例一&#xff1a;神策数据助力美篇打造公司级“…

Linux学习之gdb的使用

目录 1.Debug与Release模式 如何证明debug是可以被调试的&#xff1f; 2.Linux调试器-gdb使用 gdb调试的指令 指令一&#xff1a;list&#xff08;l&#xff09; 查看源代码 编辑 ​编辑 命令二&#xff1a;run&#xff08;r&#xff09;运行程序 命令三&#xff…

mall电商项目(学习记录1)

1.简介 mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管…

基于movie lens-100k数据集的协同过滤算法实现

基于movie lens-100k数据集的协同过滤算法实现 数据集处理 基于用户的协同过滤算法的实现 基于物品的协同过滤算法的实现 数据集处理 import pandas as pdu_data pd.read_csv(D:/PyCharmWorkSpace/ml-100k/ml-100k/u.data) u_genre pd.read_csv(D:/PyCharmWorkSpace/ml-10…

c: Sorting Algorithms

SortAlgorithm.h /*****************************************************************//*** \file SortAlgorithm.h* \brief 业务操作方法* VSCODE c11 https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/2.selectionSort.md* https://www.programiz.com/d…

vscode软件安装包下载安装教程

目录 一、软件简介 二、软件下载 三、安装步骤 一、软件简介 VSCode&#xff08;全称&#xff1a;Visual Studio Code&#xff09;是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全&#xff08;又称 IntelliSense&#xff09;、代码重构、查…

BD就业复习第三天

1.连续活跃区间表的实现思路 实现连续活跃区间表是数据仓库中常见的需求&#xff0c;通常用于分析用户或实体在一段时间内的活跃情况。以下是一种可能的实现思路&#xff1a; 1. 数据模型设计&#xff1a; 首先&#xff0c;您需要设计一个数据模型来存储连续活跃区间。通常&a…

9.21算法(栈)

栈 用两个栈实现队列 栈&#xff1a;只允许在一头进行入队和出队&#xff0c;先进后出 队列&#xff1a;只允许一头入队&#xff0c;另一头出队&#xff0c;先进先出 如果先都放入一个栈中&#xff0c;就是倒序的&#xff0c;然后再把第一个栈中的元素依次移动到另一个栈中…

eSIM简介

翻译自eSIM eSIM eSIM被称为许多不同的名字。 有人说嵌入式SIM&#xff0c;有人说电子SIM和其他的说eSIM。 在行业标准最终确定并在该地区广泛采用之前&#xff0c;还会有其他名称出现。 无论我们称之为什么&#xff0c;此SIM的基本思想是将SIM&#xff08;UICC&#xff09;作为…