我正在尝试在Qemu(MIPS)中模拟TP-Link WR740N。我从固件中提取了rootfs.img,然后从此处下载了vmlinux-2.6.32-5-4kc-malta:http://people.debian.org/~aurel32/qemu/mips/。

然后,我使用以下参数启动Qemu:

qemu-system-mips -M malta -kernel 'vmlinux-2.6.32-5-4kc-malta' -hda 'rootfs.img' -append "root=/dev/sda1 console=tty0" -nographic


它卡在了:

[0.000000] console [tty0] enabled, bootconsole disabled


我也尝试过这样运行:

sudo qemu-system-mips -M malta -initrd 'rootfs.img' -kernel 'vmlinux-2.6.32-5-4kc-malta' -nographic -append "console=ttyS0,115200 root=/dev/sda rootfstype=jffs2 init=/sbin/init" -hda 'hda.img' 


,我收到此错误:

[    0.796000]  sda: unknown partition table
[    0.808000] sd 0:0:0:0: [sda] Attached SCSI disk
[    0.812000] RAMDISK: squashfs filesystem found at block 0
[    0.812000] RAMDISK: Loading 2556KiB [1 disk] into ram disk... done.
[    0.928000] VFS: Cannot open root device "sda" or unknown-block(8,0)
[    0.928000] Please append a correct "root=" boot option; here are the available partitions:
[    0.928000] 0800           65536 sda driver: sd
[    0.932000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,0)


从6EQUJ5答案后的新尝试[我仍然尽管遇到相同的错误(第二个错误)]:

这是我正在尝试的方法:

sudo qemu-system-mips -M malta -kernel 'vmlinux-2.6.32-5-4kc-malta' -nographic -append "init=/bin/sh" -hda 'myFileSystem.img'


这是一个链接下载已创建的文件系统:

http://speedy.sh/vBUEQ/myFileSystem.img


在我的文件系统上运行“文件”:

Linux rev 1.0 ext2 filesystem data (mounted or unclean), UUID=dac7072e-2c8b-408f-a080-57ea60cfd9ea


这些是我用来创建文件并将文件移入其中的命令:

dd if=/dev/zero of=~/myFileSystem.img bs=1024 count=65536
mke2fs myFileSystem.img
mkdir /mnt/virtual
mount -o loop ~/myFileSystem.img /mnt/virtual


评论

对于第二个错误,内核认为hda.img上没有有效的分区表和/或文件系统。您是如何创建该文件的?如果将hda.img设为ext2文件系统,然后将init复制到其中,并保留-initrd参数,则可能会进一步引导,尽管那时您根本不会仿效WR740N ...

#1 楼

通过执行以下操作,我可以将该固件安装到外壳中: ,并将其用作-hda

在没有-initrd ...的情况下运行并将init=/bin/sh附加到内核命令行中是一个不同的内核。因此,在qemu中模拟路由器总是一个部分过程。

评论


谢谢!我仍然有相同的错误(下面有完整答案)

–user4724
2014年6月1日下午6:16

不要忘记保留root = / dev / sda

– 6EQUJ5
2014年6月1日13:00在

非常感谢,这是我的问题。我已将“ init = / bin / sh”更改为“ init = / sbin / init”,然后键入:user-root | password-5up,以获得一个shell(也许会帮助别人)。我尝试将其连接到网络(使用“ tap”),但是当我键入udhcpc -i br-lan时,出现以下错误:错误,SIOCGIFINDEX失败!:无此类设备。我猜它不能识别我的卡,但是我不知道如何解决。最后,我要做的是使用IDA调试Web服务器(httpd)。也许最好在qemu中运行Debian MIPS,然后上传路由器的文件?先感谢您。

–user4724
2014年6月1日下午16:05

很高兴提供了帮助,请不要忘记接受答案:-)如果您还有其他问题,那么如果您单独发布它们,这些站点将发挥最佳作用...

– 6EQUJ5
2014年6月2日,0:14

回答需要解压缩这些步骤-如何制作ext2映像以及使用什么内核命令行。

– philcolbourn
18年8月31日在8:54