热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Windows下编译Qemu虚拟机的方法

编译准备:下载如下软件包MSYS-1.0.10.exe(http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download)msysDTK-1.0.1.exe(http://prdownloads.sf.net/mingw/msysDTK-1.0.1.exe?downloa
编译准备:
下载如下软件包
MSYS-1.0.10.exe (http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download)
msysDTK-1.0.1.exe (http://prdownloads.sf.net/mingw/msysDTK-1.0.1.exe?download)
MinGW-3.1.0-1.exe (http://prdownloads.sourceforge.net/mingw/MinGW-3.1.0-1.exe?download)
SDL-1.2.9.tar.gz (http://www.libsdl.org/release/SDL-1.2.9.tar.gz)
zlib-1.2.2.tar.gz (http://prdownloads.sourceforge.net/libpng/zlib-1.2.2.tar.gz?download)
directx-devel.tar.gz (http://www.libsdl.org/extras/win32/common)
kqemu二进制安装包 (http://fabrice.bellard.free.fr/qemu/kqemu-0.7.2.tar.gz)
也可以使用Cygwin (http://www.cygwin.com/)
(Cygwin和MinGW是用来将Linux下的软件移植到Win下使用的编译器,Cygwin更加强大,包括对Linux下API的支持还有一套提供Linux界面的工具;MinGW:Minimalist GNU for Windows顾名思义是Windows的小型GNU系统)
本文以MinGW为例(Cygwin使用方法类似,都是在unix shell下敲入相同命令)

编译步骤:
1:安装MSYS-1.0.10.exe到c:/msys,安装完毕后,会弹出系统提示框,这里输入n跳过;
2:安装msysDTK-1.0.1.exe到MSYS-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.gz(SDL的中文介绍见http://www.libsdl.org/intro.cn/toc.html)、zlib-1.2.2.tar.gz解压到C:/msys/home/usrname/,(usrname为你的用户名),解压directx-devel.tar.gz到C:/msys/mingw
5:运行msys.bat,进入shell。
进入刚才解压的SDL源码目录cd sdl-1.2.9(一定要编译,否则QEMU没有图象输出)
依次输入:

./configure --prefix=/mingw

make

make install

6:按照上面的编译过程再编译zlib

cd zlib-1.2.2
./configure --prefix=/mingw
make
make install

这步用来编译zlib,并安装zlib头文件到正确路径

7:从CVS下载QEMU的源码
进入home目录也就是到C:/msys/home/usrname/目录cd /home/usrname
输入export CVS_RSH="ssh"
cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/qemu co qemu
回答yes建立SSH连接并且下载

官方的版本不带有kqemu加速模块(Kqemu使用的不是GPL协议,要分发必须得到作者授权),导致安装ISO时时间漫长,据称使用kqemu能够使QEMU运行效率提升5倍,所以萌生了自己编译kqemu的念头。

加速模块官方说明:This module enables QEMU to run most of the target application code directly on the host processor to achieve near native performance.
此模块能够使QEMU基于物理机处理器运行绝大部分目标应用程序代码以获得接近本地运行的效率。
这也正好说明了QEMU是真正的CPU模拟器,这个真正的CPU模拟器模拟了一个不同于物理主机的、并不存在的CPU。
我猜想加速模块可以屏蔽QEMU模拟CPU的功能,使之仅作为虚拟机(virtualizer)使用,而不是emulator

8:下载完成后,将kqemu二进制安装包 (http://fabrice.bellard.free.fr/qemu/kqemu-0.7.2.tar.gz)解压到qemu源码目录,这样编译qemu后才能支持kqemu加速模块,称之为qemu built-in with kqemu
shell进入qemu目录
输入./configure --target-list=i386-softmmu --static --enable-adlib
target-list=i386-softmmu表示只生成32位exe可执行文件,如果要生成x64的qemu exe可执行文件可以把参数--target-list=i386-softmmu去掉
接下来会看到屏幕输出如下内容

如图:可以看到QEMU能够支持kqemu了
接下来可以编译QEMU了
shell提示符下输入make,这里有可能会提示找不到texi2html和pod2man命令,texi2html和pod2man是用来编译生成帮助文档的,可以建立两个空白文件取名为texi2html、pod2man。帮助文档可以在官方网站找到。
再次make,完成之后qemu-img.exe在/home/usrname/qemu目录,qemu.exe在/home/usrname/qemu/i386-softmmu目录,这样编译生成的文件体积太大了(包括sdl.dll),运行strip命令来减小它们的体积

strip i386-softmmu/qemu
strip qemu-img.exe

9:最后将

home/usrname/qemu/i386-softmmu/qemu.exe
home/usrname/qemu/qemu-img.exe
home/usrname/qemu/pc-bios/bios.bin
home/usrname/qemu/pc-bios/ppc_rom.bin
home/usrname/qemu/pc-bios/vgabios.bin
home/usrname/qemu/pc-bios/vgabios-cirrus.bin
home/usrname/qemu/kqemu/kqemu.inf
home/usrname/qemu/kqemu/kqemu.sys
home/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)下输入info kqemu能够查看QEMU对kqemu的支持情况

小提示:
如果编译出错,不需要重新下载源码只需make distclean即可清除编译生成的文件。
注:本文参考了qemu官方论坛comike的文章

补充:

各个版本应该带对应的辅助文件(bios.bin,vga*.bin等),不然会出问题,比如:0.12.2版的qemu不能直接替换掉0.9.0版,启动会有问题的

0.12.2版make install 有问题,发现mingw没有dd 命令,直接把其生成的文件qemu.exe放在一起就可以了!


推荐阅读
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文探讨了随着并发需求的增长,MySQL数据库架构如何从简单的单一实例发展到复杂的分布式系统,以及每一步演进背后的原理和技术解决方案。 ... [详细]
  • 本文介绍了如何在Java中使用`JCheckBoxMenuItem.setMnemonic()`方法,并提供了多个实际应用的代码示例。 ... [详细]
author-avatar
uigrdg更好_154
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有