问题描述
我正在尝试使用 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 下运行您的二进制文件,它会告诉您它崩溃的指令。