用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%97php

 

環境介紹

Win7 64 + Vmware 11 + ubuntu14.04 32linux

u-boot 版本:u-boot-2015-04ubuntu

Linux kernel版本:linux-3.16.y網絡

busybox版本:1_24_stable工具

交叉編譯工具鏈:arm-linux-gnueabi-oop

 

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 後都須要手動執行一次上一條命令。
相關文章
相關標籤/搜索