QEMU仿真方式总结

QEMU是目前最先进的动态二进制翻译跨平台仿真软件,它可以模拟x86、ARM、ARM64、MIPS、PowerPC等架构。QEMU的原理主要是将ELF格式的可执行文件翻译成中间形式,然后根据中间形式,拷贝编译好的微操作代码,形成目标基本块,最后再执行此基本块。它的总体结构如图所示
 

QEMU主要有两种仿真方式:

  • 用户模式仿真:允许一个(Linux)进程执行在不同架构的CPU上,该模式下,QEMU 可以作为进程级虚拟机

  • 系统模式仿真:允许仿真完整的系统,包括处理器和配套的外设,该模式下,QEMU 也可以作为系统虚拟机

接下来我们从QEMU的安装开始来讲解这两种仿真方式,需要用到的固件可以在后台回复「QEMU」获取

1 安装QEMU

sudo apt-get updatesudo apt-get install qemu-system-mipssudo apt-get install qemu-usersudo apt-get install qemu-user-staticsudo apt-get install qemu-utils

2 QEMU系统模式仿真

首先我们需要从debian官网下载kernel和image,地址如下:

https://people.debian.org/~aurel32/qemu/mipsel/

「为什么我们这里知道使用mipsel呢,你可以在文件系统内随便找一个ELF文件,然后使用file命令查看一下」

将目录中的所有文件下载到一个kernel内即可,同时也将固件解压放到同一目录

首先安装虚拟网络设备tun

sudo apt-get install uml-utilities

为root用户添加网卡tap0

sudo tunctl -t tap0 -u root

设置IP地址

sudo ifconfig tap0 192.168.3.1/24

查看一下我们设置的IP地址

ifconfig

进入kernel目录,并使用如下命令启动qemu:

sudo qemu-system-mipsel -M malta -kernel ./vmlinux-3.2.0-4-4kc-malta -hda ./debian_wheezy_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic -net tap,ifname=tap0,script=no,downscript=no -nographic -s

命令解析如下

效果如图所示

账号密码均为root

使用ifconfig配置仿真机的eth0网卡为192.168.3.2

ifconfig eth0 192.168.3.2

使用物理机测试与仿真机之间的连通性

ping 192.168.3.2

使用scp命令将squashfs.tar传入仿真机

scp squashfs.tar root@192.168.3.2:/root

在仿真机内使用tar命令解压

tar -zxvf squashfs.tar

挂载固件文件系统中的proc目录和dev目录到chroot环境,因为proc中存储着进程所需的文件,比如pid文件等等,而dev中存储着相关的设备

mount -o bind /dev ./squashfs-root/devmount -t proc /proc ./squashfs-root/proc/

使用chroot更改root目录,系统的目录结构将以squashfs-root作为根

chroot ./squashfs-root/ sh

至此,我们就可以运行该文件系统中的程序啦

3 QEMU用户模式仿真


因为我们要运行的是mipsel的程序,所以这里我们使用qemu-mipsel来执行

但如果有的时候目标程序使用了动态链接库就会导致我们执行失败,这个时候我们只要配合chroot使用即可,首先将qemu-mipsel拷贝到squashfs-root目录

cp $(which qemu-mipsel-static) .

sudo chroot . ./qemu-mipsel-static ./www/api

4 总结

QEMU的出现为我们这些测试人员节约了大量的成本。我们可以在没有开发板的情况下进行测试、调试和运行,大大提高了效率

参考引用:

https://swordfaith.github.io/2019/09/24/QEMU%20%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86/基于QEMU的嵌入式系统仿真环境的构建(陈宇星)
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QEMU 是一个功能强大的虚拟化软件,可以用于模拟多种开发板,包括阿波罗开发板。要在 QEMU 中进行阿波罗开发板的仿真,你可以按照以下步骤进行操作: 步骤 1: 下载 QEMU 源代码 首先,你需要从 QEMU 官方源代码库(https://www.qemu.org/download/)下载最新版本的 QEMU 源代码。 步骤 2: 配置和编译 QEMU 解压下载的 QEMU 源代码,并进入解压后的目录。然后,执行以下命令来配置和编译 QEMU: ```bash ./configure --target-list=arm-softmmu make ``` 这将为 ARM 架构的软件模拟器构建 QEMU。 步骤 3: 获取阿波罗开发板固件 获取适用于阿波罗开发板的固件镜像文件。这是一个包含阿波罗开发板引导加载程序和应用程序的二进制文件。 步骤 4: 启动 QEMU 阿波罗开发板仿真 使用以下命令启动 QEMU 并加载阿波罗开发板固件镜像: ```bash ./qemu-system-arm -M apollon -kernel path/to/firmware.bin ``` 确保将 `path/to/firmware.bin` 替换为实际的阿波罗开发板固件镜像文件路径。 这将启动 QEMU 的阿波罗开发板仿真,并加载固件镜像以在仿真环境中运行。 通过上述步骤,你可以使用 QEMU 进行阿波罗开发板的仿真。请注意,QEMU 是一个软件模拟器,它模拟了硬件设备的行为,但并不能完全模拟实际硬件的所有特性和行为。因此,在进行实际的阿波罗开发板开发时,可能需要使用实际的硬件开发板来进行测试和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值