世界热点!UEFI开发环境搭建(踩坑指南)
参考内容
「Coding Tools」 第3话 Ubuntu下EDK2开发环境搭建 - 哔哩哔哩 (bilibili.com)
【资料图】
「Coding Tools」 第4话 如何使用Qemu虚拟机运行EDK2编译结果 - 哔哩哔哩 (bilibili.com)
《UEFI编程实践》- 罗冰 机械工业出版社
环境:
vmware 17
ubuntu 22.04(不建议使用20.04以下的环境)
1、 安装依赖工具
apt install python3 (建议使用python3不要使用python2)
apt install python3-distutils
apt install uuid-dev
apt install nasm(必须2.15及以上)
apt install bison
apt install flex
apt install iasl(不要使用acpica! 可能会导致编译OVMF镜像时路径错误)
2、 下载开发包
mkdir ~/UEFI
cd ~/UEFI
git clone http://github.com/tianocore/edk2.git
git clone http://github.com/tianocore/edk2-libc.git
3、 配置编译环境
cd edk2
git submodule update –init (此时会遭遇多次失败,不要怀疑自己,重复几次即可,使用科学上网有概率提高成功率)
make -C BaseTools (成功会提示OK)
新建脚本配置环境方便多次使用 vim initedk.sh 内容为:
cd $home/~/UEFI/edk2
export EDK_TOOLS_PATH=$home/~/UEFI/edk2/BaseTools
source edksetup.sh BaseTools
export PYTHON_COMMAND=/usr/bin/python3(若默认python环境为2可加此条,一般不用)
4、 编译UEFI模拟器
本文只编译64位模拟器,qemu及应用程序,若要编译32位程序使用命令-a IA32,目前遇到的问题是使用64位机器编译32位程序仍然会从64位的基础库中查找依赖,理论解决方法是将32位的依赖库添加一个硬链接(暂未解决)。
source initedk.sh
build -p edk2/EmulatorPkg/EmulatorPkg.dsc -t GCC5 -a X64
或者修改edk2/Conf目录下的target.txt
以done标志成功
编译完成后生成的文件在~ /UEFI/edk2/Build/EmulatorX64/DEBUG_GCC5/X64中
可执行文件./Host
5、 编译OVMF镜像及GDB调试
以MdeModulePkg的HelloWorld为目标调试工具
5.1添加调试代码
编辑HelloWorld源码目录在
~/UEFI/edk2/MdeModulePkg/Application/HelloWorld/HelloWorld.c
添加头文件声明
#include <Library/DebugLib.h>
主程序中添加获取程序入口地址代码
DEBUG ((EFI_D_INFO, "HelloWorld:My Entry point is 0x%08x\n", (CHAR16*)UefiMain ));
接着编辑OvmfPkg.dsc,文件路径在
~/UEFI/edk2/OvmfPkg/OvmfPkgX64.dsc
在[Components]下添加代码
MdeModulePkg/Application/HelloWorld/HelloWorld.inf{
<LibraryClasses>
DebugLib|MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf
}
5.2编译OVMF镜像
build -p edk2/OvmfPkg/OvmfPkgX64.dsc -t GCC5 -a X64 -b DEBUG
以done标志成功,编译完成的文件在~/edk2/Build/OvmfX64/DEBUG_GCC5中,镜像文件在此目录下的FV中,HelloWorld二进制文件在此目录下的X64中。
5.3准备qemu环境
~/UEFI mkdir ovmf_dbg
cd ovmf_dbg
cp edk2/Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd ./
cp mkdir hda_contents
cp edk2/Build/OvmfX64/DEBUG_GCC5/X64/HelloWorld.* ./had_contents
5.4启动qemu
qemu-system-x84_64 -s -pflash OVMF.fd -hda fat:rw:hda_contents/ -net none
-debugcon file:debug.log -global isa-debugcon.iobase=0x402
可能会提示
把他装了就完了,进入Shell,执行HelloWorld.efi,执行过程会同步将调试信息输出到debug.log
打开日志文件,查找加载驱动的指针地址Loading driver point
5.5 GDB挂载调试
计算偏移地址
text = 0x61D2000+0x0000240 = 0x61D2240
data = 0x61D2000+0x0000240+0x0002080 = 0x61D42c0
加载符号,设定断点,并将GDB挂载到QEMU上
回到Shell,再次运行HelloWorld.efi,断点被命中,gdb程序同步运行,可进行后续调试工作。
至此环境搭建确认完成,可以正常使用调试。
精彩推送
2月17日基金净值:景顺景颐嘉利6个月持有期债券A最新净值1.1418,跌0.09%_天天快消息
2月17日,景顺景颐嘉利6个月持有期债券A最新单位净值为1 1418元,累计净值为1 1418元,较前一交易日下...
2022中国正能量“五个一百”网络精品征集评选展播活动 用图片讲述正能量故事
2022中国正能量“五个一百”网络精品征集评选展播活动“百幅网络正能量图片”征集进行时,用图片力量诠...
前瞻性通胀指标1月反弹 美国对抗通胀遭遇挫折!-速读
综合报道,美国劳工统计局16日发布的报告显示,衡量批发价格水平的生产者价格指数(PPI)1月环比上涨0 7%,创下202
春节租车市场火爆,新能源车企能否押注“汽车租赁”?
近两年来,新能源汽车市场一路狂飙,2021-2022年,我国新能源车的销量分别为352 1万辆和688 7万辆,同...
新闻快讯
X 关闭
X 关闭
新闻快讯
- 世界热点!UEFI开发环境搭建(踩坑指南)
- 2012年九年级化学上册人教版笔记_2012年人教版九年级化学上册化学教案_环球速讯
- RAIN MAN
- 当前热文:空调外机带电清洗可以吗?
- 当前要闻:预防春季流感注意这几点 流感症状主要表现有哪些
- 焦点短讯!北青:扬科维奇为亚运队站好最后一班岗 昨天仍在迪拜带队训练
- 华北电力在211里面排名_华北电力比好多985好 环球今头条
- 芝加哥农产品期价27日下跌
- 速腾1.6维护成本表
- 一种用于物流输送线的RFID识读范围自动测量系统
- 播报:市县两会|海口美兰区今年将完成106个老旧小区及2条“断头路”改造
- 江子晨(2.27)—金价低位整理不是底!美指初到105逞威风_聚焦
- 比亚迪韩EV标准续航版豪华挂牌价综合补贴后20.98万元|世界时快讯
- 世界头条:三千渃水
- 【天天时快讯】2∶0淘汰武汉女篮 四川女篮晋级WCBA季后赛四强
- 今天最新消息 黑龙江三地发布雷雨大风、雷电黄色预警信号_环球热文
- 张小泉:2月24日获融资买入109.30万元 短讯
- 今日要闻!第一台电子计算机称为eniac它是什么的缩写
- 花呗冻结怎么解封花呗?这5种常见方法要掌握
- 世界快讯:见行动 看效果——2023区长访谈:西青区专场
- b股-天天快看点
- 大便后纸上有血是什么原因引起的_大便后纸上有血是什么原因-世界新要闻
- 电蚊香可以点一夜吗?-微动态
- 潘多拉盒子
- 轻型卒中患者要做好预防,小心卒中卷土重来!
- 斩魂 pk技能加点_斩魂剑侠技能加点 全球播资讯
- 赵芳
- 易涛_对于易涛简单介绍_微动态
- 快讯:三星GalaxyZFlip4渲染泄漏以揭示其多种配色
- 中华物流网
- 南航物流与佳邮国际签订战略合作协议-每日热闻
- 什么是混响
- 广西超5万人赶“区考”,考生:还要“变身”县长发言
- 【独家焦点】南明区司法局:多角度开展社区矫正对象教育矫治
- 拳皇2002二阶堂红丸|微速讯
- CBA最新消息:篮协不撤回处罚,阿的江谈重当主帅,赵睿欺负洋帅|精彩看点
- 环球关注:苹果启动Apple Watch科研人员支持计划:深入研究心脏健康
- 害怕孤独
- 焦点精选!“网格蓝”携手“志愿红”共绘基层治理“幸福色”
- 全球速递!Thumbs.db是什么文件可以删除吗?_thumbs.db能删除吗
- 丹霞路
- 圣诞节送女生什么礼物好_圣诞节送女生什么礼物好学生 热门看点
- 花旗和高盛也加入华尔街禁用ChatGPT之列_全球即时看
- 乔慧 每日简讯
- 消金公司年内首位新“帅”上任,海尔消费金融“70后”原副总张西铭转正
- 湿法炼铅_关于湿法炼铅介绍 天天报资讯
- 2014世界杯在哪举行
- 损益类账户有哪些费用_损益类账户有哪些
- 鬼谷八荒御龙山庄发育方法_鬼谷八荒御龙山庄发育方法在哪-环球滚动
- 滕哈格:曼联击败了西甲领头羊巴萨 弗雷德像蚊子一样围绕着德容