天天看點

KVM虛拟機和QEMU

【測試環境 10.04】

先建立 br0 裝置:

以後要添加網卡到這個橋接接口隻需:

我的網絡配置檔案 /etc/network/interfaces 内容如下:

主要思路:把 br0 接口配置成和以前正常工作的網口一樣(我這裡是 eth0), 然後禁用以前網口的配置(我把 eth0 的配置注釋掉了),最後在 br0 配置裡面 加上一句 "bridge_ports eth0" 。

說明: 如果是靜态位址,可參照相應設定更改。

配置好虛拟機,怎麼使用就因人而異了,我的使用方式是,背景執行,使用 vnc 遠端連接配接虛拟機。是以我用下面的小腳本啟動 uqkvm (如果你不了解 vnc ,或 者不太明白 shell 腳本,可能下面的說明對你無用。由于精力和能力有限,下面 僅給出腳本,無法一一闡述明了。):

其中用到的 /etc/init.d/qemu-ifup 檔案如下:

uqkvm 腳本使用方法如下:

如果僅僅需要啟動系統:

現在檢視橋接裝置情況:

可見 tap2 和 eth0 都在 br0 上。

bridge-utils是網卡橋接工具,

配置 <code>/etc/sysconfig/network-scripts</code> 下面的網絡腳本

增加一個橋接網絡接口,并把剛才配置的eth0添加到橋接口

使用一個下面的腳本:

可以使用橋接網卡啟動qemu-kvm,并使用GTES10.5.5的兩個檔案通過 NFS安裝系統:

也可以使用iso安裝,這樣對于多張iso發行版的linux需要在qemu的控制 台換盤:

進入qemu的控制台,在滑鼠聚焦到qemu界面時候,按住 Ctrl+Alt+2 進 入控制台:

上面指令如果提示:"device not found"。可能是裝置映射出錯,可以這樣:

上面讓kvm虛拟機在背景運作,并啟動vnc伺服器,這樣我們可以用vnc客 戶端連結172.16.70.30:5092這個位址。

<dl></dl>

<dt>-M machine</dt>

<dd>選擇模拟的機器(我們可以輸入-M?提到一個模拟的機器清單)</dd>

<dt>-fda file</dt>

<dd></dd>

<dt>-fdb file</dt>

<dd>使用file作為軟碟鏡像.我們也可以通過将/dev/fd0作為檔案名來使用主機軟碟.</dd>

<dt>-hda file</dt>

<dt>-hdb file</dt>

<dt>-hdc file</dt>

<dt>-hdd file</dt>

<dd>使用file作為硬碟0,1,2,3的鏡像.</dd>

<dt>-cdrom file</dt>

<dd>使用檔案作為CD-ROM鏡像(但是我們不可以同時使 用'-hdc'和'-cdrom').我們可以通過使用'/dev/cdrom'作為檔案名來 使用主機的CD-ROM.</dd>

<dt>-boot [a|c|d]</dt>

<dd>由軟碟(a),硬碟(c)或是CD-ROM(d).在預設的情況下由硬碟啟動.</dd>

<dt>-snapshot</dt>

<dd>寫入臨時檔案而不是寫入磁盤鏡像檔案.在這樣的情況下,并沒有寫回 我們所使用的磁盤鏡像檔案.然而我們卻可以通過按下C-a s來強制寫 回磁盤鏡像檔案.</dd>

<dt>-m megs</dt>

<dd>設定虛拟記憶體尺寸為megs M位元組.在預設的情況下為128M.</dd>

<dt>-smp n</dt>

<dd>模拟一個有n個CPU的SMP系統.為PC機為目标,最多可以支援255個CPU.</dd>

<dt>-nographic</dt>

<dd>在通常情況下,Qemu使用SDL來顯示VGA輸出.使用這個選項,我們可以 禁止所有的圖形輸出,這樣Qemu隻是一個簡單的指令行程式.模拟的串 口将會重定向到指令行.是以,我們仍然可以在Qemu平台上使用序列槽命 令來調試Linux核心.</dd>

<dt>-k language</dt>

<dd>使用鍵盤布局語言(例如fr為法語).這個選項隻有在不易得到PC鍵盤 的情況下使用.我們在PC/Linux或是PC/Windows主機不需要使用這個 選項.預設的為en-us,可用的布局如下:</dd>

<dt>-audio-help</dt>

<dd>這個選項将會顯示聲音子系統的幫助:驅動清單以及可調用的參數.</dd>

<dt>-soundhw card1,card2 .... or -soundhw all</dt>

<dd>允許聲音并選擇聲音硬體.使用?可以列出所有可用的聲音硬體</dd>

<dt>-localtime</dt>

<dd>設定時鐘為本地時間(預設為UTC時間).如果在MS-DOS或是Windows上 這個選項則需要正确的日期.</dd>

<dt>-full-screen</dt>

<dd>以全屏方式啟動.</dd>

<dt>-pidfile file</dt>

<dd>在file檔案中存許Qemu的程序PID.如果我們是由腳本啟動的,這個選 項是相當有用的.</dd>

<dt>-win2k-hack</dt>

<dd>當安裝Windows 2000時可以使用這個選項來避免磁盤錯誤.在安裝上 Windows 2000系統,我們就不再需要這個選項(這個選項降低IDE的傳 輸速度).</dd>

<dt>-usb</dt>

<dd>允許USB驅動(很快就将成為預設的選項)</dd>

<dt>-usbdevice devname</dt>

<dd>添加USB裝置名.我們可以檢視螢幕指令usb_add來得到更為詳細的資訊.</dd>

<dt>-net nic[,vlan=n][,macaddr=addr]</dt>

<dd>建立一個新的網卡并與VLAN n(在預設的情況下n=0)進行連接配接.在PC機 上,NIC目前為NE2000.作為可選項的項目,MAC位址可以進行改變.如果 沒有指定-net選項,則會建立一個單一的NIC.</dd>

<dt>-net user[,vlan=n]</dt>

<dd>使用使用者模式網絡堆棧,這樣就不需要管理者權限來運作.如果沒有指 定-net選項,這将是預設的情況.</dd>

<dt>-net tap[,vlan=n][,fd=h][,ifname=name][,script=file]</dt>

<dd>将TAP網絡接口name與VLAN n進行連接配接,并使用網絡配置腳本file進行 配置.預設的網絡配置腳本為/etc/qemu-ifup.如果沒有指定name,OS 将會自動指定一個.fd=h可以用來指定一個已經打開的TAP主機接口的 句柄.例如:</dd>

下面的是一個更為複雜的例子(兩個NIC,每一個連接配接到一個TAP裝置):

<dt>-net socket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port]</dt>

<dd>使用TCP socket 将VLAN n與遠端的另一個Qemu虛拟機的VLAN進行連 接.如果指定了listen,Qemu将在port端口監聽連入請求(host是可選 的), connect可以用來使用listen選項與另一個Qemu執行個體進行連 接.fd=h指定了一個已經打開的TCP socket.例如:</dd>

<dt>-net socket[,vlan=n][,fd=h][,mcast=maddr:port]</dt>

<dd>建立一個VLAN n,并使用UDP 多址通信套掊口與其他的QEMU虛拟機進 行共享,尤其是對于每一個使用多址通信位址和端口的QEMU使用同一 個總線. 在這裡我們要注意以下幾點:</dd>

幾個QEMU可以運作在不同的主機上但卻使用同一個總線(在這裡假設 為這些主機設定了正确的多址通信)

mcast支援是與使用者模式Linux相相容的.

使用fd=h指定一個已經打開的UDP 多址通信套接口.

例如:

下面的為使用者模式Linux的例子:

<dt>-net none</dt>

<dd>表明沒有網絡裝置需要進行配置.如果沒有指定-net選項,則會用來覆 蓋活躍的預設配置.</dd>

<dt>-tftp prefix</dt>

<dd>當使用使用者模式網絡堆棧,激活一個内置的TFTP伺服器.所有的以 prefix開始的檔案将會使用一個TFTP用戶端從主機下載下傳到本地.在本 地的TFTP用戶端必須以二進制模式進行配置(使用Unix的TFTP用戶端 的bin指令).在客戶機上的主機IP位址如通常的10.0.2.2.</dd>

<dt>-smb dir</dt>

<dt>-redir [tcp|udp]:host-port:[guest-host]:guest-port</dt>

<dd>當使用使用者模式網格棧,将連接配接到主機端口host-port的TCP或是UDP 連接配接重定向到客戶機端口guest-port上。如果沒有指定客戶機端口, 他的值為10.0.2.15(由内建的DHCP伺服器指定預設位址)。例如: 要重定向從screen 1到客戶機screen 0的X11連接配接,我們可以使用下 面的方法:</dd>

然後當我們在主機telnet localhost 5555上使用時,我們連接配接到了 客戶機的telnet伺服器上。
當我們使用這些選項時,我們可以使用一個指定的核心,而沒有将他 安裝在磁盤鏡像中。這對于簡單的測試各種核心是相當有用的。

<dt>`-kernel bzImage'</dt>

<dd>使用bzImage作為核心映像。</dd>

<dt>`-append cmdline'</dt>

<dd>使用cmdline作為核心的指令行。</dd>

<dt>`-initrd file'</dt>

<dd>使用file作為初始的ram磁盤。</dd>

<dt>`-serial dev'</dt>

<dd>重定向虛拟串到主機的裝置dev。可用的裝置如下:</dd>

<dt>vc</dt>

<dd>虛拟終端</dd>

<dt>pty</dt>

<dd>(Linux)僞TTY(自動配置設定一個新的TTY)</dd>

<dt>null</dt>

<dd>空裝置</dd>

<dt>/dev/XXX"</dt>

<dd>(Linux)使用主機的tty。例如,'/dev/ttyS0'。主機的序列槽參數通過模拟進行設定。</dd>

<dt>/dev/parportN</dt>

<dd>(Linux)使用主機的并口N。目前隻可以使用SPP的并口特征。</dd>

<dt>file:filename</dt>

<dd>将輸出寫入到檔案filename中。沒有字元可讀。</dd>

<dt>stdio</dt>

<dd>(Unix)标準輸入/輸出</dd>

<dt>pipe:filename</dt>

<dd>(Unix)有名管道filename</dd>

在圖形模式下的預設裝置為vc,而在非圖形模式下為stdio.這個選項 可以被多次使用,最多可以模拟4個序列槽。

<dt>'-parallel dev'</dt>

重定向虛拟并口到主機的裝置dev(與序列槽相同的裝置)。在Linux主 機上,`/dev/parportN'可以被用來使用與相應的并口相連的硬體設 備。這個選項可以使用多次,最多可以模拟3個并口。

<dt>`-monitor dev'</dt>

重定向臨視器到主機的裝置dev(與序列槽相同的裝置)。在圖形模式 下的預設裝置為vc,而在非圖形模式下為stdio。

<dt>'-s'</dt>

<dd>等待gdb連接配接到端口1234.</dd>

<dt>`-p port'</dt>

<dd>改變gdb連接配接端口。</dd>

<dt>`-S'</dt>

<dd>在啟動時并不啟動CPU(我們必須在螢幕中輸入'c')</dd>

<dt>'-d'</dt>

<dd>輸出日志到/tmp/qemu.log</dd>

<dt>`-hdachs c,h,s,[,t]'</dt>

<dd>強制硬碟0的實體參數(1 &lt;= c &lt;= 16383, 1 &lt;= h &lt;= 16, 1 &lt;= s &lt;=63),并且可以選擇強制BIOS的轉換模式(t=none, lba or auto).通 常QEMU可以檢測這些參數.這個選項對于老的MS-DOS磁盤映像是相當 有用的.</dd>

<dt>`-std-vga'</dt>

<dd>模拟一個Bochs VBE擴充的标準VGA顯示卡(預設情況下為Cirrus Logic GD5446 PCI VGA)</dd>

<dt>`-loadvm file'</dt>

<dd>從一個儲存狀态啟動.</dd>

在圖形模拟時,我們可以使用下面的這些組合鍵:

<dt>Ctrl-Alt-f</dt>

<dd>全屏</dd>

<dt>Ctrl-Alt-n</dt>

<dd>切換虛拟終端'n'.标準的終端映射如下:</dd>

n=1 : 目标系統顯示

n=2 : 臨視器

n=3 : 序列槽<dl></dl>

<dt>Ctrl-Alt</dt>

<dd>抓取滑鼠和鍵盤</dd>

在虛拟控制台中,我們可以使用Ctrl-Up, Ctrl-Down, Ctrl-PageUp 和 Ctrl-PageDown在螢幕中進行移動.

在模拟時,如果我們使用`-nographic'選項,我們可以使用Ctrl-a h來得到終端指令:

<dt>Ctrl-a h</dt>

<dd>列印幫助資訊</dd>

<dt>Ctrl-a x</dt>

<dd>退出模拟</dd>

<dt>Ctrl-a s</dt>

<dd>将磁盤資訊儲存入檔案(如果為-snapshot)</dd>

<dt>Ctrl-a b</dt>

<dd>發出中斷</dd>

<dt>Ctrl-a c</dt>

<dd>在控制台與螢幕進行切換</dd>

<dt>Ctrl-a Ctrl-a</dt>

<dd>發送Ctrl-a</dd>

從0.6.1起,QEMU支援多種磁盤映像格式,包括增長的磁盤映像,壓縮與加 密的磁盤映像.

我們可以用下面的指令來建立一個磁盤映像:

這裡myimage.img是磁盤映像的檔案名,而mysize是以K表示的尺寸.我們 可以使用M字首來使用M表示尺寸或是G作為字首使用G表示尺寸.

qemu-img選項

可以支援下面的一些指令:

指令參數

<dt>filename</dt>

<dd>磁盤映像檔案名.</dd>

<dt>base_image</dt>

<dd>隻讀的磁盤映像,可以作為拷貝到寫映像的基礎.寫映像 上的拷貝隻存儲修改的資料.</dd>

<dt>fmt</dt>

<dd>磁盤映像格式.在大多數情況下可以自動檢測.可以支援下面的格式:</dd>

raw

raw 磁盤格式(預設).這種格式有簡單并且易于移植到其他模拟器的 優點.如果我們的檔案系統支援holes(例如在Linux上的ext2或是 ext3),然後隻有寫入的部分保持空白.使用qemu-img info來得到映 像使用的實際的大小或是在Unix/Linux上使用 ls -ls.

qcow

QEMU映像格式.最通用的格式.使用他可以獲得較小的映像(如果我們 的檔案系統不支援holes,例如在Windows上,這是相當有用的),可以 選用AES加密或是基于zlib的壓縮.

cow

在寫映像格式上的使用者模式的Linux拷貝.在QEMU中作為增長的映像 格式使用.這個選項隻是為了與以前版本的相容,并不能在Win32上使 用.

vmdk

VMware 3 或是 4 相容的映像格式.

cloop

Linux壓縮的循環映像,重用直接壓縮的CD-ROM映像.

size

以K表示的磁盤映像的尺寸.同時可以支援M或是G作為字首.

output_filename

目的磁盤映像檔案名

output_fmt

目标格式

-c

表明目标映像必須是壓縮的(隻是qcow格式)

-e

表明目标映像必須是加密的(隻是qcow格式)

本文轉自 tiger506 51CTO部落格,原文連結:http://blog.51cto.com/tiger506/362256,如需轉載請自行聯系原作者

繼續閱讀