MIPS-I 固件 Qemu 仿真

问题描述

我正在尝试使用 qemu 进行固件模拟。但是有一些错误

首先我的固件busyBox介绍

busyBox: ELF 32-bit LSB executable,MIPS,MIPS-I version 1 (SYSV),dynamically linked,interpreter /lib/ld-uClibc.so.0,BuildID[sha1]=35ad4cc498db7d5439552d8c3ed0d36a47cbc661,stripped

所以我认为这是 mips 32 位固件,我模仿 qemu-system-mipsel

像这样

qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mipsel_standard.qcow2 -append "root=/dev/sda1" -nographic -redir tcp:2222::22

我在 qemu 模拟系统上命令这个

chroot ./ ./bin/sh

但是 qemu 对我说Illegal Instruction...

我该如何解决这个问题!

解决方法

你没有说明你的二进制文件是如何构建的,即你用哪个工具链编译它以及你使用了哪些选项。 “文件”输出不足以确定它是为什么 CPU 构建的。

默认情况下,马耳他板使用 24Kf CPU,因此如果此二进制文件是为比具有更多功能的 CPU 更新的 CPU 构建的,则当它尝试执行 24Kf 上不存在的指令时将会失败。

>

由于您使用的是标准的 Debian 客户机映像,您可以在客户机操作系统中安装一个“gdb”,然后在 gdb 下运行您的二进制文件,它会告诉您它崩溃的指令。