imbushuo原版HyperV黑苹果攻略

`
# macOS on Hyper-V ## Requirements - A recent version of Windows, preferrably Windows 10/Server 2019/11/Server 2022 - Intel CPU. I haven't figure out how to make this working on AMD platform. Generation doesn't matter, I boot it on Tiger Lake H35 just fine. - ~90GB disk space - Some patience ## Prepare macOS Image Big Sur (11.0) works as verified. I haven't checked others. Preferably you should use a Mac to prepare the macOS image, as it saves time doing the online recovery stuff. - Download Big Sur installer from App Store or just [click this link](http://swcdn.apple.com/content/downloads/04/42/002-42341-A_4PL6G0S8GN/cs65avpi1aelh133lc36fy0ste3lihe71n/InstallAssistant.pkg) - Install the `.pkg` (if download from external sources) - Create a 16GB R/W disk image, using GUID partition table and HFS+ file system - Use `createinstallmedia` to prepare the disk image - Use `qemu-img convert -O vhdx -f raw <dmg> <vhdx>` to convert it for Hyper-V use ## Prepare Hyper-V Create a `Generation 2` Virtual Machine, turn off Secure Boot, give it enough memory and vCPUs. Use **only single SCSI controller** because the driver only knows about the first one. You might want to either automatically or manually take snapshots, but that's up to you. Production checkpoints are not supported. ## Prepare OpenCore Read [OpenCore manual](https://dortania.github.io/OpenCore-Install-Guide/prerequisites.html) first. The following section will be supplemental to the manual. Download a set of OpenCore, and apply a set of ACPI patches: [hv-macos-acpi.zip](/microsoft/hv-macos/hv-macos-acpi.zip) (macOS needs standardized ACPI `_HID`, which Hyper-V doesn't have), and apply a Hyper-V specific `config.plist`. Download required KEXTs: [MacHyperVSupport.kext](https://github.com/acidanthera/MacHyperVSupport/releases/tag/0.7), [Lilu.kext](https://github.com/acidanthera/Lilu/releases/tag/1.5.9), [VirtualSMC.kext](https://github.com/acidanthera/VirtualSMC/releases) (note: no plugin needed), [WhatEverGreen.kext](https://github.com/acidanthera/WhateverGreen/releases/tag/1.5.6) Some explaination: SIP and Secure Bootis disabled, Vault disabled (so no KeyVault!), verbose mode is on for diagnostics, KEXT is injected. We use the SMBIOS information from Mac Mini (w/o T2) to prevent the installer updating T2 (which doesn't exist, thus it will complain and fail the installation.) ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ACPI</key> <dict> <key>Add</key> <array> <dict> <key>Comment</key> <string>Hyper-V customized DSDT with VMBus enablement</string> <key>Enabled</key> <true/> <key>Path</key> <string>DSDT-HV.aml</string> </dict> <dict> <key>Comment</key> <string>Hyper-V VMBus fix-up</string> <key>Enabled</key> <true/> <key>Path</key> <string>SSDT-HV-VMBUS.aml</string> </dict> <dict> <key>Comment</key> <string>Hyper-V CPU fix-up</string> <key>Enabled</key> <true/> <key>Path</key> <string>SSDT-HV-CPU.aml</string> </dict> <dict> <key>Comment</key> <string>Hyper-V Hotplug</string> <key>Enabled</key> <true/> <key>Path</key> <string>SSDT-HV-PLUG.aml</string> </dict> </array> <key>Delete</key> <array/> <key>Patch</key> <array> <dict> <key>Base</key> <string>\_SB.VMOD</string> <key>BaseSkip</key> <integer>0</integer> <key>Comment</key> <string>Hyper-V VmBus</string> <key>Count</key> <integer>1</integer> <key>Enabled</key> <true/> <key>Find</key> <data>X0hJRA==</data> <key>Limit</key> <integer>0</integer> <key>Mask</key> <data></data> <key>OemTableId</key> <data></data> <key>Replace</key> <data>WEhJRA==</data> <key>ReplaceMask</key> <data></data> <key>Skip</key> <integer>0</integer> <key>TableLength</key> <integer>0</integer> <key>TableSignature</key> <data></data> </dict> <dict> <key>Base</key> <string>\_SB.VMOD.VMBS</string> <key>BaseSkip</key> <integer>0</integer> <key>Comment</key> <string>Hyper-V VmBus</string> <key>Count</key> <integer>1</integer> <key>Enabled</key> <true/> <key>Find</key> <data>X0hJRA==</data> <key>Limit</key> <integer>0</integer> <key>Mask</key> <data></data> <key>OemTableId</key> <data></data> <key>Replace</key> <data>WEhJRA==</data> <key>ReplaceMask</key> <data></data> <key>Skip</key> <integer>0</integer> <key>TableLength</key> <integer>0</integer> <key>TableSignature</key> <data></data> </dict> </array> <key>Quirks</key> <dict> <key>FadtEnableReset</key> <false/> <key>NormalizeHeaders</key> <false/> <key>RebaseRegions</key> <false/> <key>ResetHwSig</key> <false/> <key>ResetLogoStatus</key> <false/> <key>SyncTableIds</key> <false/> </dict> </dict> <key>Booter</key> <dict> <key>MmioWhitelist</key> <array/> <key>Quirks</key> <dict> <key>AllowRelocationBlock</key> <false/> <key>AvoidRuntimeDefrag</key> <true/> <key>DevirtualiseMmio</key> <false/> <key>DisableSingleUser</key> <false/> <key>DisableVariableWrite</key> <false/> <key>DiscardHibernateMap</key> <false/> <key>EnableSafeModeSlide</key> <true/> <key>EnableWriteUnprotector</key> <true/> <key>ForceBooterSignature</key> <false/> <key>ForceExitBootServices</key> <false/> <key>ProtectMemoryRegions</key> <false/> <key>ProtectSecureBoot</key> <false/> <key>ProtectUefiServices</key> <false/> <key>ProvideCustomSlide</key> <true/> <key>ProvideMaxSlide</key> <integer>0</integer> <key>RebuildAppleMemoryMap</key> <false/> <key>ResizeAppleGpuBars</key> <integer>-1</integer> <key>SetupVirtualMap</key> <false/> <key>SignalAppleOS</key> <false/> <key>SyncRuntimePermissions</key> <false/> </dict> </dict> <key>DeviceProperties</key> <dict> <key>Add</key> <dict/> <key>Delete</key> <dict/> </dict> <key>Kernel</key> <dict> <key>Add</key> <array> <dict> <key>Arch</key> <string>Any</string> <key>BundlePath</key> <string>Lilu.kext</string> <key>Comment</key> <string>Patch engine</string> <key>Enabled</key> <true/> <key>ExecutablePath</key> <string>Contents/MacOS/Lilu</string> <key>MaxKernel</key> <string></string> <key>MinKernel</key> <string>8.0.0</string> <key>PlistPath</key> <string>Contents/Info.plist</string> </dict> <dict> <key>Arch</key> <string>Any</string> <key>BundlePath</key> <string>VirtualSMC.kext</string> <key>Comment</key> <string>SMC emulator</string> <key>Enabled</key> <true/> <key>ExecutablePath</key> <string>Contents/MacOS/VirtualSMC</string> <key>MaxKernel</key> <string></string> <key>MinKernel</key> <string>8.0.0</string> <key>PlistPath</key> <string>Contents/Info.plist</string> </dict> <dict> <key>Arch</key> <string>x86_64</string> <key>BundlePath</key> <string>WhateverGreen.kext</string> <key>Comment</key> <string>Video patches</string> <key>Enabled</key> <true/> <key>ExecutablePath</key> <string>Contents/MacOS/WhateverGreen</string> <key>MaxKernel</key> <string></string> <key>MinKernel</key> <string>10.0.0</string> <key>PlistPath</key> <string>Contents/Info.plist</string> </dict> <dict> <key>Arch</key> <string>Any</string> <key>BundlePath</key> <string>MacHyperVSupport.kext</string> <key>Comment</key> <string>Hyper-V Support</string> <key>Enabled</key> <true/> <key>ExecutablePath</key> <string>Contents/MacOS/MacHyperVSupport</string> <key>MaxKernel</key> <string></string> <key>MinKernel</key> <string>8.0.0</string> <key>PlistPath</key> <string>Contents/Info.plist</string> </dict> </array> <key>Block</key> <array> <dict> <key>Arch</key> <string>Any</string> <key>Comment</key> <string></string> <key>Enabled</key> <false/> <key>Identifier</key> <string>com.apple.driver.AppleTyMCEDriver</string> <key>MaxKernel</key> <string></string> <key>MinKernel</key> <string></string> </dict> </array> <key>Emulate</key> <dict> <key>Cpuid1Data</key> <data>VAYFAAAAAAAAAAAAAAAAAA==</data> <key>Cpuid1Mask</key> <data>////AAAAAAAAAAAAAAAAAA==</data> <key>DummyPowerManagement</key> <true/> <key>MaxKernel</key> <string></string> <key>MinKernel</key> <string></string> </dict> <key>Force</key> <array> <dict> <key>Arch</key> <string>Any</string> <key>BundlePath</key> <string>System/Library/Extensions/IONetworkingFamily.kext</string> <key>Comment</key> <string></string> <key>Enabled</key> <false/> <key>ExecutablePath</key> <string>Contents/MacOS/IONetworkingFamily</string> <key>Identifier</key> <string>com.apple.iokit.IONetworkingFamily</string> <key>MaxKernel</key> <string>13.99.99</string> <key>MinKernel</key> <string></string> <key>PlistPath</key> <string>Contents/Info.plist</string> </dict> </array> <key>Patch</key> <array> <dict> <key>Arch</key> <string>x86_64</string> <key>Base</key> <string></string> <key>Comment</key> <string>algrey - cpuid_set_cpufamily - force CPUFAMILY_INTEL_PENRYN</string> <key>Count</key> <integer>1</integer> <key>Enabled</key> <true/> <key>Find</key> <data>MduAPQAAAAAGdQA=</data> <key>Identifier</key> <string>kernel</string> <key>Limit</key> <integer>0</integer> <key>Mask</key> <data>/////wAAAP///wA=</data> <key>MaxKernel</key> <string>20.3.99</string> <key>MinKernel</key> <string>17.0.0</string> <key>Replace</key> <data>u7xP6njpXQAAAJA=</data> <key>ReplaceMask</key> <data></data> <key>Skip</key> <integer>0</integer> </dict> <dict> <key>Arch</key> <string>x86_64</string> <key>Base</key> <string></string> <key>Comment</key> <string>algrey - thenickdude - cpuid_set_cpufamily - force CPUFAMILY_INTEL_PENRYN (Big Sur 11.3 and newer)</string> <key>Count</key> <integer>1</integer> <key>Enabled</key> <true/> <key>Find</key> <data>MdKzAYA9AAAAAAZ1</data> <key>Identifier</key> <string>kernel</string> <key>Limit</key> <integer>0</integer> <key>Mask</key> <data>////////AAAAAP//</data> <key>MaxKernel</key> <string>21.99.99</string> <key>MinKernel</key> <string>20.4.0</string> <key>Replace</key> <data>urxP6nizAJCQkJDr</data> <key>ReplaceMask</key> <data></data> <key>Skip</key> <integer>0</integer> </dict> <dict> <key>Arch</key> <string>x86_64</string> <key>Base</key> <string>_early_random</string> <key>Comment</key> <string>SurPlus v1 - PART 1 of 2 - Patch read_erandom (inlined in _early_random)</string> <key>Count</key> <integer>1</integer> <key>Enabled</key> <true/> <key>Find</key> <data>AHQjSIs=</data> <key>Identifier</key> <string>kernel</string> <key>Limit</key> <integer>800</integer> <key>Mask</key> <data></data> <key>MaxKernel</key> <string>21.1.0</string> <key>MinKernel</key> <string>20.4.0</string> <key>Replace</key> <data>AOsjSIs=</data> <key>ReplaceMask</key> <data></data> <key>Skip</key> <integer>0</integer> </dict> <dict> <key>Arch</key> <string>x86_64</string> <key>Base</key> <string>_register_and_init_prng</string> <key>Comment</key> <string>SurPlus v1 - PART 2 of 2 - Patch register_and_init_prng</string> <key>Count</key> <integer>1</integer> <key>Enabled</key> <true/> <key>Find</key> <data>ukgBAAAx9g==</data> <key>Identifier</key> <string>kernel</string> <key>Limit</key> <integer>256</integer> <key>Mask</key> <data></data> <key>MaxKernel</key> <string>21.1.0</string> <key>MinKernel</key> <string>20.4.0</string> <key>Replace</key> <data>ukgBAADrBQ==</data> <key>ReplaceMask</key> <data></data> <key>Skip</key> <integer>0</integer> </dict> </array> <key>Quirks</key> <dict> <key>AppleCpuPmCfgLock</key> <false/> <key>AppleXcpmCfgLock</key> <false/> <key>AppleXcpmExtraMsrs</key> <false/> <key>AppleXcpmForceBoost</key> <false/> <key>CustomSMBIOSGuid</key> <false/> <key>DisableIoMapper</key> <false/> <key>DisableLinkeditJettison</key> <true/> <key>DisableRtcChecksum</key> <false/> <key>ExtendBTFeatureFlags</key> <false/> <key>ExternalDiskIcons</key> <false/> <key>ForceSecureBootScheme</key> <false/> <key>IncreasePciBarSize</key> <false/> <key>LapicKernelPanic</key> <false/> <key>LegacyCommpage</key> <false/> <key>PanicNoKextDump</key> <false/> <key>PowerTimeoutKernelPanic</key> <false/> <key>ProvideCurrentCpuInfo</key> <true/> <key>SetApfsTrimTimeout</key> <integer>-1</integer> <key>ThirdPartyDrives</key> <false/> <key>XhciPortLimit</key> <false/> </dict> <key>Scheme</key> <dict> <key>CustomKernel</key> <false/> <key>FuzzyMatch</key> <true/> <key>KernelArch</key> <string>Auto</string> <key>KernelCache</key> <string>Auto</string> </dict> </dict> <key>Misc</key> <dict> <key>BlessOverride</key> <array/> <key>Boot</key> <dict> <key>ConsoleAttributes</key> <integer>0</integer> <key>HibernateMode</key> <string>Auto</string> <key>HideAuxiliary</key> <false/> <key>LauncherOption</key> <string>Disabled</string> <key>LauncherPath</key> <string>Default</string> <key>PickerAttributes</key> <integer>17</integer> <key>PickerAudioAssist</key> <false/> <key>PickerMode</key> <string>External</string> <key>PickerVariant</key> <string>Auto</string> <key>PollAppleHotKeys</key> <true/> <key>ShowPicker</key> <true/> <key>TakeoffDelay</key> <integer>0</integer> <key>Timeout</key> <integer>0</integer> </dict> <key>Debug</key> <dict> <key>AppleDebug</key> <true/> <key>ApplePanic</key> <true/> <key>DisableWatchDog</key> <false/> <key>DisplayDelay</key> <integer>0</integer> <key>DisplayLevel</key> <integer>2147483650</integer> <key>SerialInit</key> <false/> <key>SysReport</key> <false/> <key>Target</key> <integer>3</integer> </dict> <key>Entries</key> <array/> <key>Security</key> <dict> <key>AllowNvramReset</key> <true/> <key>AllowSetDefault</key> <true/> <key>AllowToggleSip</key> <false/> <key>ApECID</key> <integer>0</integer> <key>AuthRestart</key> <false/> <key>BlacklistAppleUpdate</key> <true/> <key>DmgLoading</key> <string>Signed</string> <key>EnablePassword</key> <false/> <key>ExposeSensitiveData</key> <integer>6</integer> <key>HaltLevel</key> <integer>2147483648</integer> <key>PasswordHash</key> <data></data> <key>PasswordSalt</key> <data></data> <key>ScanPolicy</key> <integer>0</integer> <key>SecureBootModel</key> <string>Disabled</string> <key>Vault</key> <string>Optional</string> </dict> <key>Tools</key> <array> <dict> <key>Arguments</key> <string></string> <key>Auxiliary</key> <true/> <key>Comment</key> <string>Not signed for security reasons</string> <key>Enabled</key> <true/> <key>Flavour</key> <string>OpenShell:UEFIShell:Shell</string> <key>Name</key> <string>UEFI Shell</string> <key>Path</key> <string>OpenShell.efi</string> <key>RealPath</key> <false/> <key>TextMode</key> <false/> </dict> <dict> <key>Arguments</key> <string></string> <key>Auxiliary</key> <true/> <key>Comment</key> <string>Memory testing utility</string> <key>Enabled</key> <false/> <key>Flavour</key> <string>MemTest</string> <key>Name</key> <string>memtest86</string> <key>Path</key> <string>memtest86/BOOTX64.efi</string> <key>RealPath</key> <true/> <key>TextMode</key> <false/> </dict> <dict> <key>Arguments</key> <string>Shutdown</string> <key>Auxiliary</key> <true/> <key>Comment</key> <string>Perform shutdown</string> <key>Enabled</key> <false/> <key>Flavour</key> <string>Auto</string> <key>Name</key> <string>Shutdown</string> <key>Path</key> <string>ResetSystem.efi</string> <key>RealPath</key> <false/> <key>TextMode</key> <false/> </dict> </array> </dict> <key>NVRAM</key> <dict> <key>Add</key> <dict> <key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key> <dict> <key>DefaultBackgroundColor</key> <data>AAAAAA==</data> </dict> <key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key> <dict> <key>rtc-blacklist</key> <data></data> </dict> <key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key> <dict> <key>ForceDisplayRotationInEFI</key> <integer>0</integer> <key>SystemAudioVolume</key> <data>Rg==</data> <key>SystemAudioVolumeDB</key> <data>4g==</data> <key>boot-args</key> <string>keepsyms=1 -v</string> <key>csr-active-config</key> <data>/w8AAA==</data> <key>prev-lang:kbd</key> <data>ZW4tVVM6MA==</data> <key>run-efi-updater</key> <string>No</string> </dict> </dict> <key>Delete</key> <dict> <key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key> <array> <string>DefaultBackgroundColor</string> </array> <key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key> <array> <string>rtc-blacklist</string> </array> <key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key> <array> <string>boot-args</string> <string>ForceDisplayRotationInEFI</string> <string>csr-active-config</string> </array> </dict> <key>LegacyEnable</key> <false/> <key>LegacyOverwrite</key> <false/> <key>LegacySchema</key> <dict> <key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key> <array> <string>EFILoginHiDPI</string> <string>EFIBluetoothDelay</string> <string>LocationServicesEnabled</string> <string>SystemAudioVolume</string> <string>SystemAudioVolumeDB</string> <string>SystemAudioVolumeSaved</string> <string>bluetoothActiveControllerInfo</string> <string>bluetoothInternalControllerInfo</string> <string>flagstate</string> <string>fmm-computer-name</string> <string>fmm-mobileme-token-FMM</string> <string>fmm-mobileme-token-FMM-BridgeHasAccount</string> <string>nvda_drv</string> <string>prev-lang:kbd</string> </array> <key>8BE4DF61-93CA-11D2-AA0D-00E098032B8C</key> <array> <string>Boot0080</string> <string>Boot0081</string> <string>Boot0082</string> <string>BootNext</string> <string>BootOrder</string> </array> </dict> <key>WriteFlash</key> <true/> </dict> <key>PlatformInfo</key> <dict> <key>Automatic</key> <true/> <key>CustomMemory</key> <false/> <key>Generic</key> <dict> <key>AdviseFeatures</key> <false/> <key>MaxBIOSVersion</key> <false/> <key>MLB</key> <string>C02717306J9JG361M</string> <key>ProcessorType</key> <integer>0</integer> <key>ROM</key> <data>m7zhIYfl</data> <key>SpoofVendor</key> <true/> <key>SystemMemoryStatus</key> <string>Auto</string> <key>SystemProductName</key> <string>Macmini7,1</string> <key>SystemSerialNumber</key> <string>C02NQK8DG1J0</string> <key>SystemUUID</key> <string>107076A6-F2A2-4461-BBE5-BAD019F8025A</string> </dict> <key>UpdateDataHub</key> <true/> <key>UpdateNVRAM</key> <true/> <key>UpdateSMBIOS</key> <true/> <key>UpdateSMBIOSMode</key> <string>Create</string> <key>UseRawUuidEncoding</key> <false/> </dict> <key>UEFI</key> <dict> <key>APFS</key> <dict> <key>EnableJumpstart</key> <true/> <key>GlobalConnect</key> <false/> <key>HideVerbose</key> <true/> <key>JumpstartHotPlug</key> <false/> <key>MinDate</key> <integer>-1</integer> <key>MinVersion</key> <integer>-1</integer> </dict> <key>AppleInput</key> <dict> <key>AppleEvent</key> <string>Builtin</string> <key>CustomDelays</key> <false/> <key>GraphicsInputMirroring</key> <true/> <key>KeyInitialDelay</key> <integer>50</integer> <key>KeySubsequentDelay</key> <integer>5</integer> <key>PointerPollMask</key> <integer>-1</integer> <key>PointerPollMax</key> <integer>80</integer> <key>PointerPollMin</key> <integer>10</integer> <key>PointerSpeedDiv</key> <integer>1</integer> <key>PointerSpeedMul</key> <integer>1</integer> </dict> <key>Audio</key> <dict> <key>AudioCodec</key> <integer>0</integer> <key>AudioDevice</key> <string></string> <key>AudioOutMask</key> <integer>1</integer> <key>AudioSupport</key> <false/> <key>DisconnectHda</key> <false/> <key>MaximumGain</key> <integer>-15</integer> <key>MinimumAssistGain</key> <integer>-30</integer> <key>MinimumAudibleGain</key> <integer>-55</integer> <key>PlayChime</key> <string>Auto</string> <key>ResetTrafficClass</key> <false/> <key>SetupDelay</key> <integer>0</integer> </dict> <key>ConnectDrivers</key> <true/> <key>Drivers</key> <array> <dict> <key>Arguments</key> <string></string> <key>Comment</key> <string>HFS+ Driver</string> <key>Enabled</key> <true/> <key>Path</key> <string>OpenHfsPlus.efi</string> </dict> <dict> <key>Arguments</key> <string></string> <key>Comment</key> <string></string> <key>Enabled</key> <true/> <key>Path</key> <string>OpenRuntime.efi</string> </dict> </array> <key>Input</key> <dict> <key>KeyFiltering</key> <false/> <key>KeyForgetThreshold</key> <integer>5</integer> <key>KeySupport</key> <true/> <key>KeySupportMode</key> <string>Auto</string> <key>KeySwap</key> <false/> <key>PointerSupport</key> <false/> <key>PointerSupportMode</key> <string>ASUS</string> <key>TimerResolution</key> <integer>50000</integer> </dict> <key>Output</key> <dict> <key>ClearScreenOnModeSwitch</key> <false/> <key>ConsoleMode</key> <string></string> <key>DirectGopRendering</key> <false/> <key>ForceResolution</key> <false/> <key>GopPassThrough</key> <string>Disabled</string> <key>IgnoreTextInGraphics</key> <false/> <key>ProvideConsoleGop</key> <true/> <key>ReconnectGraphicsOnConnect</key> <false/> <key>ReconnectOnResChange</key> <false/> <key>ReplaceTabWithSpace</key> <false/> <key>Resolution</key> <string>1920x1080@32</string> <key>SanitiseClearScreen</key> <false/> <key>TextRenderer</key> <string>BuiltinGraphics</string> <key>UIScale</key> <integer>0</integer> <key>UgaPassThrough</key> <false/> </dict> <key>ProtocolOverrides</key> <dict> <key>AppleAudio</key> <false/> <key>AppleBootPolicy</key> <false/> <key>AppleDebugLog</key> <false/> <key>AppleEg2Info</key> <false/> <key>AppleFramebufferInfo</key> <false/> <key>AppleImageConversion</key> <false/> <key>AppleImg4Verification</key> <false/> <key>AppleKeyMap</key> <false/> <key>AppleRtcRam</key> <false/> <key>AppleSecureBoot</key> <false/> <key>AppleSmcIo</key> <false/> <key>AppleUserInterfaceTheme</key> <false/> <key>DataHub</key> <false/> <key>DeviceProperties</key> <false/> <key>FirmwareVolume</key> <true/> <key>HashServices</key> <false/> <key>OSInfo</key> <false/> <key>UnicodeCollation</key> <false/> </dict> <key>Quirks</key> <dict> <key>ActivateHpetSupport</key> <false/> <key>DisableSecurityPolicy</key> <true/> <key>EnableVectorAcceleration</key> <true/> <key>EnableVmx</key> <false/> <key>ExitBootServicesDelay</key> <integer>0</integer> <key>ForceOcWriteFlash</key> <false/> <key>ForgeUefiSupport</key> <false/> <key>IgnoreInvalidFlexRatio</key> <false/> <key>ReleaseUsbOwnership</key> <false/> <key>ReloadOptionRoms</key> <false/> <key>RequestBootVarRouting</key> <true/> <key>ResizeGpuBars</key> <integer>-1</integer> <key>TscSyncTimeout</key> <integer>0</integer> <key>UnblockFsConnect</key> <false/> </dict> </dict> </dict> </plist> ``` ## Install At this moment you should be able to boot into recoveryOS. Prepare the target system disk using disk utility, copy OpenCore `EFI` directory to your target system disk's ESP partition (manually mount it), then install macOS as usual. It will take a very long time. At the first reboot, power it down in OpenCore menu, remove the install disk media, and boot using the `macOS Installer` boot entry. It will reboot another 1-2 times before completion. Then set it up as usual. ## Known Caveats - Hyper-V SCSI disk hotplug is not supported - add or remove disk at runtime will panic the OS. - ~~Can't have more than one SCSI controller - which means no Azure Boot yet~~ - If Hyper-V Bus doesn't enumerate anything, try to insert a `IOWait` or something that shortly delays the enumeration processing before issuing the Hyper-V Bus enumeration hypercall. 500ms-1000ms is enough. - Host-initiated VM shutdown is not supported. - Sometimes reboot from virtual machine might cause driver stalling at next boot. In this case, power off the VM and power it on again. - Bad graphics performance, no video resolution changes. - OOBE might reset if you stay there too long - be quick.