標籤:
轉載: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-utilitiessudo 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 interfaceauto loiface lo inet loopback# The primary network interfaceauto eth0#NetworkManager#iface eth0 inet dhcp
# 經過實驗發現,由於我用的是虛擬機器,添加了三塊虛擬網卡eth0對應的是NAT串連方式,eth2對應的是橋接方式,如果
# 將虛擬機器的VMnet8和VMnet1禁止掉的話,eth2就不能工作,此時下面如果是bridge_ports eth2的話,qemu就無法連網了
# 但是發現eth0讓然可用,所以這裡設定了bridge_ports eth0.auto br0iface 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/shecho sudo tunctl -u $(id -un) -t $1sudo tunctl -u $(id -un) -t $1echo sudo ifconfig $1 0.0.0.0 promisc upsudo ifconfig $1 0.0.0.0 promisc upecho sudo brctl addif br0 $1sudo brctl addif br0 $1echo brctl showbrctl showsudo ifconfig br0 192.168.11.20
-
建立 /etc/qemu-ifdown 指令碼,內容如下所示(樣本檔案位於 /home/user/sylixos_workspace/qemu-mini2440/ubuntu-12.04 目錄):
#!/bin/shecho sudo brctl delif br0 $1sudo brctl delif br0 $1echo sudo tunctl -d $1sudo tunctl -d $1 echo brctl showbrctl show
-
輸入如下命令為 /etc/qemu-ifup 和 /etc/qemu-ifdown 指令碼加上可執行許可權:
chmod +x /etc/qemu-ifupchmod +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 emulationCould not initialize device ‘tap‘
-
那麼先手動執行如下命令:
/etc/qemu-ifup tap0
-
注意:不可使用 sudo 執行上一條命令,每次啟動 ubuntu 後都需要手動執行一次上一條命令。
用Qemu類比vexpress-a9 --- 配置 qemu 的網路功能