/haxm

Intel® Hardware Accelerated Execution Manager (Intel® HAXM)

Primary LanguageCBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Intel Hardware Accelerated Execution Manager (HAXM)

HAXM is a hardware-assisted virtualization engine (hypervisor) that uses Intel Virtualization Technology to speed up IA (x86/ x86_64) emulation on a host machine running Windows or macOS. It started as an Android SDK component, but has recently transformed itself into a general accelerator for QEMU.

HAXM can be built as either a kernel-mode driver for Windows or a kernel extension for macOS.

Building for Windows

Prerequisites

Option A (Visual Studio)

Note that the version/build number of Windows SDK must match that of WDK. In particular, the Windows 10 SDK installed by Visual Studio 2017 (version 1709, build 10.0.16299 as of this writing) may not be the latest version. If you want to use the latest WDK (version 1803 as of this writing), you may need to download and install the latest Windows 10 SDK (version 1803, build 10.0.17134 as of this writing).

Option B (EWDK)

  • Enterprise WDK (EWDK) 10 with Visual Studio Build Tools 15.6
    • Install the downloaded ISO image by mounting it or extracting it to an empty folder.
  • NuGet CLI tool (nuget.exe) version 4.x or later

Build steps

Option A (Visual Studio)

  1. Open HaxmDriver.sln in Visual Studio 2017.
  2. Select either Debug or Release configuration.
    • The Debug configuration also signs the driver with a test certificate. The Release configuration does not do that.
  3. Select either x64 or Win32 platform.
  4. Build solution.

Option B (EWDK)

  1. cd X:\path\to\EWDK\
  2. LaunchBuildEnv.cmd
  3. cd X:\path\to\haxm\
  4. X:\path\to\nuget.exe restore
  5. msbuild HaxmDriver.sln /p:Configuration="Debug" /p:Platform="x64"
    • Use Release instead of Debug to build a faster driver without a digital signature.
    • Use Win32 instead of x64 to build a 32-bit driver that works on 32-bit Windows.
    • Add /t:rebuild for a clean rebuild instead of an incremental build.

If successful, the driver binary (IntelHaxm.sys) will be generated in X:\path\to\haxm\obj\out\win7\x64\ (or X:\path\to\haxm\obj\out\win7\x86\ if Platform="Win32"), and will be able to run on Windows 7 and later.

Building for macOS

Prerequisites

  • Xcode 7.2.1 or later
  • OS X 10.10 SDK (archived here)
  • NASM 2.11 or later
    • Install to /usr/local/bin/ using Homebrew: brew install nasm
    • Note that Apple NASM (/usr/bin/nasm) cannot be used.

Build steps

  1. cd /path/to/haxm/
  2. cd darwin/hax_driver/com_intel_hax/
  3. xcodebuild -config Release
    • Use -sdk to override the default macOS SDK version (10.10), e.g. -sdk macosx10.12.

If successful, the kext (intelhaxm.kext/) will be generated in /path/to/haxm/darwin/hax_driver/com_intel_hax/build/Release/.

Reporting an Issue

You are welcome to file a GitHub issue if you discover a general HAXM bug or have a feature request.

However, please do not use the GitHub issue tracker to report security vulnerabilities. If you have information about a security issue or vulnerability with HAXM, please send an email to secure@intel.com, and use the PGP key located at https://www.intel.com/security to encrypt any sensitive information.