Skip to content

Latest commit

 

History

History
321 lines (248 loc) · 33.3 KB

File metadata and controls

321 lines (248 loc) · 33.3 KB

Installing macOS Ventura and newer on Skylake systems

OpenCore Version macOS

TABLE of CONTENTS (Click to reveal)

TABLE of CONTENTS

About

Although it is possible to utilize OpenCore and the OpenCore Legacy Patcher (OCLP) to install and run macOS Ventura and newer on machines with 6th Gen Intel Core CPUs (Skylake/Skylake X/W), it's not officially supported nor documented by Dortania – they only support legacy Macs by Apple. That's why I created this guide. Since I no longer own a Skylake system, there might be something I am missing.

⚠️ Important Status Updates
All good.

How Skylake systems are affected

With the release of macOS 13, Apple dropped support for all CPU families prior to Kaby Lake. For Skylake CPUs this mainly affects integrated Graphics and Metal support. So what we will do is prepare the config with the required patches, settings and kexts for installing and running macOS Ventura (or newer) and then add iGPU/GPU drivers in Post-Install using OpenCore Legacy Patcher.

Disclaimer

This guide is intended to provide general information for adjusting your EFI and config.plist to install and run macOS Ventura or newer on unsupported Wintel systems. It is not a comprehensive configuration guide. Please refrain from using the "report issue" function to seek individualized assistance for fixing your config. Such issue reports will be closed immediately!

Precautions and Limitations

This is what you need to know before attempting to install macOS 13 or 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.
  • 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
  • Check if any peripherals you are using are compatible with macOS 12+ (Printers, WiFi and BlueTooth come to mind).
  • 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. 15 GB for the latest OS), since root patching breaks the security seal of the volume! 💡 In Haswell and newer, you can actually workaround this issue by reverting the root patches prior to checking for updates. Then, a regular incremental update will be installed which is much smaller. Afterwards you just have to re-apply the root patches again.
  • 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 Skylake system. Otherwise follow Dortania's OpenCore Install Guide (Desktop, Laptop/NUC, HEDT) to create one. The instructions below only contain additional steps required to install and boot macOS Monterey and newer.

Update OpenCore and kexts

Update OpenCore and kexts to the latest versions to maximize compatibility with macOS. To check which version of OpenCore you're currently using, run the following commands in Terminal:

nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version

Upgrade options

Since Skylake CPUs are relatively new, the only thing which doesn't really work out of the box is on-board grapics, specifically: Intel HD 530/P530/Iris which are only compatible up to macOS Monterey. There are 2 possible upgrade option for installing macOS Ventura or newer, depending on your hardware configuration:

Option 1: Installing macOS 13+ without Root Patches

If you are using a PC and don't have to rely on the iGPU for driving a display and your GPU is compatible with macOS Ventura or newer, you only need to change the SMBIOS and add a Kaby Lake device-id to your iGPU framebuffer as explained here: Enabling Skylake Graphics in macOS 13. Once the iGPU spoof is workin, jump to macOS Installation

Pros and Cons of this method

  • Pros:
    • Requires much less effort
    • Incremental system updates will still work afterwards
  • Cons:
    • Requires Kaby Lake iGPU spoof, which is not 100% compatible
    • CPU Power Management is not optimal (can be addressed by implementing Board-ID VMM spoof and RestrictEvents kext)
    • macOS Sonoma requires SMBIOS iMac19,1 (for Desktop PCs), so CPU Power Management won't be optimal. Use CPUFriendFriend to adjust it.

Option 2: Installing macOS Ventura or newer with Root Patches

While an iGPU spoof works well for systems which use a dedicated GPU for displaying graphics, it's not working so well if the iGPU is required for driving a display becasue these files were removed from macOS. So if you are using a Desktop/Laptop/NUC that relies on the iGPU because it has no dGPU or it is incompatible with macOS 12 or newer (e.g. NVIDIA Kepler Cards) then applying Root Patches in Post-Install with OCLP is the way to go.

Pros and Cons of this method

  • Pros:
    • iGPU is working correctly
    • Legacy GPUs can be enabled (if OpenCore Legacy Patcher has drivers for it)
    • Ideal CPU/GPU Power Management because a native Skylake SMBIOS can be used
  • Cons:
    • Takes more effort to configure
    • Incremental system updates won't work after applying root patches with OCLP. Instead, the full installer (about 12 GB) will be downloaded each time a System Update is available.

Config Edits

Listed below, you find the required modifications to prepare your config and EFI folder for installing macOS Monterey or newer on Skylake systems. I've also prepared a .plist for cross-referencing which contains the necessary settings.

💡 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
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
DeviceProperties/Add PciRoot(0x0)/Pci(0x2,0x0) – Verify/adjust Framebuffer patch.
  • Desktop (Headless)
    • AAPL,ig-platform-id: 01001219
  • Desktop (Default)
    • AAPL,ig-platform-id: 00001219
    iGPU Support: Intel HD 510/515/520/530/540/550/580 and P530.
    • Headless: For systems with an iMac SMBIOS, iGPU and a GPU which is used for graphics. The example in the OC Install Guide is actually wrong.
    • Default: Use this if you have a PC and the iGPU is used for driving a display.
    • Laptops/NUCs: Use the recommended Framebuffer for your device and iGPU listed in the OpenCore Install guide – but DON'T spoof a Kaby Lake device-id!
    Kernel/Add and
    EFI/OC/Kexts
    Add the following Kexts: WiFi (optional) Disable the following Kexts (if present):
    • CPUFriend
    • CPUFriendDataProvider
    • AutoPkgInstaller: For applying root-patches during macOS istallation automatically. Requires preparation of the installer (Details).
    • AMFIPass: Beta kext from OCLP 0.6.7. Allows booting macOS 12+ without disabling AMFI.
    • RestrictEvents: Forces VMM SB model, allowing OTA updates for unsupported models on macOS 11.3 or newer. Requires additional NVRAM parameters.
    • FeatureUnlock: Unlocks AirPlay to Mac.
    • 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/Patch Add and enable the following Kernel Patches from OCLP (apply MinKernel and MaxKernel settings as well):
    • Force FileVault on Broken Seal (optional)
    • "Disable Library Validation Enforcement"
    • "Disable _csr_check() in _vnode_check_signature"
    • Fix PCI bus enumeration (Ventura)
    • Fix PCI bus enumeration (Sonoma)
    NOTE: VMM board-id kernel patches are no longer required since RestrictEvents kext can enable the VMM board-id via sbvmm NVRAM entry!
    • Force FileVault on Broken Seal is only required when using FileVault
    • "Disable _csr_check() in _vnode_check_signature" is not required on my Laptop, but on some Desktops it's needed. Try for yourself.
    • The "Fix PCI bus enumeration" patches fix internal PCIe devices showing up as express cards in the menu bar: Screenshot
    Misc/Security
    • SecureBootModel: Disabled
    • Vault: Optional
    Required when patching in graphics drivers for AMD and NVIDIA GPUs. Intel HD graphics might work with SecureBootModel set to Default. Try for yourself.
    NVRAM/Add/...-4BCCA8B30102 Add the following Keys:
    • Key: OCLP-Settings
      Type: String
      Value: -allow_amfi
    • Key: revpatch
      Type: String
      Value: sbvmm,asset
    • Settings for OCLP and RestrictEvents.
    • sbvmm,asset → Enables OTA updates and content caching (→ Check RestrictEvents documentation for details)
    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
    • When using an NVIDIA GPU, set it to: 030A0000
    Add the followingboot-args:
    • amfi=0x80 (only necessary if root patches can't be applied)
    • ipc_control_port_options=0
    • -disable_sidecar_mac
    Optional boot-args for GPUs (Select based on GPU Vendor):
    • -igfxvesa
    • -radvesa
    • nv_disable=1
    • ngfxcompat=1
    • ngfxgl=1
    • nvda_drv_vrl=1
    • agdpmod=vit9696
    • 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 Graphics. Fixes issues with Firefox and electron-based apps like Discord.
    • -disable_sidecar_mac: For FeatureUnlock → Disables Sidecar/AirPlay/Universal Control patches.
    • -igfvesa (Intel iGPU): Disables Intel iGPU acceleration (optional). Might be required before re-installing Skylake iGPU drivers with OCLP
    • -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. 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
    UEFI/Drivers and
    EFI/OC/Drivers
    • Add ResetNvramEntry.efi to EFI/OC/Drivers
    • And to your config:
      resetnvram
    Adds a boot menu entry to perform an NVRAM reset but without resetting the order of the boot drives. Requires a BIOS with UEFI support.
    PlatformInfo/Generic Adjust SMBIOS:
    • Desktop: iMac17,1
    • Laptop: MacBookPro13,1
    • NUC: iMac17,1
    Read "Adjusting the SMBIOS" for more details!

    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!

    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. If your system still boots fine after that, you can now prepare the 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 thinking that it is running in a VM so spoofing a compatible SMBIOS is no longer a requirement.

    Based on your system, use one of the following SMBIOSes for Skylake CPUs. Open your config.plist and change the SMBIOS in the PlatformInfo/Generic section.

    • For Desktops: iMac17,1
    • For HEDT: iMacPro1,1
    • For Laptops:
      • MacBookPro13,1 = 13″ Display, Core i5, iGPU: Iris 540
      • MacBookPro13,2 = 13″ Display, Core i5, iGPU: Iris 550
      • MacBookPro13,3 = 15″ Display, Core i7, iGPU: HD 530 + GPU: Radeon Pro 450/45
    • For NUC and USDTs: iMac17,1 (Apple never released a MacMini with Skylake CPUs)
    • Generate new Serials using GenSMBIOS or OCAT

    Note

    Once macOS 12 or newer is installed, you can disable the "Reroute kern.hv" and "IOGetVMMPresent" Kernel Patches. RestrictEvents will handle the VMM-Board-id spoof from now on. Only Exception: Before running the "Install macOS" App, you have to re-enable the kernel patches again. Otherwise the installer will say the system is incompatible because of the unsupported SMBIOS it detects.

    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 13 or 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 with GenSMBIOS or OCAT

    Note

    Once macOS is up and running, you can switch to an SMBIOS best suited for your Skylake CPU for optimal CPU Power Management. You can also disable the "Reroute kern.hv" and "IOGetVMMPresent" Kernel Patches. RestrictEvents will handle the VMM-Board-id spoof from now on. Only Exception: Before running the "Install macOS" App, you have to re-enable the kernel patches again. Otherwise the installer will say the system is incompatible because of the unsupported SMBIOS it detects.

    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"
    • Next, click on "Download macOS Installer"
    • Select macOS 13.x (whatever the latest available build is)
    • Once the download is completed, the "Install macOS" app will be located in the "Programs" folder

    Note

    OCLP can also create a USB Installer if you want to perform a clean install (highly recommended)

    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 macOS install entry until it's no longer present in the Boot Picker

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

    Tip

    Instead of upgrading your runnning macOS installation, create a new APFS volume and install macOS on there. This way you can always revert back to your previous macOS installation if you are facing issues with the new macOS version.

    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" from the BootPicker
    • Install macOS Ventura or newer 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 installation is finished, switch back to an SMBIOS best suited for your Skylake CPU.

    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 Intel Skylake Graphics Acceleration Patches (macOS 13+)

    Once you reach the set-up assistant (where you select your language, time zone, etc), you will notice that the system feels super sluggish – that's normal because it is running in VESA mode without graphics acceleration, since the friendly guys at Apple removed the Intel HD 2000/3000 drivers from macOS.

    To bring them back, do the following:

    • Run the OpenCore Patcher App
    • In the OpenCore Legacy Patcher menu, select "Post Install Root Patch":
      Post_Root_Patches
    • Follow the instructions of the Patcher App (I don't have a Skylake CPU, so I can't capture screenshots. I also couldn't find any online.)

    Installing Drivers for other GPUs

    • Works basically the same way as installing iGPU drivers
    • OCLP detects the GPU 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

    Note

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

    Removing/Disabling boot-args

    After macOS 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 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.

    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. But there is a workaround to reduce the size of OTA Updates.
    • 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.

    Further Resources

    Credits

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