dlink路由器固件-qemu调试环境搭建

qemu安装

git clone git://git.qemu.org/qemu.git
cd qemu
git submodule init
git submodule update --recursive
sudo apt install libglib2.0 libglib2.0-dev
sudo apt install autoconf automake libtool 
cd qemu && ./configuremakesudo make install

qemu 网络配置

手动配置(启动一次就要配置一次)

$ sudo apt-get install uml-utilities
$ sudo tunctl -t tap0 -u sebao
$ sudo ifconfig tap0 172.16.0.1/24

ifconfig tap0

进入qemu虚拟机再次配置

sudo ifconfig eth0 172.16.0.2/24


自动配置

sudo apt-get install uml-utilities


sudo vi /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
iface br0 inet dhcp
  bridge_ports eth0
  bridge_maxwait 0

sebao@ubuntu:~$ sudo cat /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

sebao@ubuntu:~$ sudo cat /etc/qemu-ifup

#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "bridge networking"
sudo ifdown eth0
sudo ifup br0
echo "Bringing up $1 for bridge mode"
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0"
sudo /sbin/brctl addif br0 $1
sleep 2

启动qemu

qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian
squeeze
mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic,macaddr=52:54:be:36:42:a9 -net tap

dir601 踩坑

把 D-Link dir601 固件包导入qemu虚拟机,解压并进入squashfs-root 文件夹

解压web目录

tar zxvf mnt/www.tgz www/
cp usr/bin/my_cgi.cgi www/

直接运行http服务会报各种错误,需要手动创建文件夹,以及文件

创建文件: /var/run/lighttpd.pid

创建文件:/log/lighttpd/error.log

WWW目录下 rt文件夹里面的所有文件,移动到 www目录


   chroot . usr/bin/lighttpd -f mnt/lighttpd/lighttpd.conf
57  cd ../
58  ls
59  cd squashfs-root/
60  ls
61  cd www/
62  ls
63  cd ../
64  chroot . usr/bin/lighttpd -f mnt/lighttpd/lighttpd.conf 
65  cat mnt/lighttpd/lighttpd.conf | grep "lighttpd.pid"
66  cd var/
67  ls
68  mkdir run
69  ls
70  cd run
71  vi lighttpd.pid
72  cd ../../
73  chroot . usr/bin/lighttpd -f mnt/lighttpd/lighttpd.conf 
77  mkdir log
78  cd log/
79  mkdir lighttpd
80  cd lighttpd/
81  vi error.log
82  cd ../../../
83  chroot . usr/bin/lighttpd -f mnt/lighttpd/lighttpd.conf 
84  cd www/
85  ls
86  cd rt/
87  ls
88  cd ../
89  ls
90  ls
91  cd rt/
92  ls
93  ls -ll
94  cd ../
95  mv rt/ .
96  ls
97  mv rt/* .



启动固件

chroot . usr/bin/lighttpd -f mnt/lighttpd/lighttpd.conf


暂无评论

发布评论