注意:该方法仅适用于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论坛