(03)QEMU模拟ATF启动

news2024/7/6 18:15:54

QEMU启动

准备一个目录qemu_boot存放所有镜像文件。最终启动需要的镜像如下所示。

Image  QEMU_EFI.fd  bl1.bin  bl2.bin  bl31.bin fip.bin  flash.bin  rootfs.cpio.gz

准备镜像

EDK2

下载QEMU_EFI。

wget http://snapshots.linaro.org/components/kernel/leg-virt-tianocore-edk2-upstream/latest/QEMU-KERNEL-AARCH64/RELEASE_GCC5/QEMU_EFI.fd

rootfs

rootfs使用Buildroot编译构建。

git clone git://git.buildroot.net/buildroot.git
cd buildroot
make qemu_aarch64_virt_defconfig
utils/config -e BR2_TARGET_ROOTFS_CPIO
utils/config -e BR2_TARGET_ROOTFS_CPIO_GZIP
make olddefconfig
make

编译得到output/images/rootfs.cpio.gz

kernel

kernel构建这里下载linux-5.17.2.tar.xz。

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.17.2.tar.xz

编译kernel,如下

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make defconfig
make -j16

编译得到arch/arm64/boot/Image

编译ATF

make CROSS_COMPILE=aarch64-linux-gnu- PLAT=qemu all fip DEBUG=1 \
BL33=../qemu_boot/QEMU_EFI.fd \
OPENSSL_DIR=/home/xieli/project/6---ATF/openssl-3.0.8

build/qemu/debug会生成bl1.binbl2.binbl31.bin文件以及固件镜像包fip.bin

打包

将bl1.bin和fip.bin存放在一个flash.bin文件中,通过提供给qemu的-bios参数加载。

dd if=bl1.bin of=flash.bin bs=4096 conv=notrunc
dd if=fip.bin of=flash.bin seek=64 bs=4096 conv=notrunc

注意:上面需要设置seek=64的原因是在qemu平台中定义了fip文件的起始地址从0x40000(64*4096)开始

镜像文件的对应关系如下。

阶段文件
BL1build/qemu/debug/bl1.bin
BL2build/qemu/debug/bl2.bin
BL31build/qemu/debug/bl31.bin
BL33QEMU_EFI.fd
Kernelarch/arm64/boot/Image
Rootfsoutput/images/rootfs.cpio.gz

启动

qemu-system-aarch64 -nographic -machine virt,secure=on \
    -cpu cortex-a57 -kernel Image \
    -append 'console=ttyAMA0,38400 keep_bootcon' \
    -initrd rootfs.cpio.gz -smp 2 -m 1024 -bios flash.bin \
    -d unimp

退出qemu,使用Ctrl+A、然后按X

调试

在启动qemu时添加-s –S选项。

qemu-system-aarch64 -nographic -machine virt,secure=on \
    -cpu cortex-a57 -kernel Image \
    -append 'console=ttyAMA0,38400 keep_bootcon' \
    -initrd rootfs.cpio.gz -smp 2 -m 1024 -bios flash.bin \
    -d unimp \
    -s -S

在另一窗口启动gdb调试,其中blx.elf文件位于build/qemu/debug/blx

# 启动调试
gdb-multiarch bl1.elf 
# 连接目标
target remote localhost:1234
# 如果要调试bl2,bl31, 需要添加对应符号表
add-symbol-file bl2.elf
add-symbol-file bl31.elf
# 打断点
b bl1_main
b bl2_main
b bl31_mainn
# 全速运行
c
# 单步执行
n
# 单步跟踪进入
s

安全启动

重新编译ATF,使能安全启动TBBR。

make CROSS_COMPILE=aarch64-linux-gnu- PLAT=qemu all fip DEBUG=1 \
BL33=../qemu_boot/QEMU_EFI.fd \
OPENSSL_DIR=/home/xieli/project/6---ATF/openssl-3.0.8 \
TRUSTED_BOARD_BOOT=1 GENERATE_COT=1 \
MBEDTLS_DIR=/home/xieli/project/6---ATF/mbedtls-mbedtls-2.28.1

同上打包生成flash.bin文件。qemu启动命令也与普通启动一致。

欢迎关注“安全有理”微信公众号。

安全有理

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

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

相关文章

go-redis

安装redis(docker) sudo docker pull redis sudo docker images 在官网下载redis.conf配置文件 redis官网:http://www.redis.cn/download.html 将下载后的压缩包解压得到redis.conf文件,放到自己的目录,我的是/hom…

数据结构与算法——图

😊数据结构与算法——图 🚀前言🚀图的基本概念🚢图的定义🚢图的基本操作🚢无向图和有向图🚢完全图🚢顶点的度、入度和出度🚢子图🚢顶点关系常用术语&#x1f…

我想在我自己的系统中加入微信支付功能,原来这么简单!!!

微信支付功能实现 一、创建SpringBoot项目 我们首先创建一个基本的SpringBoot项目。添加相关的依赖。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>&…

php宝塔搭建EMLOG站长工具箱网站自适应PC手机端php源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。本期给大家带来一套站长工具箱网站自适应PC手机端php源码。感兴趣的朋友可以自行下载学习。 技术架构 PHP5.6 nginx mysql5.6 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#xff0c;宝塔添…

SciencePub学术 | 数据处理类重点SCIEEI征稿中

SciencePub学术 刊源推荐: 数据处理类重点SCI&EI征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 数据处理类重点SCIE&EI 【期刊简介】IF&#xff1a;3.5-4.0&#xff0c;JCR2区&#xff0c;中科院4区&#xff1b; 【出版社】…

CSS选择器常见用法

目录 一.总体分类 二.基础选择器 &#xff08;1&#xff09;标签选择器 &#xff08;2&#xff09;类选择器 &#xff08;3&#xff09;id选择器 &#xff08;4&#xff09;通配符选择器&#xff08;特殊&#xff09; 三.复合选择器 &#xff08;1&#xff09;后代选择器 &…

注意看!!!Linux中Ubuntu22.04之SVN的三种配置方式【详解~】

注意看&#xff01;&#xff01;&#xff01;Linux中Ubuntu22.04之SVN的三种配置方式【详解&#xff5e;】 配置目录大全<1>I、 安装&#xff08;易上手&#x1f446;&#xff09;II、使用SVN&#xff08;简单易操作&#xff09;III、配置SVN&#xff08;精通&#xff09…

一个事务回滚问题的解决

同事遇见一个事务回滚的问题&#xff0c;从controller提交的时候出现&#xff0c;transaction marked as rollbackonly 这个错误。 从调用栈上来看&#xff0c;没啥可用的信息&#xff0c;另外基本没有啥用户代码&#xff0c;都是框架JPA的代码 这个事其实以前遇见过类似的&…

Spring Boot 中的健康检查是什么, 如何使用

Spring Boot 是一个非常流行的 Java Web 开发框架&#xff0c;它提供了许多方便的功能&#xff0c;其中之一就是健康检查。健康检查是一种用来确保应用程序和其所依赖的服务的状态正常的机制。在本文中&#xff0c;我们将探讨 Spring Boot 中的健康检查是什么&#xff0c;以及如…

货损、灭失、延迟配送怎么办?打破这几个点才是关键

物流行业离不开讨论的一个核心话题就是物流质损。不管是在货物的运输、存储还是配送环节&#xff0c;都有可能发生货物损坏的情况。 要降低货物质损的风险&#xff0c;有两个基本因素需要考虑&#xff1a;距离长短和环节次数。距离越短&#xff0c;货物摇晃挤压影响就越少&…

odoo 集成 Minio

将Odoo与MinIO集成的优点包括以下几点&#xff1a;1、可扩展性&#xff1a;MinIO是一个高性能、可扩展的对象存储服务&#xff0c;可以 轻松处理大规模的数据存储和访问需求。通过将Odoo与MinIO集成&#xff0c;您可以有效地扩展和管理您的数据存储。2、弹性存储&#xff1a;Mi…

【数据结构课程设计系列】图书管理系统操作演示

图书管理系统操作演示 随着计算机技术的进步和人们对系统需求的进一步提高&#xff0c;学校对于图书馆信息管理也相应的提升了。学校对于图书馆信息管理主要侧重于数据的更新快捷、准确、占用较少的人力资源&#xff0c;而达到最大的办公效率。 本次设计所解决的主要问题就是如…

ModaHub魔搭社区:Zilliz Cloud 数据迁移,数据的备份和恢复

目录 01.从 Milvus 到 Zilliz Cloud&#xff0c;轻点鼠标即可实现无缝迁移 02.掌握数据库的备份和恢复&#xff0c;让明天没有意外 01. 从 Milvus 到 Zilliz Cloud&#xff0c;轻点鼠标即可实现无缝迁移 越来越多的用户选择将数据从 Milvus 迁移至 Zilliz Cloud&#xff0c;通…

【网络安全带你练爬虫-100练】第2练:爬取指定位置数据

目录 一、思路 二、工具 三、代码处理 第一部分&#xff1a;发起请求接收响应&#xff08;不过多讲&#xff09; 第二部分&#xff1a;解析HTML页面提取数据 第三部分&#xff1a;处理数据 一、思路 分解步骤&#xff0c;化繁为简 爬虫分为五步走&#xff1a; 发起HTTP…

极智项目 | 实战TensorRT部署DETR

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多经验分享 大家好&#xff0c;我是极智视界&#xff0c;本文来介绍 实战TensorRT部署DETR。 本文介绍的实战 TensorRT 部署 DETR&#xff0c;提供完整的可以一键执行的项目工程源码&#xff0c;获取方式有两个&#xff…

淘宝APP商品详情接口(商品信息,价格销量,优惠券信息,详情图等)

淘宝APP商品详情接口&#xff08;商品信息接口&#xff0c;价格销量接口&#xff0c;优惠券信息接口&#xff0c;详情图接口等&#xff09;代码对接如下&#xff1a; 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;&#xff…

java jvm什么是记忆集,卡表?

记忆集 &#xff1a; 是一种用于记录 从非收集区域指向收集区域的指针集合的抽象数据结构 。如果我们不考虑 效率和成本的话&#xff0c;最简单的实现可以用非收集区域中所有含跨代引用的对象数组来实现这个数据结 构 记忆集作用 &#xff1a;解决对象跨代引用所带来的问题&a…

Rdkit|分子输出

Rdkit|分子输出 Github&#xff1a; 地址 输出SMILES/SMARTS 输出SMILES&#xff1a;MolToSmiles(mol, isomericSmiles, kekuleSmiles, canonical, …) kekuleSmiles&#xff1a;默认False&#xff0c;不使用kekule时&#xff1a;脂肪族碳用"C"表示&#xff08;大…

分布式运用——rsync远程同步

一、rsync的背景和原理 rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09;是由Andrew Tridgell于1996年开发的一款开源软件。 是一个开源的快速备份工具&#xff0c;可以在不同主机之间镜像同步整个目录树&#xff0c;支持增量备份&#xff0c;并保持链接和权限&a…