Skip to content

flagersgit/MacHyperVSupport

Repository files navigation

MacHyperVSupport

Build Status Scan Status

Hyper-V integration services for macOS. Requires a Generation 2 virtual machine on Windows 8.1 or higher.

All Intel macOS versions are supported. macOS 12.0 and newer should use MacHyperVSupportMonterey.kext instead.

Supported Hyper-V devices and services

  • Heartbeat
  • Guest shutdown
  • PCI passthrough (partial support)
  • Synthetic graphics (partial support)
  • Synthetic keyboard
  • Synthetic mouse
  • Synthetic network controller
  • Synthetic SCSI controller

OpenCore configuration

ACPI

  • SSDT-HV-CPU: Required on Windows 10 as Hyper-V on this version may not expose processors as Processor objects
  • SSDT-HV-PLUG: Ensures VMPlatformPlugin loads on Big Sur, avoids freezes with the default PlatformPlugin
  • SSDT-HV-VMBUS: Enables correct Startup Disk operation, ensure patches described within are also configured

Booter quirks

  • AllowRelocationBlock - required for macOS 10.7 and older
  • AvoidRuntimeDefrag - required
  • ForceExitBootServices - required for macOS 10.7 and older
  • ProvideCustomSlide - required
  • RebuildAppleMemoryMap - required for macOS 10.6 and older

Kernel

  • Quirks
    • ProvideCurrentCpuInfo - required for proper TSC/FSB values and CPU topology values.
  • The following additional kernel extensions are required:
  • Block
    • com.apple.driver.AppleEFIRuntime
      • Required for 32-bit versions of macOS (10.4 and 10.5, and 10.6 in 32-bit mode). EFI runtime services and NVRAM are unavailable in those versions due to incompatiblities with the Hyper-V UEFI.
  • Force
    • On older versions of macOS, the following kernel extensions may need to be Force injected. Refer to the OpenCore Configuration manual for details.
    • IONetworkingFamily (com.apple.iokit.IONetworkingFamily)
    • IOSCSIParallelFamily (com.apple.iokit.IOSCSIParallelFamily)
  • Patch
    • Disable _hpet_init
      • Arch = i386
      • Base = _hpet_init
      • Comment = Disables _hpet_init due to no HPET hardware present
      • Count = 1
      • Identifier = kernel
      • MaxKernel = 9.5.99
      • Replace = C3
    • Disable IOHIDDeviceShim::newTransportString()
      • Arch = i386
      • Base = __ZNK15IOHIDDeviceShim18newTransportStringEv
      • Comment = Fix crash in IOHIDDeviceShim::newTransportString() caused by NULL _deviceType
      • Count = 1
      • Identifier = com.apple.iokit.IOHIDFamily
      • MaxKernel = 9.6.99
      • MinKernel = 9.5.0
      • Replace = 31C0C3
  • Emulate
    • DummyPowerManagement and CPU spoofing may be required depending on the host CPU for older versions of macOS.

NVRAM

  • Boot arguments
    • -legacy is required for running 32-bit versions of macOS (10.4 - 10.5, 10.6 if running in 32-bit mode). 64-bit applications and NVRAM support are unavailable in those versions.

UEFI

  • Quirks
    • DisableSecurityPolicy - required on Windows 10 and newer

Installer image creation

  • Installer images can either be passed in from USB hard disks, or converted from a DMG to a VHDX image using qemu-img:
    • DMGs need to be in a read/write format first.
    • qemu-img convert -f raw -O vhdx Installer.dmg Installer.vhdx

Boot arguments

Module Debug Message Debug Off
CPU disabler (10.4) -hvcpudbg N/A N/A
Graphics -hvgfxdbg -hvgfxmsgdbg -hvgfxoff
Heartbeat -hvheartdbg -hvheartmsgdbg -hvheartoff
Keyboard -hvkbddbg -hvkbdmsgdbg -hvkbdoff
Mouse -hvmousdbg -hvmousmsgdbg -hvmousoff
Network -hvnetdbg -hvnetmsgdbg -hvnetoff
PCI bridge -hvpcibdbg -hvpcibmsgdbg -hvpciboff
PCI module support -hvpcimdbg N/A N/A
PCI provider -hvpcipdbg N/A N/A
PCI root bridge -hvpcirdbg N/A N/A
Shutdown -hvshutdbg -hvshutmsgdbg -hvshutoff
Storage -hvstordbg -hvstormsgdbg -hvstoroff
VMBus controller -hvvmbusdbg N/A N/A
VMBus device nub -hvvmbusdevdbg N/A N/A

Credits

About

Hyper-V integration support for macOS

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 94.5%
  • C 4.9%
  • Other 0.6%