qemu 启动ARM虚拟机的几点释惑

本文探讨了QEMU启动ARM虚拟机时的BOOTROM过程,解答了启动命令、启动流程以及QEMU如何灌入BOOTROM指令的问题。通过分析启动命令和内核加载地址,揭示了Linux和RT-THREAD在QEMU中的不同启动行为,并指出QEMU对CPU和IO行为的模拟机制。
摘要由CSDN通过智能技术生成

参考博客

linux4.15 arm qemu @ubuntu18.04环境搭建_papaofdoudou的博客-CSDN博客

问题1:针对启动命令

qemu-system-arm -M vexpress-a9 -m 1024M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic

的启动流程是怎样的?

回答:命令行启动的是zImage,而zImage的来源是arm/boot下的zImage,zImage包含压缩的内和和自解压程序

通过makefile可以知道zImage的来源是vmlinux经过objcopy得到:

要注意这个vmlinux并非是顶层目录那个内核ELF文件的vmlinux,两个名字文件相同,但是差别巨大,首先它们的生成方式就是不同的,简单来说,内在编译zImage目标的过程中实际上产生了两个vmlinux,分别是内核压缩目录的vmlinux和源码顶层目录的vmlinux,压缩目录的vmlinux包含了内核顶层的vmliunx压缩文件和壳解压程序,虽然它们都是ELF格式,但是前者相当于一级火箭,首先点火,解压内部的vmlinux,拷贝到对应的物理地址后,后者作为二级火箭完成内核启动系统。

关于linux vmlinux,zImage vmlinux, Image以及zImage的关系,可以表示如下:

至此,可执行程序的结构布局解释的通了,此图的简要版本如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值