Skip to content

Latest commit

 

History

History
321 lines (249 loc) · 34 KB

Nehalem-Westmere-Lynnfield.md

File metadata and controls

321 lines (249 loc) · 34 KB

Installing macOS Ventura and newer on legacy Intel CPUs

OpenCore Version macOS

TABLE of CONTENTS (Click to reveal)

About

Besides installing macOS Ventura+ on unsupported platforms like Sandy/Ivy Bridge, Haswell/Broadwell and Skylake, it is also be possible to install it on 1st Gen Intel Core CPUs using OpenCore and the OpenCore Legacy Patcher (OCLP).

⚠️ Important Status Updates
All good.

Disclaimer

This guide is intended to provide general information for adjusting your EFI and config.plist to install and run macOS Monterey and newer on unsupported Wintel systems. Since I only have an iMac11,3 that uses an i7-870 to check the kext and settings it uses, this guide must be considered experimental! I created it to lay out the basic principle of how one could go about attempting to install macOS 13+ on ancient harwdware – it's not a given that it'll work! So please refrain from using the "report issue" function to seek individualized assistance for fixing your config. Such issue reports will be closed immediately!

CPU Requirements

In order to check if your system is potentially capable of installing and running macOS, you need to verify that your CPU fulfills the minimum CPU requirements, which are:

  1. A 64-bit Intel CPU modle which has been used in Apple Macs (so no Atoms, Celerons and Pentiums)
  2. CPU must support SSE4.2 in order to boot macOS 10.14 Mojave and newer

Potential Candidates

1st Gen Intel Core CPUs. Check this list to find out if your CPU is supported and which SMBOS is suitable.

Patching Principle

In macOS Ventura and newer, support for CPU families prior to Kaby Lake was dropped. For Sandy Bridge and older this mainly affects:

  • CPU instructions:
  • CPU Power Management (removed ACPI_SMC_PlatformPlugin)
  • iGPU, dGPU and Metal support
  • USB 1.1 support
  • Legacy Ethernet and Wi-Fi

So what we will do is prepare the config with the required patches, settings and kexts for installing and running macOS 13+ and then add back iGPU/GPU drivers (and whatever else is missing) in Post-Install using OpenCore Legacy Patcher.

Precautions and Limitations

This is what you need to know before attempting to install macOS Monterey and newer on unsupported systems:

  • ⚠️ Backup your working EFI folder on a FAT32 formatted USB Flash Drive just in case something goes wrong because we have to modify the config and content of the EFI folder.
  • USB Support: Ventura dropped USB 1.1 protocol completely and also deleted some USB port mappings. So you probably have to map it manually.
  • iGPU/GPU:
    • Check if your iGPU/GPU is supported by OCLP. Although Drivers for Intel, NVIDIA and AMD cards can be added in Post-Install, the list is limited
    • AMD Navi Cards (Radeon 5xxx and 6xxx) can't be used with pre-Haswell CPUs since they require the AVX 2.0 instruction set which is only available on Haswell and newer.
  • Networking:
    • For Ethernet, there are kexts for legacy LAN controllers available here
    • Wifi and Bluetooth:
      • For enabling Broadcom Wifi/BT Cards, you will need a different set of kexts to load which need to be controlled via MinKernel and MaxKernel settings. On macOS 12.4 and newer, a new address check has been introduced in bluetoothd, which will trigger an error if two Bluetooth devices have the same address. This can be circumvented by adding boot-arg -btlfxallowanyaddr (provided by BrcmPatchRAM kext).
      • Same applies to Intel WiFi/BT cards using OpenIntelWirless kexts
      • Enabling Wifi in macOS Sonoma requires additional kext and also applying root patches in Post-Install!
  • Security: Modifying the system with OCLP Requires SIP, Apple Secure Boot and AMFI to be disabled so there are some compromises in terms of security.
  • System Updates:
    • Incremental (or delta) updates won't be available after applying root patches with OCLP. Instead, the whole macOS Installer will be downloaded every time (approx. 12 GB)!
    • ⚠️ Don't install Security Response Updates (RSR) introduced in macOS 13! They will fail to install on pre-Haswell systems. More info here.
  • Other: Check the links below for in-depth documentation about components/features that have been removed from macOS 12 and newer and the impact this has on systems prior to Kaby Lake. But keep in mind that this was written for real Macs so certain issues don't apply to Wintel systems.

Preparations

I assume you already have a working OpenCore configuration for your legacy system. Otherwise follow Dortania's OpenCore Install Guide to create one. The instructions below are only additional steps required to be able to install and boot macOS Monterey and newer.

Update OpenCore and kexts

Update OpenCore to 0.9.2 or newer (mandatory). Because prior to 0.9.2, AppleCpuPmCfgLock Quirk is skipped when macOS Ventura is running so the kexts required for re-enabling SMC CPU Power Management can't be injected and the system won't boot unless you have a (modded) BIOS where CFG Lock can be disabled. To check which version of OpenCore you're currently using, run the following commands in Terminal:

nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version
  • Update your kexts to the latest version as well to avoid compatibility issues with macOS!
  • If you're having issues during install deactivate non-essential kexts.

Config Edits

Listed below, you find the required modifications to prepare your config.plist and EFI folder for installing macOS Monterey or newer.

💡 If your system (or components thereof) doesn't work afterwards, please refer to OCLP's patch documentation and see if need additional settings or kexts.

Config Section Action Description
ACPI/Add Add SSDT-CPBG.aml Patches CPBG for Arrandale, Lynnfield and Clarkdale. If your system's ACPI tables doesn't contain this device, you probably don't need this.
ACPI/Quirks Set Quirks as needed Refer to OpenCore Install Guide for your CPU family.
Booter/Patch Add and enable the following Booter patch from OCLP's config:
  • Skips board-id check.
  • In combination with ResterictEvents kext, this allows:
    • Booting macOS with unsupported, native SMBIOS best suited for your CPU
    • Installing Sytsem Updates on unsupported systems
  • More Details
Kernel/Add and
EFI/OC/Kexts
Add the following Kexts: WiFi (optional) Delete the following Kexts from EFI/OC/Kexts and config (if present):
  • CPUFriend
  • CPUFriendDataProvider
    • AutoPkgInstaller: For applying root-patches during macOS istallation automatically. Requires preparation of the installer (Details)
    • AMFIPass: Kext from OCLP. Allows booting macOS 12+ without disabling AMFI.
    • ASPP-Override: Prioritizes plugin-type 0 over plugin-type 1 so SMC CPU Power Management works.
    • Cryptexfixup: Required for installing and booting macOS 13+ on systems without AVX 2.0 support (→ OCLP Support Issue #998)
    • NoAVXFSCompressionTypeZlib kexts: Work-around to prevent Zlib kernel panic
    • RestrictEvents: Forces VMM SB model, allowing OTA updates for unsupported models on macOS 11.3 or newer. Requires additional NVRAM parameters.
    • AppleIntelCPUPowerManagement kexts: Required for re-enabling SMC CPU Power Management (more details)
    • FeatureUnlock: Can enable/disable features like NightShift, Sidecar, Universal Control, ect. On older systems, it's used to disable features if the hardware and SMBIOS requirements are not fulfilled.
    • WiFi Kexts: For macOS Sonoma. Re-Enable modern WiFi: BCM94350, BCM94360, BCM43602, BCM94331 and BCM943224. Legacy WiFi: Atheros chipsets, Broadcom BCM94322, BCM94328.
Kernel/Block Block com.apple.iokit.IOSkywalkFamily:
Blocks macOS'es IOSkywalk kext, so the injected one will be used instead. Only required for "Modern" Wifi Cards (→ Wifi Patching Guide).
Kernel/Emulate Disable DummyPowermanagement (if enabled) If you imject the Kexts to re-instatate ACPI CPU Power Management on macOS13+ while this setting is still enabled, the system will freeze 10 to 15 seconds after booting.
Kernel/Patch Add and enable the following Kernel Patches from OCLP (apply MinKernel and MaxKernel settings as well):
  • Force FileVault on Broken Seal (optional)
  • "SurPlus v1 - PART 1 of 2"
  • "SurPlus v1 - PART 2 of 2"
  • "Disable Library Validation Enforcement"
  • "Disable _csr_check() in _vnode_check_signature"
  • Fix PCI bus enumeration (Ventura)
  • Fix PCI bus enumeration (Sonoma)
  • Force FileVault on Broken Seal is only required when using FileVault
  • SurPlus patches: required for Sandy Bridge and older.
  • "Disable _csr_check() in _vnode_check_signature" might not be necessary. Try for yourself.
  • Fix PCI bus enumeration patches fix internal PCIe devices showing up as express cards in the menu bar: Sreenshot
NOTE: Kernel VMM patches are no longer needed since RestrictEvents handles this now!
NVRAM/Add/...-4BCCA8B30102 Add the following Keys:
  • Key: OCLP-Settings
    Type: String
    Value: -allow_amfi
  • Key: revblock
    Type: String
    Value: media
  • Key: revpatch
    Type: String
    Value: sbvmm,f16c
  • Settings for OCLP and RestrictEvents.
  • media: Blocks mediabranalysisd service on Ventura+ (for Metal 1 GPUs)
  • sbvmm,f16c → Enables OTA updates and addresses graphics issues in macOS 13 (check RestrictEvents documentation for details)
Misc/Security
  • SecureBootModel: Disabled
  • Vault: Optional
Required when patching in graphics drivers for AMD and NVIDIA cards. Intel HD graphics might work with SecureBootModel set to Default. Try for yourself.
NVRAM/Delete/...-4BCCA8B30102 (Array) Add the following Strings:
  • OCLP-Settings
  • revblock
  • revpatch
Deletes NVRAM for these parameters before writing them. Otherwise you would need to perform an NVRAM reset every time you change any of them in the corresponding Add section.
NVRAM/Add/...-FE41995C9F82 Change csr-active-config to 03080000

Add the followingboot-args:
  • amfi_get_out_of_my_way=0x1 or amfi=0x80 (same)
  • ipc_control_port_options=0
  • -disable_sidecar_mac
Optional boot-args for GPUs (Select based on GPU Vendor):
  • -radvesa
  • nv_disable=1
  • ngfxcompat=1
  • ngfxgl=1
  • nvda_drv_vrl=1
  • agdpmod=vit9696
  • -nokcmismatchpanic
  • vsmcgen=1 or vsmcgen=2
  • amfi=0x80: Disables Apple Mobile File Integrity validation. Required for applying Root Patches with OCLP and booting macOS 12+. 💡 No longer needed for booting thanks to AMFIPass.kext – only for installing Root Patches with OCLP. Disabling AMFI causes issues with 3rd party apps' access to Mics and Cameras.
  • ipc_control_port_options=0: Required for Intel HD 3000. Fixes issues with Firefox and electron-based apps like Discord.
  • -disable_sidecar_mac: For FeatureUnlock → Disables Sidecar/AirPlay/Universal Control patches because they are not supported by the hardware.
  • -radvesa (AMD only): Disables hardware acceleration and puts the card in VESA mode. Only required if your screen turns off after installing macOS 12+. Once you've installed the GPU drivers with OCLP, disable it so graphics acceleration works!
  • nv_disable=1 (NVIDIA only): Disables hardware acceleration and puts the card in VESA mode. Only required if your screen turns off after installing macOS Ventura+. Kepler Cards switch into VESA mode automatically without it. Once you've installed the GPU drivers with OCLP, disable it so graphics acceleration works!
  • ngfxcompat=1 (NVIDIA only): Ignores compatibility check in NVDAStartupWeb. Not required for Kepler GPUs
  • ngfxgl=1 (NVIDIA only): Disables Metal Spport so OpenGL is used for rendering instead. Not required for Kepler GPUs.
  • nvda_drv_vrl=1 (NVIDIA only): Enables Web Drivers. Not required for Kepler GPUs.
  • agdpmod=vit9696 → Disables board-id check. Useful if screen turns black after booting macOS which can happen after installing NVIDIA Webdrivers.
  • -wegnoigpu → Optional. Disables the iGPU in macOS. ONLY required when using an AMD GPU and an SMBIOS for a CPU without on-board graphics (i.e. iMacPro1,1 or MacPro7,1) to let the GPU handle background rendering and other tasks. Requires Polaris or Vega cards to work properly (Navi is not supported by OCLP). Combine with unfairgva=x bitmask (x= 1 to 7) to address DRM issues.
  • -nokcmismatchpanic → Suppresses some potential Kernel Panics
  • vsmcgen=X → Force exposing X-gen SMC device (1 and 2 are supported).
EFI/OC/Drivers Add the following Drivers to EFI/OC/Drivers and your config:
  • ExFatDxeLegacy.efi
  • ResetNvramEntry.efi and settings:
    resetnvram
  • ExFatDxeLegacy.efi: Enables ExFat support on legacy systems
  • ResetNvramEntry.efi: Adds a boot menu entry to perform an NVRAM reset without resetting the order of the boot drives. Requires a UEFI BIOS.

Caution

Don't add the NVRAM parameter OCLP-Version to your config – it's meant for real Macs only! It checks if your config.plist is up to par with the one provided by OCLP. If the version in your config is lower, a pop-up will appear asking you if you would like to update OpenCore:

oclp-version

If you would press "OK" in this scenario, your OC folder would be replaced by the one created for the corresponding Mac model leaving your macOS installation in an unbootable state!

Tip

To find clues about other Kexts, Settings and Boot-args that may be required for your legacy CPU, you can use OpenCore Legacy Patcher to generate an EFI folder and check it's contents and the config.plist:

  • Run the OpenCore Patcher App.
  • Under Settings select the Target Model that uses a CPU of the same family as yours (research on www.everymac.com to figure out which Mac uses your type of CPU) and press Return.
  • In the main window, the option "Build and Install OpenCore" will now be available. Click on it. This will buiöd the EFI folder and config for the selected Mac model.
  • DON'T install it! Instead, click on "View Build log". Copy the path listed at the end of the log.
  • In Finder, press CMD+SHIFT+G, paste the addres and hit Enter to go to the temporary location that contains the "Build Folder" with the OpenCore EFI and config for the selected Mac model. Copy it to the desktop and check it for clues.

Testing the changes

Once you've added the required kexts and made the necessary changes to your config.plist, save, reboot and perform an NVRAM Reset. Your system must boot successfully with the applied changes – otherwise don't continue! If it does still boot, you can now prepare your system for installing macOS 13.

Adjusting the SMBIOS

If your system reboots successfully, we need to edit the config one more time and adjust the SMBIOS depending on the macOS Version currently installed.

When Upgrading from macOS Big Sur 11.3+

When upgrading from macOS 11.3 or newer, we can use macOSes virtualization capabilities to trick it into "believing" that it is running in a VM so spoofing a compatible SMBIOS is no longer a requirement. So pick the SMBIOS best suited for your CPU family (→ see "Potential Candidates" section or check everymac.com).

When Upgrading from macOS Catalina or older

Since macOS Catalina and older lack the virtualization capabilities required to apply the VMM Board-ID spoof, switching to a supported SMBIOS temporarily is mandatory in order to be able to install macOS Ventura and newer. Otherwise you will be greeted by the crossed-out circle instead of the Apple logo when trying to boot.

Supported SMBIOSes:

  • Desktop:
    • iMac18,1 or newer
    • MacPro7,1 or iMacPro1,1 (High End Desktops)
  • Laptop:
    • MacBookPro14,1 or
    • MacBookAir8,1
  • NUC:
    • Macmini8,1
  • Generate new Serials using GenSMBIOS

Note

Once macOS 12 or newer is installed, you can switch to an SMBIOS designated for your CPU for optimal CPU Power Management. This is rather important since you cannot use ssdtPRGen on first Gen Intel Core and Xeon CPUs.

macOS installation

With all the prep work out of the way you can now upgrade to macOS Ventura or newer. Depending on the version of macOS you are coming from, the installation process differs.

Getting macOS

  • Download the latest release of OpenCore Patcher GUI App and run it
  • Click on "Create macOS Installer"
  • Click on "Download macOS Installer"
  • Select the macOS version you want to install
  • Once the download is completed the "Install macOS…" app will be located in your "Programs" folder

Note

OCLP can also create a USB installer if you want to perform a clean install (highly recommended). Creating a USB installer is a necessity if you want to install an older OS since macOS does not allow downgrading.

Option 1: Upgrading from macOS 11.3 or newer

Only applicable when upgrading from macOS 11.3+. If you are on macOS Catalina or older, use Option 2 instead.

  • Run the "Install macOS…" App
  • There will be a few reboots
  • Boot from the new "Install macOS…" partition until it's no longer present in the Boot Picker

Once the installation is completed and the system boots, it will run without graphics acceleration if you only have an iGPU or if you GPU is not supported by the newer macOS version. We will address this in Post-Install.

Option 2: Upgrading from macOS Catalina or older

When upgrading from macOS Catalina or older a clean install from USB flash drive is recommended. To create a USB Installer, you can use OpenCore Legacy Patcher:

  • Run Disk utility
  • Create a new APFS Volume on your internal HDD/SSD or use a separate internal disk (at least 60 GB in size) for installing macOS 13 – DON'T install it on an external drive – it won't boot!
  • Attach an empty USB flash drive for creating the installer (16 GB+)
  • Run OCLP and follow the instructions
  • Once the USB Installer has been created, do the following:
    • Copy the OpenCore-Patcher App to the USB Installer
    • Add Optional tools (Optional, in case internet is not working):
      • Add Python Installer
      • Add MountEFI
      • Add ProperTree
  • Reboot
  • Select "Install macOS Ventura" from the BootPicker
  • Install macOS Ventura on the volume you prepared earlier
  • There will be a few reboots during installation. Boot from the new "Install macOS" Partition until it's no longer present in the Boot Picker
  • Once the macOS Ventura installation is finished, switch back to an SMBIOS best suited for your CPU as mentioned earlier.

After the installation is completed and the system boots it will run without hardware graphics acceleration if you only have an iGPU or if you GPU is no longer supported by macOS. We will address this in Post-Install.

Post-Install

OpenCore Legacy patcher can re-install components which were removed from macOS, such as Graphics Drivers, Frameworks, etc. This is called "root patching". For Wintel systems, we will make use of it to install iGPU and GPU drivers primarily.

Installing Drivers for other GPUs

  • For Sandy Bridge and older, no iGPU drivers are available. You need a dedicated GPU supported by OCLP
  • If your GPU is supported by OCLP, it detects it automatically and if it has drivers for it, they can be installed. Afterwards, GPU Hardware Acceleration should work. Note that additional settings in OCLP may be required based on the GPU you are using.
  • After the drivers have been installed, disable the following boot-args prior to rebooting to re-enable GPU graphics acceleration:
    • -radvesa – put a # in front to disable it: #-radvesa
    • nv_disable=1 – put a # in front to disable it: #nv_disable=1

Important

Prior to installing macOS updates you may have to re-enable boot-args for AMD and NVIDIA GPUs to put them into VESA mode so you have a picture and not a black screen!

Verifying SMC CPU Power Management

To verify that SMC CPU Power Management is working, enter the following command in Terminal:

sysctl machdep.xcpm.mode

If the output is 0, the legacy ACPI_SMC_PlatformPlugin is used for CPU Power Management and everything is ok. If the output is 1, the X86PlatformPlugin for XCPM is active, which is not good since Sandy Bridge CPUs don't support XCPM. In this case, check if the necessary kexts for SMC CPU Power Management were injected by OpenCore. Enter in Terminal:

kextstat | grep com.apple.driver.AppleIntelCPUPowerManagement

This should result in the following output:

com.apple.driver.AppleIntelCPUPowerManagement (222.0.0)
com.apple.driver.AppleIntelCPUPowerManagementClient (222.0.0) 

If the 2 kexts are not present, they were not injected. So check your config and EFI folder again. Also ensure that the AppleCpuPmCfgLock Quirk is enabled.

Optimizing CPU Power Management

Once you've verified that SMC CPU Power Management (plugin-type 0) is working, monitor the behavior of the CPU using Intel Power Gadget. If it doesn't reach its maximum turbo frequency or if the base frequency is too high/low or if the idle frequency is too high, generate an SSDT-PM to optimize CPU Power Management.

Removing/Disabling boot-args

After macOS Ventura is installed and OCLP's root patches have been applied in Post-Install, remove or disable the following boot-args:

  • ipc_control_port_options=0: ONLY when using a dedicated GPU. You still need it when using the Intel HD 4000 so Firefox and electron-based apps will work.
  • amfi_get_out_of_my_way=0x1: ONLY needed for re-applying root patches with OCLP after System Updates
  • Change -radvesa to #-radvesa → This disables the boot-arg which in return re-enables hardware acceleration on AMD GPUs.
  • Change nv_disable=1 to #nv_disable=1 → This disables the boot-arg which in return re-enables hardware acceleration on NVIDIA GPUs.

Note

Keep a backup of your currently working EFI folder on a FAT32 formatted USB flash drive just in case your system won't boot after removing/disabling these boot-args!

Verifying AMFI is enabled

We can check whether or not AMFI is enabled by entering the following command in Terminal:

sudo /usr/sbin/nvram -p | /usr/bin/grep -c "amfi_get_out_of_my_way=1"
  • The desired output is 0: this means, the amfi_get_out_of_my_way=1 boot-arg which disables AMFI is not present in NVRAM which indicates that AMFI is enabled. This is good.
  • If the output is 1: this means, the amfi_get_out_of_my_way=1 boot-arg which disables AMFI is present in NVRAM which indicates that AMFI is disabled.

Since the new AMFIPass.kext allows booting macOS with applied root patches and SIP as well as SecureBootModel disabled but AMFI enabled, we want the output to be 0!

OCLP and System Updates

Re-applying root patches after System Updates

The major advantage of using OCLP over other Patchers is that it remains on the system even after installing System Updates. After an update, it detects that the graphics drivers are missing and asks you, if you want to to patch them in again, as shown in ths example:

Notify

You just click on "Okay" and the drivers will be re-installed. After the obligatory reboot, everything will be back to normal.

OCLP App Update Notifications

OCLP can also inform you about availabled updates of the Patcher app itself. But this requires adding the key OCLP-Versionto the NVRAM/Add section of your config.plist:

OCLPver01

This ke is optional for Hackintosh users, since the OCLP app also informs you about updates once you run it. If you choose to add it to your config, you also have to add a reset key to the corresponding NVRAM/Delete section, so that new values can be applied:

OCLPver03

After that, you will be notified whenever an update for the OpenCore Patcher is available:

OCLPver02

Note that this Pop-up refers to "OpenCore" and not the Patcher because OCLP was designed with real Macs and Mac users in mind. For "regular" Mac users, using OCLP is most likely the only way they update OpenCore, config and kexts. So after downloading the latest OCLP update, they, just rebuild the EFI, mount the ESP, replaces the EFI/OC folder, apply reoo patches, reboot and that's it.

But as Hackintosh users, we only care about the App updates to apply new, updated or refined root patches for iGPUs, Wi-FI, etc. Please keep in mind that you have to manually adjust the OCLP version number after each update so that you won't be notified about a possibly outdated patcher app although the newest version is installed already. So adding the OCLP-Version Key to a Hackintosh build is not really a necessity.

Tip

If your system won't boot after patching it with OpenCore Legacy Patcher, you have several options to revert root patches.

Notes

  • Applying Root Patches to the system partition breaks its security seal. This affects System Updates: every time a System Update is available, the FULL Installer (about 12 GB) will be downloaded. There is a workaround to this but it's only applicable to Haswell/Broadwell and newer.
  • After each System Update, the iGPU/GPU drivers have to be re-installed. OCLP will take care of this. Just make sure to re-enable the appropriate boot-args to put AMD/NVIDIA GPUs in VESA mode prior to updating/upgrading macOS.
  • ⚠️ You cannot install macOS Security Response Updates (RSR) on pre-Haswell systems. They will fail to install (more info here).

Further Resources

Credits

  • Acidanthera for OpenCore and numerous Kexts
  • Corpnewt for MountEFI, GenSMBIOS and ProperTree
  • dhinakg for AMFIPass
  • Dortania for OpenCore Legacy Patcher and Guide
  • Rehabman for Laptop framebuffer patches