今天給大家介紹一下QEMU網絡配置的方法。
qemu兩種上網方式:
user mode network :
這種方式實現虛擬機上網很簡單,類似vmware里的nat,qemu啟動時加入-user-net參數,虛擬機里使用dhcp方式,即可與互聯網通信,但是這種方式虛擬機與主機的通信不方便。
tap/tun network :
這種方式要比user mode復雜一些,但是設置好后 虛擬機<-->互聯網 虛擬機<-->主機 通信都很容易
這種方式設置上類似vmware的host-only,qemu使用tun/tap設備在主機上增加一塊虛擬網絡設備(tun0),然后就可以象真實網卡一樣配置它.
首先內核中支持tap/tuns設備:
Device Drivers --->
Networking support ---> [M] Universal TUN/TAP device driver support如果當前內核沒有支持,可以重新只編譯相應模塊加入,方法很簡單:
將當前內核配置文件cp到內核源碼目錄下:
[root@LFS ~]#cp /boot/config-[kernel-version] /usr/src/linux [root@LFS ~]#cd /usr/src/linux
配置內核,將TUN/TAP選擇模塊(M),如上所示:
[root@LFS ~]#make menuconfig
重新只編譯模塊(M),不編譯核心(*)支持的東東:
[root@LFS ~]#make modules
編譯好后在/usr/src/linux/drivers/net下可以找到tun.ko:
[root@LFS net]#ls -l /usr/src/linux/drivers/net/tun.ko-rw-r--r-- 1 root root 11116 Mar 23 20:29 /usr/src/linux/drivers/net/tun.ko[root@LFS net]#
將它cp到當前內核的模塊目錄的相應位置:
[root@LFS net]#cp /usr/src/linux/drivers/net/tun.ko /lib/modules/`uname -r`/kernel/drivers/net
重新建立模塊依賴關系:
[root@LFS net]#depmod
現在就可以加載它了 :
[root@LFS net]#modprobe tun
檢查一下:
[root@LFS net]#lsmod |grep tuntun 8704 0[root@LFS net]#
OK. 成功不重新編譯整個內核加入特殊模塊支持
如果你的xx卡不被內核支持,又可以編譯成模塊,自己怕重新編譯內核后出問題就可以用這個辦法只編譯自己需要的模塊,然后手動安裝到相應位置,再加載它。
這樣編譯速度要也比編譯整個內核快,不會對系統有任何損害,就可以使用上XX卡嘍。^_^
要注意三點:
1.內核源碼必須與當前內核版本完全一致,否則編譯出的模塊是不能用的。
2.注意只make modules(編譯模塊),沒有make modules_install(自動安裝模塊到/lib/modules下)
3.加載新編譯的模塊前必須先運行depmod,否則modprobe找不到它
其實使用當前內核配置文件(/boot/config-[kernel-version]),只加入自己需要的模塊,不做任何其他改,make modules_install應該也不會有問題的。
不過最穩妥的辦法還是手動安裝它,控制權在自己手里更踏實嘛 :-)
OK,轉回qemu上網問題 :)
如果使用udev管理設備(通常2.6.x內核的發行版都已經使用udev),當modprobe tun后就會自動建立/dev/net目錄,并創建出tun設備,做好相關鏈接:
[root@LFS net]#ls -l /dev/net/tunlrwxrwxrwx 1 root root 6 Mar 25 15:35 /dev/net/tun -> ../tun[root@LFS net]#
新聞熱點
疑難解答