使用 QEMU 进行系统仿真_第1页
使用 QEMU 进行系统仿真_第2页
使用 QEMU 进行系统仿真_第3页
使用 QEMU 进行系统仿真_第4页
使用 QEMU 进行系统仿真_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用QEMU进行系统仿真M. Tim Jones ( HYPERLINK mailto:mtj mtj), 咨询工程师,Emulex简介:QEMU是一个面向完整PC系统的开源仿真器。除了仿真处理器外,QEMU还允许仿 真所有必要的子系统,如连网硬件和视频硬件。它还允许实现高级概念上的仿真(如对称多处理 系统(多达255个CPU)和其他处理器架构(如ARM和PowerPC)。本文将研究QEMU 及其架构,并展示了如何在Linux主机上仿真来宾操作系统。标记本文!发布日期:2007年10月22日级别:初级访问情况:11192次浏览评论:2 (查看|添加评论-登录)平均分(11个评分)为本文评分QE

2、MU是什么?目前,简单地将虚拟化称为一种热点技术似乎有些保守。在google搜索virtualizati一词可 得到大约2200万条记录。例如,在短短的一个月内,EMC公司宣布为VMware首次公开募 股,Citrix Systems宣布购买XenSource的计划,而新起的虚拟化创业公司随处涌现。在虚拟 化产品的巨大市场上,不断出现各种新兴的小型市场。但是时下在热议有关虚拟化的首次公开募 股和收购时,容易忽略一些其他的现有虚拟化技术。本文所介绍的一种有趣的虚拟化应用程序QEMU并非目前的热门技术。QEMU应用程序适用 于各种设置。可用于来宾操作系统的虚拟化,或作为完整的机器仿真器使用,运行使

3、用主机CPU 或其他CPU架构的操作系统。回页首 虚拟化简介我们首先简要介绍一下虚拟化,阐述QEMU的搭建背景。本文中介绍的虚拟化实际上指的是平台虚拟化在物理硬件上,控制程序可能是主机操作系统或 管理程序(见图1)。在某些情况下,主机操作系统就是管理程序。来宾操作系统位于管理程 序中。在某些情况下,来宾操作系统与控制程序使用相同的CPU,而在另外一些情况下,则可 能不同(比如PowerPC来宾操作系统在x86硬件上运行)。图1.平台虚拟化的基本架构您可以通过多种方法实现虚拟化,但是最常见的有三种。第一种称为本地虚拟化(或全虚拟化) 在这种虚拟化中,管理程序实现基本的隔离元素,将物理硬件与来宾操

4、作系统相分离。这种技术 首次出现于1966年 旧M CP-40虚拟机/虚拟内存操作系统中,另外VMware ESX Server 也使用了此技术。另一种流行的虚拟化技术称为半虚拟化在半虚拟化中,控制程序实现了管理程序的应用程序接 口(API),它将由来宾操作系统使用。Xen 和 Linux Kernel-based Virtual Machine (KVM)都 使用了半虚拟化技术。第三种有用的技术称为仿真。仿真,顾名思义,通过模拟完整的硬件环境来虚拟化来宾平台。仿 真可通过多种方法实现,即使在同一个解决方案中也是如此。通过仿真实现虚拟化的技术有 QEMU 和 Bochso回页首QEMU架构我们

5、首先了解一下QEMU如何实现仿真。本节将介绍QEMU的两种操作模式,以及QEMU 动态翻译程序的一些有趣特点。QEMU基本操作QEMU支持两种操作模式:用户模式仿真和系统模式仿真。用户模式仿真允许一个CPU构建 的进程在另一个CPU上执行(执行主机CPU指令的动态翻译并相应地转换Linux系统调 用)。系统模式仿真允许对整个系统进行仿真,包括处理器和配套的外围设备。在x86主机系统上仿真x86代码时,使用QEMU 加速器可以实现近似本地的性能。这让我 们能够直接在主机CPU上执行仿真代码(在Linux上通过kernel模块执行)。但是从技术角度看,QEMU的有趣之处在于其快速、可移植的动态翻译

6、程序。动态翻译程序允 许在运行时将用于目标(来宾)CPU的指令转换为用于主机CPU,从而实现仿真。这可以通 过一种强制方法实现(将指令从一个CPU映射到另一个CPU),但是情况并非总是这样简单, 在某些情况下,根据所翻译的架构,可能需要使用多个指令或行为更改。QEMU实现动态翻译的方法是,首先将目标指令转换为微操作。这些微操作是一些编译成对象 的C代码。然后构建核心翻译程序。它将目标指令映射到微操作以进行动态翻译。这不仅可产 生高效率,而且还可以移植。QEMU的动态翻译程序还缓存了翻译后的代码块,使翻译程序的内存开销最小化。当初次使用 目标代码块时,翻译该块并将其存储为翻译后的代码块QEMU将

7、最近使用的翻译后的代码块 缓存在一个16 MB的块中。QEMU甚至可以通过在缓存中将翻译后的代码块变为无效来支持 代码的自我修改。要了解QEMU及其动态翻译程序的更多内部细节,请参阅参考资料一节中Fabrice Bellard (QEMU的作者)所撰写的有趣文章。受支持的外围设备将QEMU作为PC系统仿真器使用可提供各种外围设备。需要的标准外围设备包括硬件Video Graphics Array (VGA)仿真器、PS/2鼠标和键盘、集成开发环境(IDE)硬盘和CD-ROM 接口,以及软盘仿真。另外,QEMU 包括对 NE2000 Peripheral Controller Interconn

8、ect (PCI)网 络适配器、串行端口、大量的声卡和 PCI Universal Host Controller Interface (UHCI) Universal Serial Bus (USB)控制器(带虚拟 USB 集线器)的仿真。Processor symmetric multiprocessing (SMP)支持也得到了对255个CPU的支持。除了仿真标准PC或ISA PC (不带PCI总线)夕卜,QEMU还可以仿真其他非PC硬件,如 ARM Versatile 基线板(使用 926E)和 Malta million instructions per second (MIPS)板

9、。对 于各种其他平台,包括Power Macintosh G3 (Blue & White)和Sun-4u平台,都能正常工作。回页首 构建和安装QEMU构建和安装QEMU与使用标准的GNU工具一样简单。下载并打开QEMU发行版之后, configure、make,然后 make install,任务就完成了(见清单 1)。清单1.构建QEMU仿真器$ wget HYPERLINK http:/fabrice.bellard.free.fr/qemu/qemu-0.9.0.tar.gz http:/fabrice.bellard.free.fr/qemu/qemu-0.9.0.tar.gz$ t

10、ar xfvz qemu-0.9.0.tar.gz$ cd qemu-0.9.0$ ./configure$ make$ make install$此过程不仅可以为当前的目标架构创建可执行的qemu映像,而且可以为其他架构(包括ARM、 MIPS、PowerPC、68k和SPARC)创建一组映像。这样,您就可以引导为不同目标架构构 建的Linux内核。如果主机操作系统和来宾操作系统运行于相同的处理器架构之上,那么您可以使用QEMU加速 器(KQEMU)实现近似本地的性能。KQEMU是一个驱动程序(Linux的内核模块),允许用 户模式的代码和内核代码直接在主机CPU上执行。构建QEMU加速器与

11、构建QEMU本身 相同(见清单2)。清单2.构建QEMU加速器$ HYPERLINK http:/fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz http:/fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz$ tar xvfz kqemu-1.3.0pre11.tar.gz$ cd kqemu-1.3.0pre11$ ./configure$ make$ make install您可以在很多操作系统,包括Microsoft Windows、FreeBSD和Linux上编译和安装KQ

12、EMUo构建QEMU加速器之后,使用以下命令在Linux中安装该加速器:$ insmod kqemu.ko$回页首使用QEMU现在考察一下使用QEMU虚拟化另一台带典型的桌面GNU/Linux环境的机器的情况。仿真另 一台机器与处理新计算机类似。第一步是安装操作系统。新计算机必须要有安装操作系统的空 间,因此需要一个硬盘。QEMU提供了一条特殊的命令创建硬盘,此命令称为qemu-img。此工具可以创建各种格式的 映像,但最佳的格式(对于qemu)称为qcow (或qemu写时复制)。这种格式的优点在于磁 盘映像的大小与表示映像的物理文件的大小不同。换言之,该格式允许实现更紧凑的磁盘映像。 例如

13、,一个空的4GB磁盘映像只需要16KB的空间。使用qcow(copy on writ模式创建硬盘对于qemu-img,您需要提供操作类型(create创建新磁盘映像)、格式(qcow用于qemu映 像格式)、大小和磁盘映像的名称。本例中仿真的机器用于一个在Flash中使用的微型Linux发 行版。因此,将128MB的磁盘映像创建为:$ qemu-img create -f qcow disk.img 128MFormating disk.img, fmt=qcow, size=131072 kB$注意,如果您计划安装通用操作系统,如Windows Linux或FreeBSD,则需要更大的磁盘

14、空间。此操作的结果是仿真时出现一个disk.img文件,其形式是一个128MB的磁盘。现在已经创建好硬盘,可以在上面安装新操作系统。出于演示的目的,我将使用一个较小的Linux 发行版cfLinuXo cfLinux的标准用法是作为基于Linux的小型嵌入式系统使用,此系统应适用 网关、无线入口点、防火墙或路由器。您可以使用wget下载ISO格式的发行版:wget HYPERLINK ftp:/ftp.cflinux.fu/pub/cflinux/iso/cflinux-1.0.iso ftp:/ftp.cflinux.fu/pub/cflinux/iso/cflinux-1.0.isoISO

15、映像是常见的CD-ROM格式(在其他地方称为ISO 9660文件系统)。现在,您已经仿真了硬盘(disk.img)和CD-ROM,您可以在上面安装操作系统。下一步是在 硬盘上安装操作系统。简单地使用qemu即可完成此任务:$ qemu -hda disk.img -cdrom /root/cflinux-1.0.iso -boot d$使用qemu时,您使用hda选项指定硬盘映像,使用cdrom选项指定cdrom (ISO映像所在 的文件)。boot选项指定从CD-ROM弓|导。参数d指定从CD-ROM引导,其中a指定从 软盘引导,c指定从硬盘引导(默认),而n指定从网络引导。发出此命令后,出

16、现一个表示 已仿真机器的新QEMU窗口(见图2)。图2.准备使用QEMU将cfLinux安装到仿真磁盘上MET4: Linux TCP/IPfor HET4.0IP Protocols: CMP- UDF, TCP. 1GMPIF: renting CAche heish tabie uf* 512 buickEtsj KbytesTCF: Hflsh tab les conf igured lestab 1ished B13Z bind 16301)NET*: Unix doHain sockets 1.0/SMP for LIhuk HET4.0a ds no eocket drivers

17、 loadiedltRAfID ISK: CaHipressizd iitacfE round at Duck 6Freeinji iihitrd; 799?k freedCPfl wf s 二 urong tna g ICVFSr MouiiteJ root (mJ nix fi lesy stein) reftdcnly BFreeing unused kernel memcry: SOk freedInsta 1 lai i on prngTana-It wi 11 Ask you where to Instil Iof that device.criinx and wi 11 iest

18、roy all the contevit* Me 1 cottej this is the cf 1 inuMThe fol lowing bluuk. devices were detected on your system-.r sorted by size dcvioc sIzk (HD) h 电12881。 which uoLild jjRU like 化口 Install CFIInux? Rda _遵循安装指令,按照CD-ROM安装完成在仿真硬盘上的ISO安装。安装程序要求您重新启动。 此时,您可以终止仿真(在qemu窗口中按Ctrl-C)。您可以使用以下命令引导最新安装的操 作系

19、统:$ qemu -hda disk.img$此命令只是说明使用disk.img映像文件表示的硬盘仿真标准PC (默认选项)。Linux映像从 仿真硬盘开始引导,导致出现QEMU窗口,如图3所示。图3.从仿真硬盘引导最新安装的cfLinuxtnsmodl. inile; 8139cpt Ho such deviceMdpgbE MI led to load mdluie 8139cpB139tOi& F*st Ethernet driver 9总6ins mod in it.HKiilu. le: B133taD: ITd such devicenffldprobE: Pai led to l

20、oad wodlulc- 0139tconatscHi dp8301x dr iuer P ycr&ian: 1-07+LK1,0.17, Sep Z7 F Z0fiZor-ig Ina I iy by Dair& 1 & Bcckcr nugrDup r doneAdding system user nobody: doneNctuork in it ia L izot ion - dan:eEnab 1iny TCP?TP SYN naakics r dene 一Enabl Ingf spoofinn an all IntiErrces : done.Setting def ijiu I

21、t ARP anniounice i*ethD4 (1 on 肴11 (nterFACCS - done nDisabling console bleinklng: dorteSlrtimg staird dftenKi*ns: syslagd klegd crond IgemerAtIng 2048 bits rst key g enerat ing 162 bitskey J shd.Local init ial izsit ionfgrw) login:这再简单不过了。实际上,您可以按照同样的顺序安装和引导任何种类的操作系统(Linux产品 发行版、Windows或其他)。回页首 其他仿

22、真器虽然QEMU是一种极好的仿真环境,但是其他环境也值得研究一下。Wine是Windows API 的一个开源实现,允许您在没有Windows操作系统的情况下运行Windows程序。但是如 Wine缩略词所表示的那样,Wine不是仿真器。相反,Wine实现了一组API,这些API允 许执行x86架构的应用程序。因此,运行在Wine上的应用程序可以很好地执行。与QEMU类似的仿真器是Bochs。Bochs是一种机器仿真器,它不仅可以仿真Intel的 i386、i486、Pentium、Pentium Pro 和 Advanced Micro Devices 的 AMD64 CPU,还 可以仿真常

23、见PC外围设备,如磁盘、内存、显示器和网络设备。Bochs已被用于仿真Linux、 DOS 和 Windows 95/98/XP/2000/NT 操作系统。回页首 结束语将QEMU作为机器仿真器使用让您能够试验各种操作系统,因为您可能没有多余的机器直接进 行试验。ReactOS就是一个这样的例子,它是一个开源的Windows XP兼容的操作系统(其 仿真如图4所示)。ReactOS的目标是与Windows XP实现二进制兼容,因此您可以直接在 ReactOS上运行针对 Windows XP构建的应用程序。请参阅参考资料一节了解当前应用程序 兼容性的细节。图4.为ReactOS仿真标准PC您可以

24、在Free Operating Systems Zoo找到ReactOS和很多其他操作系统的QEMU映像 (请参阅参考资料一节了解更多细节)。这些映像包括live CD映像、软盘映像或硬盘映像 (qcow格式)。QEMU是尝试新操作系统的一种良好方法,而且不用花时间安装。参考资料学习您可以参阅本文在developerWorks全球站点上的英文原文. 查看 Fabrice Bellard 的 QEMU, a Fast and Portable Dynamic Translator ”(PDF), 了解QEMU动态翻译的内部细节。在“虚拟Linux”(developerWorks,2006年12月)中,了解其他Linux虚拟化选 项。“探索 Linux 内核虚拟机”(developerWorks,2007 年 4 月)介绍了 Linux KVM 架 构和它与内核紧密集成可以改变使用Linux的方式的原因。在developerWorks Linux 专区中,查找更多面向Linux开发人员的资源,查看最受 欢迎的文章和教程查看 developerWorks 上所有的Linux 技巧和Linux 教程随时关注developerWorks技术事件和网络广播 获得产品和技术从Fabrice Bellard的 Web站点下载QEMU开源处理器仿真器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论