if [ -n "$1" ];then /sbin/ip link set $1 up sleep 0.5s /usr/sbin/brctl addif $switch $1 exit 0 else echo "Error: no interface specified" exit 1 fi 使用橋接網卡可以使用橋接網卡啟動qemu-kvm,並使用GTES10.5.5的兩個文件通過NFS安裝系統: # qemu-kvm -m 512 -hda turbo-10.5.5-rc2.img -kernel vmlinuz \ -initrd initrd.img -net nic -net tap,script=/etc/init.d/qemu-ifup --daemonize 也可以使用iso安裝,這樣對於多張iso發行版的linux需要在qemu的控制台換盤: # qemu-kvm -m 512 -hda turbo-10.5.5-rc2.img -cdrom 你的iso路徑 \ -net nic -net tap,script=/etc/init.d/qemu-ifup -boot d --daemonize 進入qemu的控制台,在滑鼠聚焦到qemu界面時候,按住 Ctrl+Alt+2 進入控制台: (qemu) change cdrom 你的另外一張iso 上面命令如果提示:"device not found"。可能是設備映射出錯,可以這樣: (qemu) info block ... (qemu) change ide1-cd0 iso文件 QEMU常見使用使用vnc# qemu-kvm -m 512 -hda xp.img -net nic,macaddr=00:00:11:33:02:02 \ -net tap,ifname=tap2,script=/etc/init.d/qemu-ifup \ -localtime -vnc 172.16.70.30:2 --daemonize 上面讓kvm虛擬機在後台運行,並啟動vnc伺服器,這樣我們可以用vnc客戶端鏈接172.16.70.30:5092這個地址。 QEMU選項:一般選項-M machine選擇模擬的機器(我們可以輸入-M?提到一個模擬的機器列表)-fda file -fdb file使用file作為軟盤鏡像.我們也可以通過將/dev/fd0作為文件名來使用主機軟盤.-hda file -hdb file -hdc file -hdd file使用file作為硬碟0,1,2,3的鏡像.-cdrom file使用文件作為CD-ROM鏡像(但是我們不可以同時使用'-hdc'和'-cdrom').我們可以通過使用'/dev/cdrom'作為文件名來使用主機的CD-ROM.-boot 由軟盤(a),硬碟(c)或是CD-ROM(d).在默認的情況下由硬碟啟動.-snapshot寫入臨時文件而不是寫入磁碟鏡像文件.在這樣的情況下,並沒有寫回我們所使用的磁碟鏡像文件.然而我們卻可以通過按下C-a s來強制寫回磁碟鏡像文件.-m megs設置虛擬內存尺寸為megs M位元組.在默認的情況下為128M.-smp n模擬一個有n個CPU的SMP系統.為PC機為目標,最多可以支持255個CPU.-nographic在通常情況下,Qemu使用SDL來顯示VGA輸出.使用這個選項,我們可以禁止所有的圖形輸出,這樣Qemu只是一個簡單的命令行程序.模擬的串口將會重定向到命令行.所以,我們仍然可以在Qemu平台上使用串口命令來調試Linux內核.-k language使用鍵盤布局語言(例如fr為法語).這個選項只有在不易得到PC鍵盤的情況下使用.我們在PC/Linux或是PC/Windows主機不需要使用這個選項.默認的為en-us,可用的布局如下:ar de-ch es fo fr-ca hu ja mk no pt-br sv da en-gb et fr fr-ch is lt nl pl ru th de en-us fi fr-be hr it lv nl-be pt sl tr -audio-help這個選項將會顯示聲音子系統的幫助:驅動列表以及可調用的參數.-soundhw card1,card2 .... or -soundhw all允許聲音並選擇聲音硬體.使用?可以列出所有可用的聲音硬體qemu -soundhw sb16,adlib hda qemu -soundhw es1370 hda qemu -soundhw all hda qemu -soundhw ? -localtime設置時鐘為本地時間(默認為UTC時間).如果在MS-DOS或是Windows上這個選項則需要正確的日期.-full-screen以全屏方式啟動.-pidfile file在file文件中存許Qemu的進程PID.如果我們是由腳本啟動的,這個選項是相當有用的.-win2k-hack當安裝Windows 2000時可以使用這個選項來避免磁碟錯誤.在安裝上Windows 2000系統,我們就不再需要這個選項(這個選項降低IDE的傳輸速度).USB選項-usb允許USB驅動(很快就將成為默認的選項)-usbdevice devname添加USB設備名.我們可以查看監視器命令usb_add來得到更為詳細的信息.網路選項-net nic[,vlan=n][,macaddr=addr]創建一個新的網卡並與VLAN n(在默認的情況下n=0)進行連接.在PC機上,NIC當前為NE2000.作為可選項的項目,MAC地址可以進行改變.如果沒有指定-net選項,則會創建一個單一的NIC.-net user[,vlan=n]使用用戶模式網路堆棧,這樣就不需要管理員許可權來運行.如果沒有指定-net選項,這將是默認的情況.-net tap[,vlan=n][,fd=h][,ifname=name][,script=file]將TAP網路介面name與VLAN n進行連接,並使用網路配置腳本file進行配置.默認的網路配置腳本為/etc/qemu-ifup.如果沒有指定name,OS將會自動指定一個.fd=h可以用來指定一個已經打開的TAP主機介面的句柄.例如:qemu linux.img -net nic -net tap
下面的是一個更為複雜的例子(兩個NIC,每一個連接到一個TAP設備):
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \ -net nic,vlan=1 -net tap,vlan=1,ifname=tap1 -net socket[,vlan=n][,fd=h][,listen=:port][,connect=host:port]使用TCP socket 將VLAN n與遠程的另一個Qemu虛擬機的VLAN進行連接.如果指定了listen,Qemu將在port埠監聽連入請求(host是可選的), connect可以用來使用listen選項與另一個Qemu實例進行連接.fd=h指定了一個已經打開的TCP socket.例如:# launch a first QEMU instance qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234 # connect the VLAN 0 of this instance to the VLAN 0 of the first instance qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,connect=127.0.0.1:1234 -net socket[,vlan=n][,fd=h][,mcast=maddr:port]創建一個VLAN n,並使用UDP 多址通信套掊口與其他的QEMU虛擬機進行共享,尤其是對於每一個使用多址通信地址和埠的QEMU使用同一個匯流排. 在這裡我們要注意以下幾點: •幾個QEMU可以運行在不同的主機上但卻使用同一個匯流排(在這裡假設為這些主機設置了正確的多址通信) •mcast支持是與用戶模式Linux相兼容的. •使用fd=h指定一個已經打開的UDP 多址通信套介面.例如: # launch one QEMU instance qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=230.0.0.1:1234 # launch another QEMU instance on same "bus" qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,mcast=230.0.0.1:1234 # launch yet another QEMU instance on same "bus" qemu linux.img -net nic,macaddr=52:54:00:12:34:58 -net socket,mcast=230.0.0.1:1234 下面的為用戶模式Linux的例子: # launch QEMU instance (note mcast address selected is UML's default) qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=239.192.168.1:1102 # launch UML /path/to/linux ubd0=/path/to/root_fs eth0=mcast -net none表明沒有網路設備需要進行配置.如果沒有指定-net選項,則會用來覆蓋活躍的默認配置.-tftp prefix當使用用戶模式網路堆棧,激活一個內置的TFTP伺服器.所有的以prefix開始的文件將會使用一個TFTP客戶端從主機下載到本地.在本地的TFTP客戶端必須以二進位模式進行配置(使用Unix的TFTP客戶端的bin命令).在客戶機上的主機IP地址如通常的10.0.2.2.-smb dir -redir :host-port::guest-port當使用用戶模式網格棧,將連接到主機埠host-port的TCP或是UDP連接重定向到客戶機埠guest-port上。如果沒有指定客戶機埠,他的值為10.0.2.15(由內建的DHCP伺服器指定默認地址)。例如:要重定向從screen 1到客戶機screen 0的X11連接,我們可以使用下面的方法:# on the host qemu -redir tcp:6001::6000 [...] # this host xterm should open in the guest X11 server xterm -display :1 To redirect telnet connections from host port 5555 to telnet port on the guest, use the following:
# on the host qemu -redir tcp:5555::23 [...] telnet localhost 5555