Merge branch 'main' into sequoia-development

This commit is contained in:
Mykola Grymalyuk
2024-09-02 11:41:54 -06:00
7 changed files with 56 additions and 15 deletions
+5
View File
@@ -12,6 +12,11 @@
- Implement new Copy on Write detection mechanism for all file copying operations - Implement new Copy on Write detection mechanism for all file copying operations
- Implemented using `getattrlist` and `VOL_CAP_INT_CLONE` flag - Implemented using `getattrlist` and `VOL_CAP_INT_CLONE` flag
- Helps improve performance on APFS volumes - Helps improve performance on APFS volumes
- Increase model range for S1X/S3X patching to include Haswell Macs and `MacPro6,1`
- Helps avoid an issue where older machines with newer, unsupported SSDs would fail to boot
- Only affects building EFI from another machine
- Resolve AMD Navi MXM GPU detection for modded iMac9,x-12,x
- Thanks @Ausdauersportler for the patch!
- Increment Binaries: - Increment Binaries:
- PatcherSupportPkg 1.6.3 - release - PatcherSupportPkg 1.6.3 - release
+16 -8
View File
@@ -1,9 +1,25 @@
# Supported Models # Supported Models
### Application requirements
The patcher application requires **OS X Yosemite 10.10** or later to run.
* **OS X El Capitan 10.11** or later is required to make installers for macOS Ventura and later.
The patcher is designed to target **macOS Big Sur 11.x to macOS Sonoma 14.x**.
* Other versions may work, albeit in a broken state. No support is provided for any version outside of the above.
-------
Any Intel-based Mac listed below can install and make use of OpenCore Legacy Patcher. To check your hardware model, open System Information and look for the `Model Identifier` key. Any Intel-based Mac listed below can install and make use of OpenCore Legacy Patcher. To check your hardware model, open System Information and look for the `Model Identifier` key.
* This applies even if Apple supports the model natively. * This applies even if Apple supports the model natively.
* OpenCore Legacy Patcher does not support PowerPC- or Apple Silicon-based Macs. * OpenCore Legacy Patcher does not support PowerPC- or Apple Silicon-based Macs.
* If your model is not listed below, it is not supported by this patcher. * If your model is not listed below, it is not supported by this patcher.
::: warning Note
It is **extremely recommended** to update your Mac to its latest native version before using OpenCore Legacy Patcher, to ensure you're on the highest firmware.
:::
The below tables can be used to reference issues with a particular model, and see which OS would work best on your machine. The below tables can be used to reference issues with a particular model, and see which OS would work best on your machine.
* [MacBook](#macbook) * [MacBook](#macbook)
* [MacBook Air](#macbook-air) * [MacBook Air](#macbook-air)
@@ -13,14 +29,6 @@ The below tables can be used to reference issues with a particular model, and se
* [Mac Pro](#mac-pro) * [Mac Pro](#mac-pro)
* [Xserve](#xserve) * [Xserve](#xserve)
::: details OpenCore Patcher application
The patcher application requires **OS X Yosemite 10.10** or later to run.
* **OS X El Capitan 10.11** or later is required to make installers for macOS Ventura and later.
The patcher is designed to target **macOS Big Sur 11.x to macOS Sonoma 14.x**.
* Other versions may work, albeit in a broken state. No support is provided for any version outside of the above.
:::
### MacBook ### MacBook
+24
View File
@@ -8,6 +8,7 @@ Here are some common errors that users may experience while using this patcher:
* [Cannot boot macOS without the USB](#cannot-boot-macos-without-the-usb) * [Cannot boot macOS without the USB](#cannot-boot-macos-without-the-usb)
* [Infinite Recovery OS Booting](#infinite-recovery-os-reboot) * [Infinite Recovery OS Booting](#infinite-recovery-os-reboot)
* [Stuck on boot after root patching](#stuck-on-boot-after-root-patching) * [Stuck on boot after root patching](#stuck-on-boot-after-root-patching)
* ["Unable to resolve dependencies, error code 71" when root patching](#unable-to-resolve-dependencies-error-code-71-when-root-patching)
* [Reboot when entering Hibernation (`Sleep Wake Failure`)](#reboot-when-entering-hibernation-sleep-wake-failure) * [Reboot when entering Hibernation (`Sleep Wake Failure`)](#reboot-when-entering-hibernation-sleep-wake-failure)
* [How to Boot Recovery through OpenCore Legacy Patcher](#how-to-boot-recovery-through-opencore-legacy-patcher) * [How to Boot Recovery through OpenCore Legacy Patcher](#how-to-boot-recovery-through-opencore-legacy-patcher)
* [Stuck on "Your Mac needs a firmware update"](#stuck-on-your-mac-needs-a-firmware-update) * [Stuck on "Your Mac needs a firmware update"](#stuck-on-your-mac-needs-a-firmware-update)
@@ -104,7 +105,30 @@ cd "/Volumes/Macintosh HD - Data/Library/Extensions" && ls | grep -v "HighPoint*
Then restart and now your system should be restored to the unpatched snapshot and should be able to boot again. Then restart and now your system should be restored to the unpatched snapshot and should be able to boot again.
## "Unable to resolve dependencies, error code 71" when root patching
If you're getting this error, it typically means you have some offending kernel extensions, to fix this you will have to clear them.
Semi-automated way:
1. Open Terminal
2. Type `sudo zsh`
3. Type `cd "/Volumes/Macintosh HD/Library/Extensions" && ls | grep -v "HighPoint*\|SoftRAID*" | xargs rm -rf`
* Make sure to rename "Macintosh HD" to what your drive name is
4. Run OCLP root patcher again
Manual way:
1. Navigate to /Library/Extensions
2. Delete everything **except** HighPointIOP.kext, HighPointRR.kext and SoftRAID.kext
3. Run OCLP root patcher again
If there is no success, navigate to "/Library/Developer/KDKs" and delete everything.
If still no success, type `sudo bless --mount "/Volumes/Macintosh HD/" --bootefi --last-sealed-snapshot`
* Make sure again to rename "Macintosh HD" to what your drive name is
Run OCLP root patcher again.
## Reboot when entering Hibernation (`Sleep Wake Failure`) ## Reboot when entering Hibernation (`Sleep Wake Failure`)
@@ -142,11 +142,15 @@ class BuildGraphicsAudio:
iMac MXM dGPU Backlight DevicePath Detection iMac MXM dGPU Backlight DevicePath Detection
""" """
if not self.constants.custom_model and self.computer.dgpu and self.computer.dgpu.pci_path: if not self.constants.custom_model:
for i, device in enumerate(self.computer.gpus): for i, device in enumerate(self.computer.gpus):
logging.info(f"- Found dGPU ({i + 1}): {utilities.friendly_hex(device.vendor_id)}:{utilities.friendly_hex(device.device_id)}") logging.info(f"- Found dGPU ({i + 1}): {utilities.friendly_hex(device.vendor_id)}:{utilities.friendly_hex(device.device_id)}")
self.config["#Revision"][f"Hardware-iMac-dGPU-{i + 1}"] = f"{utilities.friendly_hex(device.vendor_id)}:{utilities.friendly_hex(device.device_id)}" self.config["#Revision"][f"Hardware-iMac-dGPU-{i + 1}"] = f"{utilities.friendly_hex(device.vendor_id)}:{utilities.friendly_hex(device.device_id)}"
# Work-around for AMD Navi MXM cards with PCIe bridge
if not self.computer.dgpu:
self.computer.dgpu=self.computer.gpus[i]
if device.pci_path != self.computer.dgpu.pci_path: if device.pci_path != self.computer.dgpu.pci_path:
logging.info("- device path and GFX0 Device path are different") logging.info("- device path and GFX0 Device path are different")
self.gfx0_path = device.pci_path self.gfx0_path = device.pci_path
@@ -150,9 +150,10 @@ class BuildStorage:
# Restore S1X/S3X NVMe support removed in 14.0 Beta 2 # Restore S1X/S3X NVMe support removed in 14.0 Beta 2
# Apple's usage of the S1X and S3X is quite sporadic and inconsistent, so we'll try a catch all for units with NVMe drives # Apple's usage of the S1X and S3X is quite sporadic and inconsistent, so we'll try a catch all for units with NVMe drives
# Additionally expanded to cover all Mac models with the 12+16 pin SSD layout, for older machines with newer drives
if self.constants.custom_model and self.model in smbios_data.smbios_dictionary: if self.constants.custom_model and self.model in smbios_data.smbios_dictionary:
if "CPU Generation" in smbios_data.smbios_dictionary[self.model]: if "CPU Generation" in smbios_data.smbios_dictionary[self.model]:
if cpu_data.CPUGen.broadwell <= smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.CPUGen.kaby_lake: if (cpu_data.CPUGen.haswell <= smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.CPUGen.kaby_lake) or self.model in [ "MacPro6,1" ]:
support.BuildSupport(self.model, self.constants, self.config).enable_kext("IOS3XeFamily.kext", self.constants.s3x_nvme_version, self.constants.s3x_nvme_path) support.BuildSupport(self.model, self.constants, self.config).enable_kext("IOS3XeFamily.kext", self.constants.s3x_nvme_version, self.constants.s3x_nvme_path)
# Apple RAID Card check # Apple RAID Card check
@@ -193,4 +194,4 @@ class BuildStorage:
if self.constants.apfs_trim_timeout is False: if self.constants.apfs_trim_timeout is False:
logging.info(f"- Disabling APFS TRIM timeout") logging.info(f"- Disabling APFS TRIM timeout")
self.config["Kernel"]["Quirks"]["SetApfsTrimTimeout"] = 0 self.config["Kernel"]["Quirks"]["SetApfsTrimTimeout"] = 0
@@ -107,7 +107,6 @@ class KernelCacheSupport:
return updated_install_location return updated_install_location
def clean_auxiliary_kc(self) -> None: def clean_auxiliary_kc(self) -> None:
""" """
Clean the Auxiliary Kernel Collection Clean the Auxiliary Kernel Collection
@@ -405,9 +405,9 @@ class PatchSysVolume:
destination_folder_path = str(self.mount_location_data) + install_patch_directory destination_folder_path = str(self.mount_location_data) + install_patch_directory
updated_destination_folder_path = kc_support_obj.add_auxkc_support(install_file, source_folder_path, install_patch_directory, destination_folder_path) updated_destination_folder_path = kc_support_obj.add_auxkc_support(install_file, source_folder_path, install_patch_directory, destination_folder_path)
if updated_destination_folder_path != destination_folder_path:
if kc_support_obj.check_kexts_needs_authentication(install_file) is True: if kc_support_obj.check_kexts_needs_authentication(install_file) is True:
self.constants.needs_to_open_preferences = True self.constants.needs_to_open_preferences = True
if destination_folder_path != updated_destination_folder_path: if destination_folder_path != updated_destination_folder_path:
# Update required_patches to reflect the new destination folder path # Update required_patches to reflect the new destination folder path