2006-02-08

一個優秀的開源模擬器-QEMU

QEMU剛剛發佈的Accelerator帶來了QEMU革命,它不再是一個性能低等的模擬器
使用Accelerator的QEMU速度一下提升了5倍之多。OSNews報道:
This means you could theoretically run Windows (or another OS) on
a Linux machine at near native speeds without buying a commercial emulator.
今天趕緊升了級,果然不同反響,安裝了RHEL4,Win2k,速度很好,也沒有以前版本分出大於2G空間
造成硬盤檢查出錯的問題了,在模擬的linux中進行危險試驗爽多啦。 :)
QEMU安裝也比win4lin/vmware簡單,最主要QEMU是開源的,後兩者都還需要序列號 :(
雖然Accelerator是專利產品,不過也是免費使用的,只是在分發上有一些限制.
總之是不錯的東東嘍,快試試吧!
不會裝?不會用?看看我的安裝,使用心得吧 ^_^
注意:該方法僅適用於2.6.x內核,2.4內核請查看QEMU安裝文檔。
QEMU有兩種模擬方式:

1.完整的系統模擬:這種模式下,QEMU模擬一個完整的系統(比如說,整個PC),包括CPU和周邊的計算機設備。你可以不必重啟就可以同時運行不同的系統來調試系統代碼。

2.User mode模擬(只能在Linux宿主機下使用):這種模式下,QEMU能夠在Linux下運行從一個CPU到另一個CPU的編譯過程。這通常可以被用來運行Wine模擬器或者是交錯式的編譯和調試。

這裡只說模擬整個PC :)

首先先下載,編譯,安裝:
目 前只有CVS版本的QEMU才可以使用Accelerator(加速器),所以需要編譯。而其他版本的QEMU,可以直接下載binary的,在/下解壓 縮即可使用,十分方便。不像win4lin,vmware這些模擬器還需要給內核打補丁。而且還不是開源的,安裝比較麻煩。(至少我沒成功安裝過它們兩 個)
不過目前binary還不能使用加速器,所以速度會慢很多。相信很快binary版本就會加入這個加速器啦。
畢竟加速器剛出來沒幾天,值得期待。。。。 ^_^
OK,言歸正傳,開始來編譯,安裝CVS版本的QEMU,並且加入Accelerator支持:
首先從 http://www.dad-answers.com/qemu/ 下載當前CVS版本的qemu
我的版本是:qemu-snapshot-2005-02-22_23.tar.bz2
再從 http://fabrice.bellard.free.fr/qemu/kqemu-0.6.2-1.tar.gz 下載回來加速器
注意:編譯kqemu需要內核源碼包,將與當前內核版本完全相符的源碼包解壓在/usr/src下
並且確保/lib/modules/`uname -r`/build是正確指向內核源碼目錄的,如下所示:
[root@LFS ~]#ls -l /lib/modules/2.6.10-lvm/build
lrwxrwxrwx 1 root root 21 Feb 22 12:50 /lib/modules/2.6.10-lvm/build -> /usr/src/linux-2.6.10/
如果沒有正確指向內核源碼目錄,使用ln -s 命令建立鏈接:
[root@LFS ~]#ln -s /usr/src/linux-2.6.10 /lib/modules/2.6.10-lvm/build
生成kqemu需要的內核源文件:
[root@LFS ~]#cd /usr/src/linux-2.6.10
/root ------------> /usr/src/linux-2.6.10
[root@LFS linux-2.6.10]#make mrproper
確保內核源碼純淨,保證kqemu編譯出來可用。
[root@LFS linux-2.6.10]#cp /boot/config-2.6.10 .config
將當前內核配置文件複製過來
[root@LFS linux-2.6.10]#make scripts/
生成kqemu需要的東東,沒有這步,編譯就會出錯。

做好後就可以開始編譯QEMU了,使用如下命令編譯,安裝:
[root@LFS ~]#tar jxvf qemu-snapshot-2005-02-22_23.tar.bz2
[root@LFS ~]#tar zxvf kqemu-0.6.2-1.tar.gz -C qemu-snapshot-2005-02-22_23/
使用-C qemu-snapshot-2005-02-22_23/ 將kqemu解壓到qemu的目錄中,讓qemu支持kqemu
[root@LFS ~]#cd qemu-snapshot-2005-02-22_23
/root ------------> /root/qemu-snapshot-2005-02-22_23
[root@LFS qemu-snapshot-2005-02-22_23]#./configure
...........略
KQEMU module configuration: --------->表示加入kqemu支持
kernel sources /lib/modules/2.6.10-lvm/build
kbuild type 2.6
[root@LFS qemu-snapshot-2005-02-22_23]#make
[root@LFS qemu-snapshot-2005-02-22_23]#make install
這樣,qemu就安裝到了/usr/local下,所有可執行文件在/usr/local/bin下,如果想安裝到/usr:
[root@LFS qemu-snapshot-2005-02-22_23]#./configure -->./configure --prefix=/usr

安裝好後,kqemu模塊安裝在: /lib/modules/2.6.10-lvm/misc/kqemu.ko
並且安裝腳本會自動在/dev/下創建一個kqemu設備:
[root@LFS linux-2.6.10]#ls -l /dev/kqemu
crw-rw-rw- 1 root root 250, 0 Feb 24 2005 /dev/kqemu
[root@LFS linux-2.6.10]#
加載kqemu模塊:
[root@LFS linux-2.6.10]#modprobe kqemu
[root@LFS linux-2.6.10]#
使用lsmod命令檢查:
[root@LFS linux-2.6.10]#lsmod |grep kqemu
kqemu 41864 0
[root@LFS linux-2.6.10]#

如果你發現重啟後/dev/kqemu消失了,需要重新創建它:
[root@LFS linux-2.6.10]#mknod /dev/kqemu c 250 0
[root@LFS linux-2.6.10]#chmod 666 /dev/kqemu
你可以將上面兩行命令加入到系統的啟動腳本中,例如/etc/rc.d/rc.local
還有上面那個modprobe kqemu也一併加進去吧(如果你想每次系統啟動自動加載kqemu模塊)
注意的是,加到/etc/rc.d/rc.local時,命令最好寫絕對路徑,例如/sbin/modprobe

OK,現在QEMU,Accelerator都已經安裝完成,可以開始安裝OS啦。
這裡我以安裝RHEL4為例說一下qemu的基本用法,非常簡單!

首先創建磁盤鏡像文件:
[root@LFS distro]#qemu-img create redhat.img 6G
Formating 'redhat.img', fmt=raw, size=6291456 kB
[root@LFS distro]#
這樣就創建好了一個名為redhat.img的6G磁盤鏡像。
注意:創建的磁盤鏡像文件大小最好小於你實際分區剩餘空間。

開始安裝RHEL4:
[root@LFS ~]#qemu -boot d -cdrom /rhel4/EL_disc1.iso -hda redhat.img --enable-audio
-boot d :從光驅引導 a(軟盤引導) c(硬盤引導) d(光驅引導)
-cdrom : ISO文件,也可以直接使用光驅設備(/dev/cdrom)...別忘了插入光盤 :)
-hda : 就是虛擬機裡的硬盤啦,也就是剛才qemu-img創建出的東東。
-enable-audio : 聲卡支持

安裝過程中,要求換盤:
在qemu中按ctrl+alt+2切換到qemu monitor模式 輸入?help可以查看可用命令及使用說明。
(在其他版本的qemu中,運行qemu加載OS後,這個shell就會自動變成qemu monitor模式)
change device filename -- change a removable media
看來它就是用來換盤的了 : change cdrom /rhel4/EL_disc2.iso

monitor下還有幾個常用的命令:
savevm filename 將整個虛擬機當前狀態保存起來
loadvm filename 恢復 (最初我沒用change換盤時,就是先savevm->重新運行qemu->loadvm :( )
sendkey keys 向VM中發送按鍵,例如你想在虛擬機裡切換到另一個終端,按下了ctrl-alt-F2
不幸的是,切換的卻是你的主系統,所以就需要用 sendkey了 sendkey ctrl-alt-f2
還有其他幾個命令,自己看看啦。

經過N久終於裝好了,現在可以啟動試試:
[root@LFS distro]#qemu redhat.img -enable-audio -user-net -m 64
-user-net 相當於VMware的nat,主系統可以上,虛擬機就可以
-m 64 使用64M內存,缺省下使用128M

ctrl-alt-f 全屏
ctrl-alt 主機/虛擬機鼠標切換
qemu還有一些其他參數,輸入qemu可以查看其相關說明。

Good Luck ! ^_^

相關資源:
http://fabrice.bellard.free.fr/qemu/
qemu 主頁 download,doc,faq....etc
http://www.dad-answers.com/qemu/
QEMU CVS Snapshot版本和一些有用的QEMU外圍支持工具
http://www.dad-answers.com/qemu-forum/
qemu論壇

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.