host OS: Fedora 12
下載QEMU源代碼
從QEMU官網下載源代碼http://wiki.qemu.org/Download,目前的最新版本是qemu-0.12.4.tar.gz
還有單獨的加速模塊kqemu-1.4.0pre1.tar.gz
解壓縮
tar zvxf qemu-0.12.4.tar.gz
編譯
編譯QEMU需要用到的工具和庫:gcc libsdl1.2-dev zlib1g-dev libasound2-dev pkg-config libgnutls-dev pciutils-dev
前三個是必須的,后面我沒有遇到提示,編譯時如果遇到某庫沒有安裝,可以用yum search或者yum list來查找相關的軟件包,安裝dev版本的
接下來編譯
./configure make make install
全部編譯花費的時間很長,QEMU會把所有的target都編譯出來,如果只需要模擬特定的平台,可以
./configure TARGET=i386-softmmu
運行QEMU
安裝好QEMU之后可以從官網上下載一個很小的包含linux系統的虛擬磁盤來實驗一下linux-0.2.img.bz2,不過這個linux剪裁的很小實在做不了什么,磁盤鏡像也很小,不能往里面放東西
QEMU現在都是用VNC方式運行的,即QEMU會把自己當做VNC的服務器端,使用QEMU時還需要用VNC的客戶端來連接它。
首先安裝VNC client軟件,可以用yum search vncviewer來搜索下可以的軟件。
在終端中運行QEMU,5900表示在VNC服務器在本機的5900端口
qemu -hda linux-0.2.img.bz2 -vnc ::1:5900
打開另一個終端,輸入
vncview 127.0.0.1:5900
QEMU的GUI界面顯示
安裝guest OS
首先創建一塊虛擬磁盤鏡像,如果是准備安裝Fedora這樣的OS,還是創建10G以上的硬盤吧。用dd命令也可以創建一塊空的硬盤鏡像,但是很慢。
qemu-img create -f qcow2 disk.img 10G
Fedora 12的系統安裝ISO鏡像文件一份,可以從fedora官網下載,開始安裝操作系統,-m 512表示指定內存大小512M,不可缺少,不然fedora12啟動后畫面顯示出問題
qemu -hda disk.img -m 512 -cdrom Fedora.XXXX.iso -vnc ::1:5900
在另一個終端里輸入:
vncviewer 127.0.0.1:5900
然后可以在QEMU窗口中安裝fedora,一切步驟同裸機安裝,就是很慢很慢
啟動guest OS,目前發現的問題是對鍵盤的支持不好,鍵位錯亂了
qemu -hda disk.img -m 512 -vnc ::1:5900
guest與host文件交互問題,解決方法很多,可以通過網絡傳輸,QEMU還支持把host disk掛載使用,我是把所需要的文件制作成iso鏡像,然后在啟動qemu時用- cdrom來指定這個文件,guest OS啟動再從CDROM設備中把文件copy出來,這個方法的缺點是不能實時的交互文件,制作ISO文件,在linux下:
mkisofs XXX YYY.iso
編譯內核
下載linux內核源代碼: 解壓縮源代碼,放在/usr/src/kernels
gzip -d linux-2.6.32.tar.gz tar -xvf linux-2.6.32.tar mv -rf linux-2.6.32 /usr/src/kernels
下載Tuxonice補丁程序,注意對應的版本號:http://www.tuxonice.net/ 打補丁
cd /usr/src/kernels/linux-2.6.32 (the root directory of your tree) bzcat /path/to/patch | patch -p1
config,把電源管理那部分的功能都enable,dubug功能enalbe
make menuconfig
編譯
make make module_install
制作內核鏡像
make bzImage
制作初始化鏡像
mkinitrd
make install可以自動完成工作使得下次系統從這個內核啟動,手工做的話把內核鏡像文件,initrd文件和system.map文件一起復制到/boot/下面,並修改/boot/grub/menu.lst
更換guest OS內核
將編譯好的三個文件制作成ISO文件,並通過qemu的-cdrom指定,然后在guest OS中復制內核到boot文件夾下,修改menu.lst
linux下制作iso鏡像文件的命令,源文件放在/dev/cdrom目錄下:
mkisofs -r -o myiso.iso /dev/cdrom
從Tuxonice官網http://www.tuxonice.net/downloads/ 下載Hibernate腳本並安裝,可以通過修改/etc/hibernate/tuxonice.conf文件中的power method項使得hibernate命令支持不同級別的休眠
從實驗中發現,suspend2disk使得QEMU的窗口也消失,必須重新啟動QEMU,而suspen2mem則可以通過晃動鼠標等動作喚醒。
在LINUX編譯安裝QEMU
1.系統環境及版本
Linux發行版本:ubuntu 8.04
安裝QEMU-0.9.1
2.准備工作
在QEMU主頁下載源代碼,並解壓到/tmp目錄下(假設源代碼保存在~/Setup)。
$ tar zvxf ~/Setup/qemu-0.9.1.tar.gz -C /tmp建立編譯環境:
$ sudo apt-get install build-essential
編譯安裝QEMU,最重要的工具就是gcc。在大多數主機,特別是x86架構的PC機上,gcc 4.x是不被QEMU所支持的。build-essential 中包含的是 gcc 4.x,為了正確編譯,需要低版本的gcc 3.x(gcc32 或 gcc34),低版本安裝后,QEMU的配置腳本(configure script)在配置時會自動搜尋到。我安裝的是gcc 3.4:
$ sudo apt-get install gcc-3.4 cpp-3.4安裝QEMU需要SDL開發庫的支持,可以在其下載頁面上下載源代碼編譯安裝,但是推薦在apt中安裝,不容易出問題:
$ sudo apt-get install libsdl1.2-dev另外,還需要安裝zlib和ESD:
sudo apt-get install zlib1g-dev zlib1g-dbg libesd0-dev
3.編譯安裝QEMU
現在可以開始安裝了:
$ cd /tmp/qemu-0.9.1$ ./configure --prefix=/usr/local/qemu不加上prefix選項也是可以的。這個選項的作用是指定安裝目錄。如果不指定prefix,則可執行文件默認放在/usr/local/bin,庫文件默認放在/usr/local/lib,配置文件默認放在/usr/local/etc。由於QEMU不能用make uninstall的方法卸載,指定安裝目錄可以便於卸載(其實就是刪掉整個安裝目錄)。
然后
$ make$ sudo make installmake比較費時,請耐心等待。
至此,QEMU安裝完成。
4.設置環境變量
如果./configure時使用了prefix選項,還需要設置環境變量PATH,否則bash是找不到qemu的命令的(除非你輸入該命令的具體路徑,如/usr/local/qemu/bin/qemu)。編輯/etc/profile
$ sudo gedit /etc/profile在文件中添加
PATH="$PATH:/usr/local/qemu/bin"export PATH保存,退出,並用Ctrl+Alt+Backspace重新啟動X Window。
卸載qemu 1.4.1
由於通過源碼安裝的qemu沒有辦法通過系統工具進行卸載,也沒有辦法通過make uninstall方法卸載,所以只能通過刪除文件的方式進行卸載。
qemu可執行文件默認放在/usr/local/bin,庫文件默認放在/usr/local/libexec,配置文件默認放在/usr/local/etc,共享文件默認放在/usr/local/etc/share。要卸載源碼編譯的qemu,需要到這四個目錄中找出相關的文件然后刪除掉。
如果configure時沒有通過--target-list=指定編譯的目標機體系結構,則/usr/local/bin中的以qemu開頭的文件需要刪除,總共51個。
/usr/local/libexec中只有一個文件:qemu-bridge-helper,直接刪除即可。
/usr/local/etc比較簡單,只有一個qemu目錄,其下有一個文件target-x86_64.conf,直接將qemu目錄刪除即可。
同/usr/local/etc一樣,qemu相關的共享文件都放在/usr/local/etc/share目錄下的qemu子目錄中,直接將該子目錄刪除即可。
error while loading shared libraries: cannot restore segment prot after reloc: Permission denied錯誤原因在於selinux禁用了訪問此共享庫
解決辦法: 關閉selinux
1、編輯/etc/selinux/config文件,找到SELINUX=enforcing,改為SELINUX=disabled
2、編輯/etc/sysconfig/selinux文件,找到SELINUX=enforcing,改為SELINUX=disabled
3、重啟電腦