提升QEMU的性能

来源:互联网 发布:网络优化工程师证书 编辑:程序博客网 时间:2024/05/17 06:36


Windows下编译带Kqemu加速模块的QEMU

2011-03-09 21:16前提:

官方的版本不带有kqemu加速模块(Kqemu使用的不是GPL协议,要分发必须得到作者授权),

导致安装ISO时时间漫长,据称使用kqemu能够使QEMU运行效率提升5倍,

所以萌生了自己编译kqemu的念头。


加速模块官方说明:

This module enables QEMU to run most ofthe target application code directly

on the host processor to achieve nearnative performance.

此模块能够使QEMU基于物理机处理器运行绝大部分目标应用程序代码以获得接近本地运行的效率。

这也正好说明了QEMU是真正的CPU模拟器,这个真正的CPU模拟器模拟了一个不同于物理主机的、并不存在的CPU

我猜想加速模块可以屏蔽QEMU模拟CPU的功能,使之仅作为虚拟机(virtualizer)使用,而不是emulator


编译准备:

下载如下软件包

MSYS-1.0.10.exe

msysDTK-1.0.1.exe

MinGW-3.1.0-1.exe

SDL-1.2.9.tar.gz

zlib-1.2.2.tar.gz

directx-devel.tar.gz

kqemu二进制安装包

也可以使用Cygwin

CygwinMinGW是用来将Linux下的软件移植到Win下使用的编译器,Cygwin更加强大,

包括对LinuxAPI的支持还有一套提供Linux界面的工具;

MinGW:Minimalist GNU forWindows顾名思义是Windows的小型GNU系统)

本文以MinGW为例(Cygwin使用方法类似,都是在unixshell下敲入相同命令)


编译步骤:

1:安装MSYS-1.0.10.exec:\msys,安装完毕后,会弹出系统提示框,这里输入n跳过;

2:安装msysDTK-1.0.1.exeMSYS-1.0.10.exe的安装目录c:\msys

3:在c:\msys下建立名为mingw的子目录,将MinGW-3.1.0-1.exe安装到c:\msys\mingw

4:将SDL-1.2.9.tar.gzSDL的中文介绍见http://www.libsdl.org/intro.cn/toc.html)、

zlib-1.2.2.tar.gz解压到C:\msys\home\usrname\,(usrname为你的用户名),

解压directx-devel.tar.gzC:\msys\mingw

5:运行msys.bat,进入shell

进入刚才解压的SDL源码目录

代码:cdsdl-1.2.9(一定要编译,否则QEMU没有图象输出)

依次输入:

代码:./configure--prefix=/mingwmake make install6:按照上面的编译过程再编译zlib

代码:cdzlib-1.2.2 ./configure --prefix=/mingwmake makeinstall这步用来编译zlib,并安装zlib头文件到正确路径


7:从CVS下载QEMU的源码

进入home目录也就是到C:\msys\home\usrname\目录

代码:cd/home/usrname输入

代码:exportCVS_RSH="ssh"

代码:cvs-z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/qemu coqemu回答yes建立SSH连接并且下载




8:下载完成后,将kqemu二进制安装包解压到qemu源码目录,这样编译qemu后才能支持kqemu加速模块,称之为qemubuilt-in with kqemu

shell进入qemu目录

输入

代码:

./configure --target-list=i386-softmmu--static--enable-adlibtarget-list=i386-softmmu表示只生成32exe可执行文件,如果要生成x64qemuexe可执行文件可以把参数--target-list=i386-softmmu去掉

接下来会看到屏幕输出如下内容


如图:可以看到QEMU能够支持kqemu

接下来可以编译QEMU

shell提示符下输入

代码:

make,这里有可能会提示找不到texi2htmlpod2man命令,texi2htmlpod2man是用来编译生成帮助文档的,可以建立两个空白文件取名为texi2htmlpod2man。帮助文档可以在官方网站找到。

再次

代码:

make,完成之后qemu-img.exe/home/usrname/qemu目录,qemu.exe/home/usrname/qemu/i386-softmmu目录,这样编译生成的文件体积太大了(包括sdl.dll),运行strip命令来减小它们的体积

代码:

strip i386-softmmu/qemu stripqemu-img.exe9:最后将

代码:

home/usrname/qemu/i386-softmmu/qemu.exehome/usrname/qemu/qemu-img.exe home/usrname/qemu/pc-bios/bios.binhome/usrname/qemu/pc-bios/ppc_rom.binhome/usrname/qemu/pc-bios/vgabios.binhome/usrname/qemu/pc-bios/vgabios-cirrus.binhome/usrname/qemu/kqemu/kqemu.infhome/usrname/qemu/kqemu/kqemu.syshome/usrname/SDL-1.2.9/src/.libs/sdl.dll拷贝出来

这样编译生成的qemu就是支持kqemu的了

要使QEMU使用kqemu加速模块,必须在运行qemu前,首先要安装kqemu驱动,鼠标右击kqemu.inf安装之,在命令行输入

代码:

net start kqemu启动kqemu服务

启动qemu后在控制台(CTRL+ALT+2)下输入infokqemu能够查看QEMUkqemu的支持情况


小提示:

如果编译出错,不需要重新下载源码只需

代码:

make distclean即可清除编译生成的文件。

注:本文参考了qemu官方论坛comike的文章


原创粉丝点击