TABLE of CONTENTS
OpenCore Legacy Patcher (OCLP) 0.3.2 introduced a set of Booter and Kernel patches which utilize macOS'es virtualization capabilities (VMM) introduced in Big Sur to trick macOS into "believing" that it's running inside a Virtual Machine:
Parrotgeek1's VMM patch set would force
kern.hv_vmm_present
to always returnTrue
. With hv_vmm_present returning True, bothOSInstallerSetupInternal
andSoftwareUpdateCore
will set theVMM-x86_64
board-id while the rest of the OS will continue with the original ID.
- Patching
kern.hv_vmm_present
over manually setting the VMM CPUID allows for native features such as CPU and GPU power management.
Source: OCLP issue 543
This construct allows installing and receiving OTA system updates for macOS 11.3 and newer on otherwise unsupported Board-IDs/CPUs. Although OCLP's primary aim is to install OpenCore and macOS on legacy Macs, these patches can be utilized on Hackintoshes as well while using the "native", designated SMBIOS for a given CPU family which improves CPU and GPU Power Management - especially on Laptops. I am successfully using this spoof on my Lenovo T530 ThinkPad for running macOS Sonoma.
Although installing macOS on systems with an unsupported SMBIOS was possible long before these patches existed (via boot-arg -no_compat_check
), receiving OTA system updates is impossible if this boot-arg is active.
Caution
- With the release of
RestrictEvents.kext
v1.1.3, the Kernel Patches were implemented into the kext itself, so adding them is no longer necessary. So If yourconfig.plist
still contains these Kernel Patches, please disable/delete them! - Prior to the release of
RestrictEvents.kext
, the kernel patches had negative effects on Bluetooth since enabling the VMM Board-ID skipped loading firmware of Bluetooth devices. This has been resolved now (→ more details).
Minimum macOS: Big Sur 11.3 or newer (Darwin Kernel 20.4+) is mandatory!
Intel CPU families:
- 1st Gen Intel Core CPUs (req. SurPlus Kernel Patches)
- Sandy Bridge (req. SurPlus Kernel Patches)
- Ivy Bridge
- Haswell/Broadwell
- Skylake (to continue using SMBIOS
iMac17,1
on macOS 13+). Requires additional iGPU spoof so the Intel HD 530 can be used.
Note
7th to 10 Gen Intel Core CPUs don't need this spoof (yet) since they are still supported by macOS.
-
Installing macOS 11.3+ on systems with unsupported CPUs and SMBIOSes/Board-IDs
-
Enabling System Updates. As a side effect, you can use these patches to workaround issues with System Updates in macOS 11.3 and newer when using an SMBIOS of a Mac model with a T1/T2 security chip, such as (value in brackets =
SecureBootModel
):- MacBookPro15,1 (
J680
), 15,2 (J132
), 15,3 (J780
), 15,4 (J213
) - MacBookPro16,1 (
J152F
), 16,2 (J214K
), 16,3 (J223
), 16,4 (J215
) - MacBookAir8,1 (
J140K
), 8,2 (J140A
) - MacBookAir9,1 (
J230K
) - Macmini8,1 (
J174
) - iMac20,1 (
J185
), 20,2 (J185F
) - iMacPro1,1 (
J137
) - MacPro7,1 (
J160
)
- MacBookPro15,1 (
Normally, macOS wouldn't be able to receive System Update Notifications (and therefore wouldn't be able to download OTA System Updates) under the following conditions:
- Using a
csr-active-config
bitmask containing the flags "Allow Apple Internal" and "Allow unauthenticated Root" to lowerSystem Integrity Protection
(SIP). Lowering SIP is mandatory for applying root-patches with OCLP to the system volume to re-enable legacy hardware since it cannot be enabled by injecting settings and kexts via OpenCore alone alone. But if these 2 SIP flags are active, you won't receive System Update Notifications any longer. Since re-installing files on the system partition also breaks its security seal,SecureBootModel
has to be disabled in order to boot the system afterwards. - Using an SMBIOS of one of the Mac models listed above in combination with
SecureBootModel
set toDisabled
(instead of using the correct "J" value). - Using boot-arg
-no_compat_check
which allows booting with an unsupported board-id but it also disables system updates.
In conclusion: in order to be able to boot the system with the designated SMBIOS, patched-in drivers and receive system updates, the Board-ID VMM spoof is the only workaround.
- Mount your EFI
- Open your
config.plist
with ProperTree - Copy the "Skip Board ID check" patch from OCLP's
Booter/Patch
section to yourconfig.plist
and enable it. - Add
RestrictEvent.kext
1.1.3 or newer to yourEFI/OC/Kext
folder andconfig.plist
- Delete
-no_compat_check
boot-arg (if present) - Add
revpatch=sbvmm
to boot-args or as as an NVRAM variable:
- Optional (but recommended): Under
PlatformInfo/Generic
, pick the correct/designated SMBIOS for your CPU family/system and generate new serials, etc (with OCAT or GenSMBIOS for example) - Save your config and reboot.
- Install macOS 12 or newer.
Proof that the spoof is working (Click to reveal)
I tested the Board-id vmm spoof on my Lenovo T530 Notebook (Ivy Bridge), using the MacBookPro10,1
SMBIOS, which is officially not compatible with macOS Monterey. After rebooting, the system started without using -no_compat_check
boot-arg, as you can see here:
Terminal shows the currently used Board-ID which belongs to the MacBookPro10,1
SMBIOS as you can see in Clover Configurator. Usually, running macOS 12+ would require SMBIOS MacBookPro11,4
which uses a different Board-ID:
Next, I checked for updates and was offered macOS 12.1 beta:
Which I installed…
Installation went smoothly and macOS 12.1 booted without issues:
- After upgrading to macOS 12+, you have to re-install graphics drivers for legacy iGPUs/dGPUs that are no longer supported by macOS, such as: Intel HD Graphics (Ivy Bridge to Skylake), NVIDIA Kepler and AMD Vega, Polaris and GCN. To do so, you can use OpenCore Patcher GUI App
- For getting macOS Ventura and newer to work on unsupported platforms, check the OCLP Wintel section for detailed configuration guides (1st to 6th Gen Intel Core CPUs).
- VMM Usage Notes
- Dortania for OpenCore Legacy Patcher
- parrotgeek1 for VMM Patches
- reenigneorcim for SurPlus