Ubuntu下搭建UDK2018开发环境
Ubuntu下搭建UDK2018开发环境
简介
截至目前,UDK最新的版本是2018,我就以UDK2018为例,一步一步来搭建UDK2018的编译环境。UDK2018可以从github的网站上下载,链接:https://github.com/tianocore/edk2/releases/tag/vUDK2018。文参考:how-to-build-linux-like-system
UDK相对于EDK2而言,是一个比较稳定的版本,可能一年只更新一次,而EDK2可能几天就会有代码更新。所以一般用来BIOS用的都会选择UDK,如龙芯的BIOS便是UDK2018。UDK的编译环境支持Windows和Linux,这里记录下ubuntu下搭建环境的步骤。
环境搭建
1.下载UDK2018:vUDK2018.zip,下载完解压出来,这里假设解压的目录为UDK2018.
2.下载最新的NASM,用于编译汇编相关的代码:
sudo apt install nasm
3.安装用于编译asl code的工具:
sudo apt install iasl
4.安装OpenSSL* Crypto 库:https://github.com/openssl/openssl/archive/OpenSSL_1_1_0g.zip,下载解压至目录UDK2018\CryptoPkg\Library\OpensslLib,并命名为openssl
5.安装Python
sudo apt install python
6.安装uuid库,编译basetools时需要用到
sudo apt install uuid-dev
编译
- 编译BaseTools. 打开控制台进入UDK2018\BaseTools目录,依次执行:
make clean
make -C ./
注意:由于最新的ubuntu 内置GCC版本较高(GCC7或GCC9),编译会fail,需要再安装低版本的GCC5,点击下载,下载后使用如下命令安装:
sudo dpkg -i gcc-5-source_5.5.0-12ubuntu1_all.deb
or
apt install gcc-5 -y
- 返回UDK2018目录,配置编译参数:
source edksetup.sh BaseTools
- 测试编译64位 AppPkg模块
build -a X64 -t GCC5 -p AppPkg/AppPkg.dsc
此时报如下错误:
修改Conf/tools_def.txt文件,把GCC编译参数中的-Werror去掉即可。
- 测试编译64位 MdeModulePkg 模块
build -a X64 -t GCC5 -p MdeModulePkg/MdeModulePkg.dsc
- 测试编译32位 MdeModulePkg 模块
build -a IA32 -t GCC5 -p MdeModulePkg/MdeModulePkg.dsc
此时会报错,如下:
/home/nod/Documents/UDK2018/UDK2018/edk2-vUDK2018/Build/MdeModule/DEBUG_GCC5/IA32/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe/DEBUG/IncompatiblePciDeviceSupport.dll unsupported ELF EM_386 relocation 0xa.
GenFw: ERROR 3000: Invalid
/home/nod/Documents/UDK2018/UDK2018/edk2-vUDK2018/Build/MdeModule/DEBUG_GCC5/IA32/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe/DEBUG/IncompatiblePciDeviceSupport.dll unsupported ELF EM_386 relocation 0x9.
GenFw: ERROR 3000: Invalid
出现这个错误的原因是GCC版本较高的原因,安装一个4.8的就可以编译通过了,可用如下命令安装:
sudo apt-get install gcc-4.8
若提示找不到包是因为Ubuntu版本较高,只能手动安装了,下载地址:https://mirrors.huaweicloud.com/ubuntu/pool/universe/g/,选择名字结尾带_all的包,这才是完整的,其它的会提示缺少依赖。
安装完使用 gcc -v 查看当前GCC版本还是原来的,怎么切换到4.8呢?看这篇文章: Ubuntu下多个GCC版本切换,做完就可以成功编译32位的了.
常用编译参数
上面编译时候带的参数代表什么意思呢?
-a 即architecture,指定编译的架构,可以是X64, IA32, MIPS64EL等
-p 即package,指定要编译的模块,如MdeModulePkg/MdeModulePkg.dsc, AppPkg/AppPkg.dsc
-t 即Toolchain, 指定编译工具,一般Windows的编译工具是VS, 如VS2013, Linux下则为GCC,如GCC5,具体所支持的工具可在Conf/tools_def.txt查看到
-b 即build, 指定编译的版本, 可以是RELEASE或DEBUG也可以通过修改Conf/target.txt文件配置默认的参数,这样编译的时候就不用每次都打参数了,直接输入build即可
s
编译和运行edk2中的OVMF,使用虚拟机qemu运行编译效果
(1)在edk2目录下执行:
source edksetup.sh BaseTools
(2)编译开放虚拟机固件OVMF(这里我选择编译X64架构版本的),在edk2路径下执行如下命令:
build -a X64 -t GCC48 -p OvmfPkg/OvmfPkgX64.dsc
说明:这里可以参考开始的那个链接,其他的教程有时会要求手动更改Conf路径下的target.txt来配置编译目标的配置,再执行source edksetup.sh,但是这里为了方便,直接使用命令行的方式配置,指定GCC48并不是要安装gcc4.8,我这里理解的是gcc7.5中应该有向下编译器版本兼容的宏,所以不需额外再去安装gcc4.8,避免造成问题一的出现。这一步过程比较长,编译完后没有错误即可运行(这里需要安装qemu,安装方式直接sudo apt-get install qemu即可);
(3)运行虚拟机固件,启动编译的uefi结果
qemu-system-x86_64 -bios Build/OvmfX64/DEBUG_GCC48/FV/OVMF.fd -M pc -m 256 -cpu qemu64 -vga cirrus -name UEFI -boot order=dc
说明:qemu在不同机器架构的运行版本不一样,我是指定在X86_64架构Ubuntu虚拟机,所以使用qemu-system-x86_64,编译的结果在Build/OvmfX64/DEBUG_GCC48/FV/路径下,运行效果如下图:
稍等片刻可以进入到如下shell界面(可以按回车或者Esc加快进度)
让后再shell中输入exit即可进入到我们比较熟悉的uefi配置界面:
如果想从qemu界面退出,可以按键盘的Ctrl+Alt组合键。
Ubuntu下搭建UDK2018开发环境相关推荐
- ubuntu下搭建android开发环境(转载)
在ubuntu下搭建android开发环境,准备学习一下android开发. 1.安装JDK 首先到oracle的官网上下载linux版本的JDK(网址为:http://www.orac ...
- ubuntu下搭建android开发环境(四)核心篇安装AndroidStudio、sdk、jdk
[置顶] ubuntu下搭建android开发环境(四)核心篇安装AndroidStudio.sdk.jdk(by 星空武哥) <div class="article_manage c ...
- felayman——Ubuntu下搭建PHP开发环境
可以选择一键安装所有包,也可以一个个的安装,这里我选择一键安装. 步骤如下: 1.sudo apt-get install apache2 mysql-server mysql-client php5 ...
- ti linux 开发环境,Ubuntu下搭建MSP430开发环境(MSPGCC)
上回讲到已经成功编译了源代码,生成了可执行文件,接下来就是要连接仿真器,下载可执行文件了.mspgcc中连接仿真其用的是mspdebug(功能上类似与openocd),连接成功之后它也能够充当gdbs ...
- python的开发环境包括_下搭建 Python 开发环境
下搭建 Python 开发环境 Ubuntu 作为当下最流行的 Linux 发行版本之一,用户基数非常庞大,而且 Ubuntu 操作系统也非常适合 Python 学习.这节课我们就来学习下如何在 Ub ...
- Eclipse下搭建GitHub开发环境
自从GitHub的强大性被开发者认识到后,越来越多的开发者选择使用GitHub代替SVN来进行开发.本人也不例外,最近开始研究如何使用GitHub来托管自己的代码,下面就开始介绍如何在Eclipse下 ...
- windows环境下搭建rabbitMQ开发环境
2019独角兽企业重金招聘Python工程师标准>>> windows环境下搭建rabbitMQ开发环境 1.下载与安装 erlang rabbitmq 是使用erlang语言开发的 ...
- 在Windows环境下搭建Android开发环境
标题:在Windows环境下搭建 Android 开发环境 作者:CrazyPebble 时间:2011年2月28日 声明:此文在参考其他网上资料以及笔者实践总结写下,一来自己可以做一些总结,二来给跟 ...
- Ubuntu下搭建MPI并行计算环境
Ubuntu下搭建MPI并行计算环境 [日期:2012-10-10] 来源:Linux社区 作者:hs794502825 [字体:大 中 小] 在这里面可以选择一个合适的openmpi安装包,此处我选 ...
- mysql环境搭载后老出错_使用Docker在window10下搭建SWOFT开发环境,mysql连接错误
使用Docker在window10下搭建SWOFT开发环境,mysql连接错误 { "code": 0, "error": "(Swoft\\Db\\ ...
最新文章
- 动态SQL应用(成绩排名)
- 22/11/2010
- oracle schema_Oracle数据库坏块检查与修复
- ios点击推送闪退_苹果推送iOS 14.2 beta 1:千万别更新,大批应用闪退
- 当 dotnet-monitor 遇上 Prometheus, 是种什么样的体验?
- Servlet使用适配器模式进行增删改查案例(EmpDaoImpl.java)
- 工作233:定义有对话框的按钮
- WPF - 自定义标记扩展
- java assert语句未执行_Java陷阱之assert关键字
- commons dbcp.jar有什么用
- 判断objcet是否是map类型_Java集合类和Map判定一个对象是否已经存在
- Hello,programer! 我的第一篇博客
- 区块链对人工智能的变革:去中心化将带来数据新范式
- 2016年中考计算机考试模拟试题,2016年计算机三级考试模拟试题(含答案)
- 【互联网人的英语】背景知识对于理解文章究竟有多重要?
- Kubernetes(K8s) kubectl cordon, drain, uncordon 常用命令
- Cstyle的UEFI导读: UEFI的N种实现及差别
- [Swift]LeetCode976. 三角形的最大周长 | Largest Perimeter Triangle
- CISCO 640-875 认证题库 更新
- 在阿里上班,是种什么体验?
热门文章
- C/C++之回调函数
- #pragma push_macro(new) 及扩展操作
- java反编译工具Java Decompiler
- AifbdScore智能AI曲谱乐谱播放识别SDK midi曲谱 应用开发 五线谱 六线谱 四线谱播放
- 强制刷机NOKIA E6-00方法
- (原创) 心电图机静态心电自动分析算法介绍
- Android studio 导入 Android 系统源码
- 开发MT4指标和EA(自动交易系统)
- MySQL8.0数据库基础教程(二)-理解关系
- 实验一 201521410003 15网一 叶萌熙