利用qemu建立AC9、K3的动态调试环境
参考:
12
12
12
12
1、安装binwalk
git clone https://github.com/devttys0/binwalk.git
cd binwalk
sudo python setup.py install
sudo apt-get install python-lzma
2、安装qemu
sudo apt-get install qemu qemu-system
sudo apt-get install binfmt-support qemu-user-static
3、解压ac9固件
binwalk -Me ac9.bin
4、运行固件中的程序
进入解压后的./squashfs-root目录,运行
cp $(which qemu-arm-static) ./
sudo chroot . ./qemu-arm-static ./bin/uname -a
sudo chroot . ./qemu-arm-static ./sbin/ifconfig
可以看到固件中uname、ifconfig程序的运行结果
5、运行固件
针对不同平台,openwrt有不同的linux内核
Mips为Malta平台的linux系统内核:
12
ARM为realview平台的linux系统内核:
12
由于AC9和K3都是ARM架构的,我们执行下面的命令可以启动openwrt:
sudo qemu-system-arm -kernel openwrt-realview-vmlinux-initramfs.elf -M realview-eb-mpcore -net nic,vlan=0,macaddr=12:22:22:22:22:22 -net tap -nographic
现在要把AC9的文件加入进去
1)使用dd创建一个文件
dd if=/dev/zero of=./share.img bs=1M count=35
2)格式化share.img文件
mkfs.ext4 ./share.img
3)然后执行
sudo mount -o loop ./share.img /tmp/share
将ac9的固件内容拷贝到/tmp/share即可
再执行如下命令启动qemu:
sudo qemu-system-arm -kernel openwrt-realview-vmlinux-initramfs.elf -M realview-eb-mpcore -net nic,vlan=0,macaddr=12:22:22:22:22:22 -net tap -nographic -sd ./share.img
-kernel参数指定了内核文件
-M参数指定了需要qemu模拟的平台
-net参数指定了网卡的mac地址
-sd参数就是指定了我们的硬盘镜像文件
-nographic告诉qemu不用另起一个界面视窗,就用当前的控制台
通过如下命令挂载ac9的文件系统:
mount -t ext4 /dev/mmcblk0 /overlay/
然后用chroot /overlay /bin/sh来切换根目录到路由器文件系统。
为了能够让QEMU虚拟机和宿主机都上网,并且互通,为动态调试做准备,必须要配置桥接网络
sudo apt-get install bridge-utils uml-utilities
-修改/etc/network/interfaces内容
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
up ifconfig eth0 0.0.0.0 up
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_maxwait 1
-修改/etc/qemu-ifup内容
#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /sbin/brctl addif br0 $1
sleep 3
评论:1