用Qemu模擬vexpress-a9 --- 配置 qemu 的網絡功能


轉載: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 + ubuntu14.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 
這里需要說明一下,由於我的虛擬機上eth0對應的是NAT連接方式,在VMware的配置中:
可以看到eth0的地址是在192.168.11.0網段,所以將br0也設置在192.168.11.0網段。
創建 /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 后都需要手動執行一次上一條命令。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM