转载:http://wiki.sylixos.com/index.php/Linux%E7%8E%AF%E5%A2%83%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97
环境介绍:
Win7 64 + Vmware 11 + ubuntu12.04 32
u-boot 版本:u-boot-2015-04
Linux kernel版本:linux-3.16.y
busybox版本:1_24_stable
交叉编译工具链:arm-linux-gnueabi-
- qemu 支持多种网络链接方式,其中最常用的就是桥接(bridge)。 这需要依赖内核的 tun/tap 模块的支持。
- 输入如下命令安装必要的工具包:
sudo apt-get install uml-utilities sudo apt-get install bridge-utils
- 输入如下命令查看 /dev/net/tun 文件:
ls -l /dev/net/tun crw-rw-rwT 1 root root 10, 200 Apr 15 02:23 /dev/net/tun
- 如果该文件存在,这表明内核已经支持开启了 tun 支持,在 ubuntu-12.04 中,这个功能默认已经开启。
- 如果该文件不存在,则需要加载 tun 模块,并创建 /dev/net/tun 文件。
- 修改 /etc/network/interfaces 文件,笔者的文件内容如下所示(示例文件位于 /home/user/sylixos_workspace/qemu-mini2440/ubuntu-12.04 目录):
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 #NetworkManager#iface eth0 inet dhcp# 经过试验发现,由于我用的是虚拟机,添加了三块虚拟网卡eth0对应的是NAT连接方式,eth2对应的是桥接方式,如果# 将虚拟机的VMnet8和VMnet1禁止掉的话,eth2就不能工作,此时下面如果是bridge_ports eth2的话,qemu就无法联网了# 但是发现eth0让然可用,所以这里设置了bridge_ports eth0. auto br0 iface br0 inet dhcp bridge_ports eth0
- 添加 /etc/qemu-ifup 和 /etc/qemu-ifdown 脚本。
- 默认情况下,当 qemu 使用 tap 设备时,会执行 /etc/qemu-ifup 和 /etc/qemu-ifdown 这两个脚本。
- 我们需要创建这两个脚本,然后为它们加上可执行权限(使用chmod +x)。
- 创建 /etc/qemu-ifup 脚本,内容如下所示(示例文件位于 /home/user/sylixos_workspace/qemu-mini2440/ubuntu-12.04 目录):
#!/bin/sh echo sudo tunctl -u $(id -un) -t $1 sudo tunctl -u $(id -un) -t $1 echo sudo ifconfig $1 0.0.0.0 promisc up sudo ifconfig $1 0.0.0.0 promisc up echo sudo brctl addif br0 $1 sudo brctl addif br0 $1 echo brctl show brctl show sudo ifconfig br0 192.168.11.20
- 创建 /etc/qemu-ifdown 脚本,内容如下所示(示例文件位于 /home/user/sylixos_workspace/qemu-mini2440/ubuntu-12.04 目录):
#!/bin/sh echo sudo brctl delif br0 $1 sudo brctl delif br0 $1 echo sudo tunctl -d $1 sudo tunctl -d $1 echo brctl show brctl show
- 输入如下命令为 /etc/qemu-ifup 和 /etc/qemu-ifdown 脚本加上可执行权限:
chmod +x /etc/qemu-ifup chmod +x /etc/qemu-ifdown
- 最后需要重启计算机,使新的 /etc/network/interfaces 配置文件生效。
运行测试:
./qemu-system-arm ...... -net nic,vlan=0 -net tap,vlan=0,ifname=tap0
- 如果出现如下信息:
warning: could not configure /dev/net/tun: no virtual network emulation Could not initialize device ‘tap‘
- 那么先手动执行如下命令:
/etc/qemu-ifup tap0
- 注意:不可使用 sudo 执行上一条命令,每次启动 ubuntu 后都需要手动执行一次上一条命令。
时间: 2024-09-30 04:50:50