首页
社区
课程
招聘
[原创] QEMU的虚拟加速
发表于: 2020-10-12 18:05 10759

[原创] QEMU的虚拟加速

2020-10-12 18:05
10759


【概述】

如图,QEMU支持的加速模式由kvm,xen.hax,hvf,whpx,tcg。

(默认是TCG模式,基本不算加速,Window Intel用 hax就没错,苹果系统用hvf,linux系统用kvm

(whpx是算是微软对hax的封装,xen这种太高端,一般用不着,用得着用不着此文)

如说明所言,默认情况下QEMU都是使用TCG加速模式,这种模式中规中矩,实际上算不得是加速。

这几种加速模式,后面会做简单说明;

一般Intel处理器的windows,使用通过指定【-accel hax】指定hax模式即可,对比默认的TCG模式,加速不是一点点。

所以,window下的intel,都加上【-accel hax】是不错选择。

另外,后面对应的HAXM说明也道出了我们Window使用Hyper-V会导致VMWare和Virtual-Box冲突不兼容的原因:

    即Hyper-V会独占Intel的 VT-x,致使包括VMWare在内的第三方虚拟技术提供商无法使用。

"c:\qemu\qemu-system-i386.exe" -hda tc.qcow2 -cdrom .\CorePlus-current.iso -boot d -m 256 -accel hax
HAX is working and emulator runs in fast virt mode.

hax 对应着【Intel Hardare Acelerated Execution Manager】(HAXM),即Intel的硬件加速执行管理器

下述 checktool.exe是HAMX检测工具(参考附件,来自官网git)

d:\qemu>checktool.exe -v
CPU vendor          *  GenuineIntel
Intel64 supported   *  Yes
VMX supported       *  Yes
VMX enabled         *  Yes
EPT supported       *  Yes
NX supported        *  Yes
NX enabled          *  Yes
Hyper-V disabled    *  Yes
OS version          *  Windows 10.0.19041
OS architecture     *  x86_64
Guest unoccupied    -  No. 1 guest(s)

d:\qemu>checktool.exe -v
CPU vendor          *  GenuineIntel
Intel64 supported   *  Yes
VMX supported       *  Yes
VMX enabled         *  Yes
EPT supported       *  Yes
NX supported        *  Yes
NX enabled          *  Yes
Hyper-V disabled    *  Yes
OS version          *  Windows 10.0.19041
OS architecture     *  x86_64
Guest unoccupied    *  Yes. 0 guest(s)

【QEMU集中加速模式简述】

  1. Tiny Code Generator (TCG)

    这也是QEMU的模式模式,基本原理就是翻译模拟处理器的指令成TC操作码,然后再将TC操作码翻译位本机处理器指令。

    不用想,翻译来翻译去就耗时复杂,也是慢的原因。

    微码发生器,qemu的默认加速器。主要由前端和后端构成。

    TCG前端:将仿真的目标处理器指令集翻译转换微TCG操作码

    TCG后端:将TCG操作码翻译转换为执行平台的指令。

    移植qemu模拟新处理器的人需要关注前端。

    移植qemu运行在新处理器上的人则需要关心后端,也存在TCI(即TCG Interpreter),所谓的TCG解析器,致力于在后端对TCGops操作码解析。

         

    2.Xen

    简单说,就是从硬盘启动开始启动,然后加载主系统作为优先级最高的虚拟机,负责管理虚拟化管理器和其他虚拟机。

    实际是一个虚拟机,一类提供硬件虚拟服务的虚拟机。所提供的服务使得多个计算机系统可以同时在同一计算机硬件上运行。最早由剑桥大学的计算机实验室开发,现在得到Intel的支持又Linux协会开发。

Xen比机器上任何其他软件的CPU执行优先级都高,最高优先级。

    虚拟管理器(hypervisor)负责:所有虚拟机(领域,domains)的内存管理和CPU调度,以及启动最高优先级“领域”——dom0,dom0默认是唯一一个可以直接访问硬件的虚拟机.在dom0中,可以管理虚拟管理器和启动非优先domians(domU)。

    dom0领域统筹是一个典型的Linux或BSD的版本。而用户领域(domU,user domains)可以是传统的操作系统,比如Windows,在这种情况下,特权指令由硬件虚拟指令提供(若处理器支持x86虚拟化,如Intel VT-X和AMD-V),或者由半虚拟化(准虚拟化)操作系统提供,籍此准虚拟化操作系统,操作系统会被告知运载在一个虚拟机中,因此执行虚拟调用(hypercalls,调用虚拟服务)而不知直接执行特权指令。

    Xen在硬盘启动程序中加载(如GNU GRUB的启动程序bootloader),然后加载一个准虚拟化的操作启动到dom0领域。

           

           

    3.HAXM 即Intel硬件加速执行管理器

        HAXM是一款跨平台硬件辅助虚拟引擎(虚拟化管理器),广泛用作安卓和QEMU的加速器。一直都支持Window和macOS,也已经被移植到其他操作系统如Linux和NetBSD。

        HAXM在主操作系统中已内核模式的驱动方式存在,对用户空间提供类似KVM的接口,因此应用程序如QEMU可以利用内置在现代IntelCPU中的硬件虚拟功能——所谓的Intel虚拟化技术。

           

使用HAXM

    (1) 首先确认下是否满足使用HAXM的要求,新的IntelCPU一般都支持Intel VT-x,HAXM可以工作在win7之后的32位或64位版本上。

    (2) 然后检测BIOS(或UEFI启动固件)设置,是否启动VT-x。在win8之后,要关闭Hyper-V,i那位Hyper-V默认开启,且Hyper-V会独占VT-x,阻止HAXM和其他第三方虚拟管理器如(VMware和VirtualBox)使用这些硬件特性。

           


    4.WHPX 微软的东西,对HAXM的封装,不如直接用HAXM


   


    5. HVF 是macOS系统使用的虚拟化加速框架实现(苹果系统上QEMU可以使用)


    6.KVM 为Linux系统的虚拟化加速方案(Linux系统上的QEMU可以使用)



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-10-12 18:09 被tritium编辑 ,原因:
上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
能用在android上么
2020-10-12 21:58
0
游客
登录 | 注册 方可回帖
返回
//