Qemu调试

最近更新时间:2018-05-10 18:00:00



系统准备采用ubuntu 16.04 TLS 64版本 下载qemu调试工具包

1.安装虚拟网桥工具和模拟器

apt-get install qemu-system-arm bridge-utils 

2.停掉有关网络服务

 service NetworkManager stop
#停掉Docker服务
systemctl stop docker.service 
#删除Docker创建的默认虚拟网卡
ip link set dev docker0 down 
brctl delbr docker0

3.配置虚拟网桥的操作,例如你的实体网卡名字为:enp0s31f6

# 先关闭enp0s31f6接口
ifconfig enp0s31f6 down
# 增加一个虚拟网桥br0
brctl addbr br0
# 在br0中添加一个接口enp0s31f6
brctl addif br0 enp0s31f6
#只有一个网桥,所以关闭生成树协议
brctl stp br0 off
# 设置br0的转发延迟
brctl setfd br0 1
# 设置br0的hello时间
brctl sethello br0 1
# 打开br0接口
ifconfig br0 0.0.0.0 promisc up
# 打开eth0接口
ifconfig enp0s31f6 0.0.0.0 promisc up
# 从dhcp服务器获得br0的IP地址
dhclient br0
 # 查看虚拟网桥列表
brctl show br0
# 查看br0的各接口信息
brctl showstp br0
#在没有dhcp服务器的网络中也可以用ifconfig命令为br0接口配置一个静态IP地址
#例如:
ifconfig br0 192.168.110.22 netmask 255.255.255.0
route add default gw 192.168.110.1
# 创建一个tap0接口,只允许root用户访问
tunctl -t tap0 -u root 
# 在虚拟网桥中增加一个tap0接口
brctl addif br0 tap0
# 打开tap0接口
ifconfig tap0 0.0.0.0 promisc up
# 显示br0的各个接口
brctl showstp br0 

4.配置虚拟网桥转发的操作

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/bridge/bridge-nf-call-iptables
iptables -P FORWARD DROP
iptables -A FORWARD -p all -i br0 -j ACCEPT

5.运行玩客云虚拟机

sudo qemu-system-arm -m 1024M -M vexpress-a9 -dtb onecloud.dtb -kernel zImage -append "root=/dev/mmcblk0 panic=1 rootfstype=ext4 rw console=ttyAMA0" -sd onecloud.img  -net nic -net tap,ifname=tap0,script=no,downscript=no  --nographic

6.登录OneCloud login: 用户名:root,密码:onecloud,同时也支持telnet和ssh登录

例如:玩客云IP:192.168.110.132
telnet 登录:
telnet 192.168.110.132
login:root
passwd:onecloud
ssh 登录:
ssh root@192.168.110.132
passwd:onecloud

7.nfs挂载本机调试

#nfs server安装
apt-get install nfs-kernel-server
#新增配置到文件/etc/exports
/home/user/nfs *(rw,sync,no_root_squash)
#重启nfs server
service nfs-kernel-server restart
#虚拟机环境执行nfs挂载,例如:
busybox mount -t nfs  -o nolock 192.168.110.132:/home/user/nfs /mnt

8.运行docker例子

dockerd --storage-driver=aufs &
docker pull registry.docker-cn.com/arm32v6/alpine
docker run -it --rm --net=host registry.docker-cn.com/arm32v6/alpine

9.运行chrome webdirver 自动化测试脚本

例如:
cd /plugin-chrome
export LD_LIBRARY_PATH=$PWD/lib
export PATH=$PWD/bin:$PATH
export PYTHONPATH=$PWD/lib/python2.7:$PWD/lib/python2.7/site-packages:$PWD/lib/python2.7/lib-dynload
export CHROME_DRIVER=$PWD/chromedriver
export CHROME=$PWD/content_shell
python webdriver.py