提升QEMU的性能


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的文章


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AFL(American Fuzzy Lop)是一款非常受欢迎的模糊测试工具,可以用于发现软件程序中的漏洞和错误。而QEMU是一款开源的虚拟机监控程序,可以模拟不同的系统架构,用于测试和调试。 在进行AFL QEMU测试二进制之前,我们首先需要安装AFL和QEMU这两个工具。安装完成后,我们可以通过以下步骤进行测试: 1. 准备一个待测试的二进制文件,可以是目标软件程序的可执行文件; 2. 使用AFL对二进制文件进行处理,将其变成可模糊测试的目标; 3. 设置AFL和QEMU的参数,如模糊测试的目标文件、输入样本和输出文件等; 4. 运行AFL QEMU,开始进行模糊测试。AFL会根据设置的参数,生成各种变异的输入样本,并将其输入到待测试的二进制文件中; 5. QEMU会模拟执行这些输入样本,并监控目标程序的执行过程。它会在发现异常情况时,如程序崩溃或产生错误输出,记录下这些情况; 6. 模糊测试结束后,AFL会生成一个测试报告,包含了发现的漏洞和错误。我们可以根据这些报告,进行漏洞修复或错误修正。 通过AFL QEMU测试二进制,我们可以有效地发现软件程序中的潜在问题,提高程序的安全性和稳定性。同时,由于AFL和QEMU都是开源工具,可以根据需要进行自定义设置和扩展,以满足不同测试需求。总之,AFL QEMU测试二进制是一种非常有效的方法,可以帮助开发人员提升软件质量和性能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值