我在Ubuntu 16.04中安装qemu-system-arm来运行dlink DIR868L的固件。但是当我使用命令chroot ./squashfs-root/ /bin/sh
时,它只显示Illegal instruction
。我从squashfs-root/
DIR868LB1_FW203b01.bin
获得binwalk
,我确信/bin/sh
中存在squashfs-root/
。
我从qemu
开始sudo qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda debian_squeeze_armel_standard.qcow2 -append "root=/dev/sda1" -net nic -net tap
,并使用scp
将squashfs-root/
变为虚拟机。我在使用debian_wheezy_armel_standard.qcow2
我该怎么办?整个下午都困扰着我。
或者,有人能举例说明在qemu中运行 arm 固件吗?我只找到许多使用基于mips的固件的例子。
非常感谢!
答案 0 :(得分:0)
问题几乎可以肯定是因为DIR868lL中的CPU比ARM926 CPU更新,而且#34; versatilepb"董事会。如果构建来自该固件的二进制文件以使用较新的指令,则在较旧CPU的仿真中运行它们将导致非法指令'信号,就像你在真正的旧ARM硬件上运行它们一样。
这类似于为Core2 Duo构建二进制文件并尝试在旧的Pentium系统上运行它们:它不会起作用。