mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-04-15 21:28:55 +10:00
Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f1e21eb09 | ||
|
|
213e161458 | ||
|
|
40841407c9 | ||
|
|
5fc24214af | ||
|
|
1383d6ac00 | ||
|
|
04bd4da742 | ||
|
|
67b44851fe | ||
|
|
38def456e0 | ||
|
|
ab864bd3c2 | ||
|
|
29e75171f3 | ||
|
|
1bfeac3f09 | ||
|
|
82310eac1a | ||
|
|
46c350ba32 | ||
|
|
6661089f89 | ||
|
|
069f191359 | ||
|
|
01035019b2 | ||
|
|
0632d1ff7e | ||
|
|
028999f666 | ||
|
|
b686016222 | ||
|
|
9d9226cc83 | ||
|
|
2d597501c4 | ||
|
|
e9e681c272 | ||
|
|
4a9564fe4e | ||
|
|
66435494cc | ||
|
|
a863b5cd54 | ||
|
|
e94f6ac63d | ||
|
|
5e4b124b2a | ||
|
|
67df72290f |
25
CHANGELOG.md
25
CHANGELOG.md
@@ -1,5 +1,30 @@
|
||||
# OpenCore Legacy Patcher changelog
|
||||
|
||||
## 2.2.0
|
||||
- Resolved non-metal accessibility zoom on macOS Sonoma/Sequoia
|
||||
- Resolved non-metal photos app on macOS Sequoia
|
||||
- Resolved non-metal Screen Sharing on macOS Sequoia
|
||||
- Resolved non-metal inverted screenshots on macOS Sequoia
|
||||
- Improved non-metal beta menubar reliability
|
||||
- Disabled non-metal broken weather background animations on macOS Sequoia
|
||||
- Resolved non-metal safari hide distracting items crash on macOS Sequoia
|
||||
- Resolved non-metal full screen transition on macOS Sonoma/Sequoia
|
||||
- Resolved T1 Apple Pay on macOS Sequoia
|
||||
- Resolved T1 TouchID support on macOS Sequoia 15.2
|
||||
- Resolved iCloud sync problems
|
||||
- Resolved JavaScriptCore on pre-AVX Macs on macOS Sequoia 15.2/Safari 18.2
|
||||
- Increment binaries:
|
||||
- PatcherSupportPkg 1.9.1 - release
|
||||
|
||||
## 2.1.2
|
||||
- Add additional error handling for when building OpenCore errors out
|
||||
- Prevents broken EFI from being installed to disk
|
||||
- Add additional error handling for broken settings file from OCLP 2.1.0
|
||||
- If typing for settings is wrong, app will skip setting it, delete from settings file and use default
|
||||
- Delete `/Users/Shared/.com.dortania.opencore-legacy-patcher.plist` and restart app to avoid this issue
|
||||
- Add additional warning about OCLP 2.1.0 bug where certain settings saved incorrectly
|
||||
- Delete `/Users/Shared/.com.dortania.opencore-legacy-patcher.plist` and restart app if `TypeError: unsupported type: <class 'NoneType'>` error occurs
|
||||
|
||||
## 2.1.1
|
||||
- Resolve boolean GUI settings saving incorrectly as Python's None type
|
||||
|
||||
|
||||
21
README.md
21
README.md
@@ -67,8 +67,22 @@ To run the project from source, see here: [Build and run from source](./SOURCE.m
|
||||
* Great amounts of help with debugging, and code suggestions
|
||||
* [vit9696](https://github.com/vit9696)
|
||||
* Endless amount of help troubleshooting, determining fixes and writing patches
|
||||
* [ASentientBot](https://github.com/ASentientBot), [EduCovas](https://github.com/educovas) and [ASentientHedgehog](https://github.com/moosethegoose2213)
|
||||
* Legacy Acceleration Patch set and documentation, [Moraea Organization](https://github.com/moraea)
|
||||
* [EduCovas](https://github.com/covasedu)
|
||||
* [non-Metal patch set](https://github.com/moraea/non-metal-frameworks) for nVidia Tesla/Fermi/Maxwell/Pascal, AMD TeraScale 1/2, and Intel Core 1st/2nd Generation GPUs
|
||||
* [3802 Metal patch set](https://github.com/moraea/misc-patches/tree/main/3802-Metal-15) and [MetallibSupportPkg](https://github.com/dortania/MetallibSupportPkg) for nVidia Kepler and Intel Core 3rd/4th Generation GPUs
|
||||
* Metal bundle patches and shims for [nVidia Kepler](https://github.com/moraea/misc-patches/tree/main/Kepler%2013%2B), [AMD GCN 1 - 4](https://github.com/moraea/misc-patches/tree/main/GCN%2013%2B), and [AMD GCN 5 (Vega)](https://github.com/moraea/misc-patches/tree/main/vega%2013%2B)
|
||||
* [IOSurface offset patches](https://github.com/moraea/misc-patches/tree/main/Sonoma%2014.4%20IOSurface) for nVidia Kepler, AMD GCN 1 - 5, and Intel Core 3rd - 6th Generation GPUs
|
||||
* [legacy Wi-Fi patch set](https://github.com/moraea/unsupported-wifi-patches) restores functionality for Wi-Fi cards in all 2007 - 2017 models
|
||||
* [T1 patch set](https://github.com/moraea/misc-patches/tree/main/T1-Patch) restores Touch ID, Apple Pay, and other secure functionality in 2016 - 2017 models
|
||||
* AppleGVA downgrade for accelerated video decoding on 2012 - 2016 models
|
||||
* OpenCL and OpenGL downgrade for AMD GCN
|
||||
* [USB 1 patch](https://github.com/moraea/misc-patches/tree/main/IOUSBHostFamily-14.4)
|
||||
* [ASentientHedgehog](https://github.com/moosethegoose2213)
|
||||
* [non-Metal patch set](https://github.com/moraea/non-metal-frameworks) for nVidia Tesla/Fermi/Maxwell/Pascal, AMD TeraScale 1/2, and Intel Core 1st/2nd Generation GPUs
|
||||
* [ASentientBot](https://github.com/ASentientBot)
|
||||
* [non-Metal patch set](https://github.com/moraea/non-metal-frameworks) for nVidia Tesla/Fermi/Maxwell/Pascal, AMD TeraScale 1/2, and Intel Core 1st/2nd Generation GPUs
|
||||
* [Metal bundle interposer](https://github.com/moraea/misc-patches/tree/main/sequoia%2031001%20interposer) for AMD GCN 1 - 5 and Intel Core 5th/6th Generation GPUs
|
||||
* [dsce](https://github.com/moraea/dsce) and [shared code](https://github.com/moraea/moraea-common) used by some other patches
|
||||
* [cdf](https://github.com/cdf)
|
||||
* Mac Pro on OpenCore Patch set and documentation
|
||||
* [Innie](https://github.com/cdf/Innie) and [NightShiftEnabler](https://github.com/cdf/NightShiftEnabler)
|
||||
@@ -89,6 +103,9 @@ To run the project from source, see here: [Build and run from source](./SOURCE.m
|
||||
* Endless hours helping architect and troubleshoot many portions of the project
|
||||
* [flagers](https://github.com/flagersgit)
|
||||
* Aid with Nvidia Web Driver research and development
|
||||
* [non-Metal patch set](https://github.com/moraea/non-metal-frameworks) for nVidia Tesla/Fermi/Maxwell/Pascal, AMD TeraScale 1/2, and Intel Core 1st/2nd Generation GPUs
|
||||
* [Metal bundle interposer](https://github.com/moraea/misc-patches/tree/main/sequoia%2031001%20interposer) for AMD GCN 1 - 5 and Intel Core 5th/6th Generation GPUs
|
||||
* LegacyRVPL, SnapshotIsKill, etc. to aid in rapid testing and development
|
||||
* [joevt](https://github.com/joevt)
|
||||
* [FixPCIeLinkrate](https://github.com/joevt/joevtApps)
|
||||
* [Jazzzny](https://github.com/Jazzzny)
|
||||
|
||||
32
docs/BOOT.md
32
docs/BOOT.md
@@ -78,6 +78,26 @@ You will soon reach the installer screen! If you enabled verbose mode when build
|
||||
|
||||
* [OpenCore Legacy Patcher Boot Process](https://www.youtube.com/watch?v=AN3zsbQV_n4)
|
||||
|
||||
**Important:** If you're using a brand new disk that has not been used before, choose "View -> Show all devices" in Disk Utility and format the entire disk by choosing the topmost option in the sidebar to avoid a missing internal EFI later when trying to boot OpenCore to internal disk.
|
||||
|
||||
|
||||
<div align="left">
|
||||
<img src="./images/wipe-disk.png" alt="Wipe disk" width="800" />
|
||||
</div>
|
||||
|
||||
::: warning Warning for T1 Macs
|
||||
|
||||
When installing macOS Sonoma or newer on a T1 system (2016-2017), full disk wipe will remove T1 functionality (touchbar etc). Therefore when installing, only wipe the volume containing the operating system.
|
||||
|
||||
<div align="left">
|
||||
<img src="./images/wipe-volume.png" alt="WipeVolume" width="800" />
|
||||
</div>
|
||||
|
||||
[More info here](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#no-t1-functionality-after-installing-sonoma-or-newer)
|
||||
|
||||
:::
|
||||
|
||||
|
||||
If your Mac is looping back into the beginning of the setup after the first reboot, turn it off, start it again and hold Option. This time (after choosing `EFI Boot` first) select the option with a grey hard disk icon in the OpenCore picker. It can either say `macOS Installer` or the name you gave the disk during the installer process. Keep repeating this step after every reboot if necessary.
|
||||
|
||||
<div align="left">
|
||||
@@ -91,18 +111,6 @@ If your Mac is looping back into the beginning of the setup after the first rebo
|
||||
|
||||
:::
|
||||
|
||||
::: warning
|
||||
|
||||
**T1 Macs**: When installing macOS Sonoma or newer on a T1 system, full disk wipe will remove T1 functionality (touchbar etc). Therefore when installing, only wipe the volume containing the operating system.
|
||||
|
||||
<div align="left">
|
||||
<img src="./images/wipe-volume.png" alt="WipeVolume" width="800" />
|
||||
</div>
|
||||
|
||||
[More info here](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#no-t1-functionality-after-installing-sonoma-or-newer)
|
||||
|
||||
:::
|
||||
|
||||
|
||||
# Once installed and booting, head to [Post-Installation](./POST-INSTALL.md)
|
||||
|
||||
|
||||
10
docs/FAQ.md
10
docs/FAQ.md
@@ -7,6 +7,7 @@
|
||||
* [Can I use the same USB install media as a universal installer?](#can-i-use-the-same-usb-install-media-as-a-universal-installer)
|
||||
* [Can I use OTA updates?](#can-i-use-ota-updates)
|
||||
* [Can I use automatic updates?](#can-i-use-automatic-updates)
|
||||
* [Why are macOS updates so large?](#why-are-macos-updates-so-large)
|
||||
* [Can I update to macOS betas?](#can-i-update-to-macos-betas)
|
||||
* [Can I downgrade macOS while keeping data?](#can-i-downgrade-macos-while-keeping-data)
|
||||
* [Why is my system slow?](#why-is-my-system-slow)
|
||||
@@ -66,7 +67,9 @@ General updates are usually fine, though it is always a good idea to wait few da
|
||||
|
||||
## Can I use automatic updates?
|
||||
|
||||
It is extremely recommended to disable automatic updates (even downloading) when using OCLP, as Apple has recently changed the way automatic updates work. You can still manually initiate an update when you're ready to do so. For a related "System version mismatch" error while root patching, refer to [System version mismatch error when root patching](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#system-version-mismatch-error-when-root-patching) for troubleshooting.
|
||||
It is extremely recommended to disable automatic updates (even downloading) when using OCLP, as Apple has recently changed the way automatic updates work. Updates are now getting staged during the download process and are already modifying the system volume, which can lead to broken system out of nowhere since the operating system gets into a liminal state between two versions. You can still manually initiate an update when you're ready to do so.
|
||||
|
||||
For a related "System version mismatch" error while root patching and more information, refer to [System version mismatch error when root patching](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#system-version-mismatch-error-when-root-patching) for troubleshooting.
|
||||
|
||||
### Disabling updates
|
||||
|
||||
@@ -78,6 +81,9 @@ System Settings -> General -> Software Update -> (i) button next to Automatic Up
|
||||
|
||||
System Preferences -> Software Update -> Advanced -> Disable "Download new updates when available".
|
||||
|
||||
## Why are macOS updates so large?
|
||||
|
||||
macOS by default uses a sealed system volume that is unwritable. When the seal is broken, macOS thinks the volume is broken and downloads a full copy of macOS for every update to "repair" it to a known state. In order for root patching to work, this seal has to be broken since root patching by design requires on-disk file manipulation. This is also why root patches have to be reinstalled after each update.
|
||||
|
||||
## Can I update to macOS betas?
|
||||
|
||||
@@ -92,7 +98,7 @@ macOS doesn't allow direct downgrades, as such you will have to wipe the disk in
|
||||
|
||||
This can mean many things. Firstly, newer operating systems are harder to run and can appear more slow.
|
||||
|
||||
Additionally if your macOS installation is recent, Spotlight starts creating a full disk index which can cause high CPU load, high temps and general slowness. It's recommended to keep the system running for few hours, once Spotlight has indexed the load will ease. A way to check whether it's caused by Spotlight is to open Activity Monitor, choosing "All Processes" from the "View" menu item to, then sorting by the CPU value to see if a process called ```mds_stores``` is using a lot of CPU resources.
|
||||
Additionally if your macOS installation is recent, Spotlight starts creating a full disk index which can cause high CPU load, high temps and general slowness. It's recommended to keep the system running for few hours, once Spotlight has indexed the load will ease. A way to check whether it's caused by Spotlight is to open Activity Monitor, choosing "All Processes" from the "View" menu item, then sorting by the CPU value to see if a process called ```mds_stores``` is using a lot of CPU resources.
|
||||
|
||||
However, if your system is being **really** slow and you have no transparency in Dock and menubar, this typically indicates that root patches are not installed and as such there is no acceleration. Make sure to install root patches to get proper drivers and functionality. Refer to [Applying post install volume patches](https://dortania.github.io/OpenCore-Legacy-Patcher/POST-INSTALL.html#applying-post-install-volume-patches) and the [Troubleshooting](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html) section for more information.
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
# Creating macOS Installers
|
||||
|
||||
This document is centered around downloading and writing the macOS installer to a USB drive. If you're already familiar with how to do this, you can skip this section.
|
||||
This document is centered around downloading and writing the macOS installer to a USB drive. If you're planning to install macOS on other system than you're currently running, it is recommended to choose the Mac model in Settings now before proceeding, so that automatic root patching works correctly later on.
|
||||
|
||||
* Note: A 32GB drive is recommended, later versions of Sonoma and Sequoia cannot fit installer and patches to a 16GB disk. 16GB drive may work for older versions.
|
||||
|
||||
|
||||
## Downloading the installer
|
||||
|
||||
To start off, you'll want to grab the app:
|
||||
|
||||
@@ -17,6 +17,8 @@ Once you've installed macOS through OpenCore, you can boot up and go through the
|
||||
|
||||
And voila! No more USB drive required.
|
||||
|
||||
If you're having issues with undetected internal disk, refer to [Internal disk missing when building OpenCore](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#internal-disk-missing-when-building-opencore) for troubleshooting.
|
||||
|
||||
## Booting seamlessly without Boot Picker
|
||||
|
||||
To do this, run the OpenCore Patcher and head to Patcher Settings, then uncheck "Show OpenCore Bootpicker" on the Build tab:
|
||||
@@ -77,10 +79,15 @@ Non-Metal systems still require lowered SIP.
|
||||
|
||||
Post Install Volume Patches, sometimes also called root patches, are patches that have to be installed to disk for some older Macs to gain back functionality.
|
||||
|
||||
OCLP will automatically root patch your system during a first time install **if the USB install media was created within OCLP.** Users will also be prompted to install these patches after macOS updates or whenever patches are not detected on the system. We recommend rebuilding OpenCore with the latest version of OCLP to take advantage of these new features.
|
||||
OCLP will automatically root patch your system during a first time install **if the USB install media was created within OCLP and the proper model was selected before installer creation.** Users will also be prompted to install these patches after macOS updates or whenever patches are not detected on the system. We recommend rebuilding OpenCore with the latest version of OCLP to take advantage of these new features.
|
||||
|
||||
Users can also see whether applicable patches have been installed, date and version the system was root patched with in the Post-Install Menu.
|
||||
|
||||
- **Note:** In some cases OCLP may require packages to be obtained from the internet, such as KDK or MetallibSupprtPkg if they do not already exist on the system. In these cases OCLP may only install the WiFi driver on first patch run to ensure you can connect to the internet, which means no graphics acceleration
|
||||
after reboot. Root patching has to be ran again manually to install the rest of the required patches after internet connection is established to obtain the required packages.
|
||||
|
||||
Check the affected systems and GPUs from the warnings below.
|
||||
|
||||
:::warning
|
||||
|
||||
If you need to use Migration Assistant to bring over data to your new macOS install, it is **highly recommended** to avoid restoring from inside Setup Assistant and waiting to install root patches until after the transfer is complete. If root patches were automatically installed, you can use the options available in the OCLP app to remove them.
|
||||
@@ -95,24 +102,19 @@ For more information on how to restore a Time Machine backup, [refer to the guid
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||
|
||||
|
||||
### Running Post Install patches manually
|
||||
|
||||
If you're using OCLP v0.4.3 or earlier, or need to run the patcher manually, you can do so with the app. There is no harm in trying to run the Patcher, as without compatible hardware, nothing will be done. You can see below on whether your hardware needs root volume patching or not.
|
||||
|
||||
There is also an option to remove root patches, which may be required in some situations, such as switching GPUs in Mac Pros or using Migration Assistant.
|
||||
You can install and revert Root Patching manually from the app.
|
||||
|
||||
| Listing Patches | Patching Finished |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||
|
||||
|
||||
:::warning
|
||||
|
||||
With macOS Sequoia, MetallibSupportPkg is required to be downloaded for all 3802 systems. OCLP will handle this as long as you're connected to the internet.
|
||||
With macOS Sequoia, MetallibSupportPkg is required to be downloaded for all 3802-based systems. OCLP will handle this as long as you're connected to the internet.
|
||||
|
||||
Such systems include:
|
||||
3802 based GPUs:
|
||||
|
||||
* NVIDIA
|
||||
* Kepler (GTX 600 - 700 series)
|
||||
|
||||
@@ -12,8 +12,8 @@ meta:
|
||||
features:
|
||||
# - title: Built with security in mind
|
||||
# details: Supporting System Integrity Protection(SIP), FileVault 2, .im4m Secure Boot and Vaulting. We make an effort to ensure your system is as secure as possible.
|
||||
- title: Native OTA updates
|
||||
details: Install updates the moment they come out, with native System Preferences support, just like a supported Mac.
|
||||
- title: Near-native OTA updates.
|
||||
details: Install updates from System Settings, with just couple more additional steps compared to native.
|
||||
- title: Zero firmware patching
|
||||
details: Using the capabilities of the OpenCore boot manager, our protocol upgrades are done in memory and are never permanent.
|
||||
- title: Supporting more hardware
|
||||
@@ -23,4 +23,4 @@ features:
|
||||
- title: A helpful community
|
||||
details: Whether it's getting started or learning the specifics, you can always find answers with our amazing community of tinkerers, developers, and dreamers.
|
||||
footer: Copyright © Dortania 2020-2024
|
||||
---
|
||||
---
|
||||
|
||||
@@ -8,6 +8,7 @@ Here are some common errors that users may experience while using this patcher:
|
||||
* [Stuck on hard disk selection with greyed out buttons in installer](#stuck-on-hard-disk-selection-with-greyed-out-buttons-in-installer)
|
||||
* [Cannot boot macOS without the USB](#cannot-boot-macos-without-the-usb)
|
||||
* [Infinite Recovery OS Booting](#infinite-recovery-os-reboot)
|
||||
* [Internal disk missing when building OpenCore](#internal-disk-missing-when-building-opencore)
|
||||
* [System version mismatch error when root patching](#system-version-mismatch-error-when-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)
|
||||
@@ -86,6 +87,25 @@ With OpenCore Legacy Patcher, we rely on Apple Secure Boot to ensure OS updates
|
||||
|
||||
* Note: Machines with modified root volumes will also result in an infinite recovery loop until integrity is restored.
|
||||
|
||||
## Internal disk missing when building OpenCore
|
||||
|
||||
If you're using a brand new disk that has not been used before or was never formatted in any macOS type, you may face the following error in OCLP when trying to build on the internal disk.
|
||||
|
||||
<div align="left">
|
||||
<img src="./images/OCLP_Failed_to_find_applicable_disks.png" alt="Failed to find applicable disks" width="600" />
|
||||
</div>
|
||||
|
||||
There are two ways to to try and resolve this.
|
||||
|
||||
1. Create a new FAT32 partition using Disk Utility, sized at around 100MB, naming does not matter. OpenCore will detect it and you will be able to build your EFI there.
|
||||
|
||||
2. When installing macOS, choose "View -> Show all devices" in Disk Utility and format the entire disk by choosing the topmost option in the sidebar.
|
||||
|
||||
<div align="left">
|
||||
<img src="./images/wipe-disk.png" alt="Wipe disk" width="800" />
|
||||
</div>
|
||||
|
||||
|
||||
## System version mismatch error when root patching
|
||||
|
||||
Updates from now on modify the system volume already while downloading, which can lead to broken patches out of a sudden as well as a "version mismatch" error while root patching, since the operating system gets into a liminal state between two versions. The "version mismatch" error is a safeguard preventing OCLP from patching on a system that is in a weird liminal state, to avoid leading to a very likely boot failure.
|
||||
@@ -94,6 +114,14 @@ Currently there is a "PurgePendingUpdate" tool available [on the Discord server]
|
||||
|
||||
Disabling automatic macOS updates is extremely recommended once recovered, to prevent it from happening again.
|
||||
|
||||
**macOS Ventura and newer:**
|
||||
|
||||
System Settings -> General -> Software Update -> (i) button next to Automatic Updates -> Disable "Download new updates when available".
|
||||
|
||||
**macOS Big Sur and Monterey:**
|
||||
|
||||
System Preferences -> Software Update -> Advanced -> Disable "Download new updates when available".
|
||||
|
||||
## Stuck on boot after root patching
|
||||
|
||||
Boot into recovery by pressing space when your disk is selected on the OCLP bootpicker (if you have it hidden, hold ESC while starting up)
|
||||
|
||||
@@ -223,9 +223,9 @@ Notice that "Allow native models" and "Allow Native Spoofs" **are NOT** enabled
|
||||
|
||||
::: details Table for spoofed models (click to expand)
|
||||
|
||||
Spoofing to any model with native Sonoma support should work, but these are the earliest Macs natively supported by Sonoma and thus chosen for the sake of simplicity.
|
||||
Spoofing to any model with native Sequoia support should work, but these are the earliest Macs natively supported by Sequoia and thus chosen for the sake of simplicity.
|
||||
|
||||
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Ventura as long as the other requirements are met, since they aren't blacklisted.
|
||||
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Sequoia as long as the other requirements are met, since they aren't blacklisted.
|
||||
|
||||
|
||||
| Mac by name | Native SMBIOS | Spoof SMBIOS |
|
||||
@@ -257,7 +257,7 @@ Notice that "Allow native models" and "Allow Native Spoofs" **are NOT** enabled
|
||||
|
||||
Spoofing to any model with native Sonoma support should work, but these are the earliest Macs natively supported by Sonoma and thus chosen for the sake of simplicity.
|
||||
|
||||
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Ventura as long as the other requirements are met, since they aren't blacklisted.
|
||||
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Sonoma as long as the other requirements are met, since they aren't blacklisted.
|
||||
|
||||
|
||||
| Mac by name | Native SMBIOS | Spoof SMBIOS |
|
||||
|
||||
BIN
docs/images/OCLP_Failed_to_find_applicable_disks.png
Normal file
BIN
docs/images/OCLP_Failed_to_find_applicable_disks.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 202 KiB |
BIN
docs/images/wipe-disk.png
Normal file
BIN
docs/images/wipe-disk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 581 KiB |
@@ -13,8 +13,8 @@ from .detections import device_probe
|
||||
class Constants:
|
||||
def __init__(self) -> None:
|
||||
# Patcher Versioning
|
||||
self.patcher_version: str = "2.1.1" # OpenCore-Legacy-Patcher
|
||||
self.patcher_support_pkg_version: str = "1.8.4" # PatcherSupportPkg
|
||||
self.patcher_version: str = "2.2.0" # OpenCore-Legacy-Patcher
|
||||
self.patcher_support_pkg_version: str = "1.9.1" # PatcherSupportPkg
|
||||
self.copyright_date: str = "Copyright © 2020-2024 Dortania"
|
||||
self.patcher_name: str = "OpenCore Legacy Patcher"
|
||||
|
||||
|
||||
@@ -435,5 +435,14 @@ class GenerateDefaults:
|
||||
plist[key] = None
|
||||
|
||||
if hasattr(self.constants, constants_key):
|
||||
# Check if type is different
|
||||
original_type = type(getattr(self.constants, constants_key))
|
||||
new_type = type(plist[key])
|
||||
if original_type != new_type:
|
||||
logging.error(f"Global settings type mismatch for {constants_key}: {original_type} vs {new_type}")
|
||||
logging.error(f"Removing {key} from global settings")
|
||||
global_settings.GlobalEnviromentSettings().delete_property(key)
|
||||
continue
|
||||
|
||||
logging.info(f"Setting {constants_key} to {plist[key]}")
|
||||
setattr(self.constants, constants_key, plist[key])
|
||||
@@ -44,6 +44,25 @@ class GlobalEnviromentSettings:
|
||||
return None
|
||||
|
||||
|
||||
def delete_property(self, property_name: str) -> None:
|
||||
"""
|
||||
Deletes a property from the global settings file
|
||||
"""
|
||||
if Path(self.global_settings_plist).exists():
|
||||
try:
|
||||
plist = plistlib.load(Path(self.global_settings_plist).open("rb"))
|
||||
except Exception as e:
|
||||
logging.error("Error: Unable to read global settings file")
|
||||
logging.error(e)
|
||||
return
|
||||
if property_name in plist:
|
||||
del plist[property_name]
|
||||
try:
|
||||
plistlib.dump(plist, Path(self.global_settings_plist).open("wb"))
|
||||
except PermissionError:
|
||||
logging.info("Failed to write to global settings")
|
||||
|
||||
|
||||
def write_property(self, property_name: str, property_value) -> None:
|
||||
"""
|
||||
Writes a property to the global settings file
|
||||
|
||||
@@ -124,7 +124,7 @@ class PatcherValidation:
|
||||
minor_kernel (int): Minor kernel version
|
||||
"""
|
||||
|
||||
patch_type_merge_exempt = ["MechanismPlugins"]
|
||||
patch_type_merge_exempt = ["MechanismPlugins", "ModulePlugins"]
|
||||
patch_type_overwrite_exempt = []
|
||||
|
||||
patchset = HardwarePatchsetDetection(self.constants, xnu_major=major_kernel, xnu_minor=minor_kernel, validation=True).patches
|
||||
|
||||
@@ -32,4 +32,5 @@ class BasePatchset:
|
||||
self.macOS_13_3: float = 22.4
|
||||
self.macOS_14_1: float = 23.1
|
||||
self.macOS_14_2: float = 23.2
|
||||
self.macOS_14_4: float = 23.4
|
||||
self.macOS_14_4: float = 23.4
|
||||
self.macOS_15_2: float = 24.2
|
||||
@@ -44,6 +44,7 @@ from .hardware.misc import (
|
||||
pcie_webcam,
|
||||
t1_security,
|
||||
usb11,
|
||||
cpu_missing_avx,
|
||||
)
|
||||
|
||||
from ... import constants
|
||||
@@ -133,6 +134,7 @@ class HardwarePatchsetDetection:
|
||||
pcie_webcam.PCIeFaceTimeCamera,
|
||||
t1_security.T1SecurityChip,
|
||||
usb11.USB11Controller,
|
||||
cpu_missing_avx.CPUMissingAVX,
|
||||
]
|
||||
|
||||
self.device_properties = None
|
||||
|
||||
@@ -6,6 +6,7 @@ from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclas
|
||||
|
||||
from ...base import PatchType
|
||||
|
||||
from ...shared_patches.monterey_gva import MontereyGVA
|
||||
from ...shared_patches.monterey_opencl import MontereyOpenCL
|
||||
from ...shared_patches.amd_opencl import AMDOpenCL
|
||||
|
||||
@@ -74,15 +75,17 @@ class AMDNavi(BaseHardware):
|
||||
return {
|
||||
"AMD Navi": {
|
||||
PatchType.OVERWRITE_SYSTEM_VOLUME: {
|
||||
"AMDRadeonX6000.kext": self._resolve_monterey_framebuffers(),
|
||||
"AMDRadeonX6000Framebuffer.kext": "12.5",
|
||||
"/System/Library/Extensions": {
|
||||
"AMDRadeonX6000.kext": self._resolve_monterey_framebuffers(),
|
||||
"AMDRadeonX6000Framebuffer.kext": "12.5",
|
||||
|
||||
"AMDRadeonVADriver2.bundle": "12.5",
|
||||
"AMDRadeonX6000GLDriver.bundle": "12.5",
|
||||
"AMDRadeonX6000MTLDriver.bundle": "12.5" if self._xnu_major < os_data.sequoia else "12.5-24",
|
||||
"AMDRadeonX6000Shared.bundle": "12.5",
|
||||
"AMDRadeonVADriver2.bundle": "12.5",
|
||||
"AMDRadeonX6000GLDriver.bundle": "12.5",
|
||||
"AMDRadeonX6000MTLDriver.bundle": "12.5" if self._xnu_major < os_data.sequoia else "12.5-24",
|
||||
"AMDRadeonX6000Shared.bundle": "12.5",
|
||||
|
||||
"AMDShared.bundle": "12.5",
|
||||
"AMDShared.bundle": "12.5",
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -120,6 +123,7 @@ class AMDNavi(BaseHardware):
|
||||
return {}
|
||||
|
||||
return {
|
||||
**MontereyGVA(self._xnu_major, self._xnu_minor, self._constants.detected_os_version).revert_patches(),
|
||||
**MontereyOpenCL(self._xnu_major, self._xnu_minor, self._constants.detected_os_version).patches(),
|
||||
**AMDOpenCL(self._xnu_major, self._xnu_minor, self._constants.detected_os_version).patches(),
|
||||
**self._model_specific_patches(),
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
"""
|
||||
cpu_missing_avx.py: Legacy CPUs (Lacking AVX) Detection
|
||||
|
||||
Note that this system is implemented only for macOS Ventura and
|
||||
machines not using the legacy/modern wireless patches (AVX patch integrated into WiFi patches).
|
||||
|
||||
This commit implemented unconditional AVX usage, thus Safari 18.2 and later will crash:
|
||||
https://github.com/WebKit/WebKit/commit/c15e741266db8ff9df309ce9971eda1cfd9021cc
|
||||
"""
|
||||
|
||||
from ..base import BaseHardware, HardwareVariant
|
||||
|
||||
from ..networking.legacy_wireless import LegacyWireless
|
||||
from ..networking.modern_wireless import ModernWireless
|
||||
|
||||
from ...base import PatchType
|
||||
|
||||
from .....constants import Constants
|
||||
|
||||
from .....datasets.os_data import os_data
|
||||
|
||||
|
||||
class CPUMissingAVX(BaseHardware):
|
||||
|
||||
def __init__(self, xnu_major, xnu_minor, os_build, global_constants: Constants) -> None:
|
||||
super().__init__(xnu_major, xnu_minor, os_build, global_constants)
|
||||
|
||||
|
||||
def name(self) -> str:
|
||||
"""
|
||||
Display name for end users
|
||||
"""
|
||||
return f"{self.hardware_variant()}: Legacy CPUs (Lacking AVX)"
|
||||
|
||||
|
||||
def present(self) -> bool:
|
||||
"""
|
||||
Targeting CPUs without AVX support
|
||||
"""
|
||||
if self._constants.computer.rosetta_active is True:
|
||||
return False
|
||||
if "AVX1.0" in self._constants.computer.cpu.flags:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def native_os(self) -> bool:
|
||||
"""
|
||||
Only install this patch on macOS Ventura.
|
||||
This is because we integrated the patch into the WiFi patches which all Macs use in Sonoma+.
|
||||
"""
|
||||
if self._xnu_major != os_data.ventura.value:
|
||||
return True
|
||||
|
||||
if LegacyWireless(self._xnu_major, self._xnu_minor, self._os_build, self._constants).present() is True:
|
||||
return True
|
||||
if ModernWireless(self._xnu_major, self._xnu_minor, self._os_build, self._constants).present() is True:
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def hardware_variant(self) -> HardwareVariant:
|
||||
"""
|
||||
Type of hardware variant
|
||||
"""
|
||||
return HardwareVariant.MISCELLANEOUS
|
||||
|
||||
|
||||
def patches(self) -> dict:
|
||||
"""
|
||||
Patches for Legacy CPUs (Lacking AVX)
|
||||
"""
|
||||
if self.native_os() is True:
|
||||
return {}
|
||||
|
||||
return {
|
||||
"CPU Missing AVX": {
|
||||
PatchType.MERGE_SYSTEM_VOLUME: {
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"IO80211.framework": "13.7.2-22",
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -81,12 +81,13 @@ class T1SecurityChip(BaseHardware):
|
||||
},
|
||||
PatchType.MERGE_SYSTEM_VOLUME: {
|
||||
"/System/Library/Frameworks/LocalAuthentication.framework/Support": {
|
||||
"SharedUtils.framework": f"13.6-{self._xnu_major}", # Required for Password Authentication (SharedUtils.framework)
|
||||
"SharedUtils.framework": f"13.6-{self._xnu_major}" if self._xnu_major < os_data.sequoia else f"13.7.1-{self._xnu_major}", # Required for Password Authentication (SharedUtils.framework)
|
||||
**({ "MechanismPlugins": "15.0 Beta 4" } if self._xnu_major >= os_data.sequoia else {}), # Required to add a TouchID fingerprint
|
||||
**({ "ModulePlugins": "15.1" } if self._xnu_float >= self.macOS_15_2 else {}),
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"EmbeddedOSInstall.framework": "13.6", # Required for biometrickitd
|
||||
**({ "NearField.framework": "14.5" } if self._xnu_major >= os_data.sequoia else {}),
|
||||
**({ "NearField.framework": "14.7.2" } if self._xnu_major >= os_data.sequoia else {}),
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
@@ -118,18 +118,18 @@ class LegacyWireless(BaseHardware):
|
||||
"Legacy Wireless Extended": {
|
||||
PatchType.OVERWRITE_SYSTEM_VOLUME: {
|
||||
"/usr/libexec": {
|
||||
"wps": "12.7.2",
|
||||
"wifip2pd": "12.7.2",
|
||||
"wps": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
|
||||
"wifip2pd": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
|
||||
},
|
||||
},
|
||||
PatchType.MERGE_SYSTEM_VOLUME: {
|
||||
"/System/Library/Frameworks": {
|
||||
"CoreWLAN.framework": "12.7.2",
|
||||
"CoreWLAN.framework": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"CoreWiFi.framework": "12.7.2",
|
||||
"IO80211.framework": "12.7.2",
|
||||
"WiFiPeerToPeer.framework": "12.7.2",
|
||||
"CoreWiFi.framework": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
|
||||
"IO80211.framework": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
|
||||
"WiFiPeerToPeer.framework": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
@@ -64,21 +64,21 @@ class ModernWireless(BaseHardware):
|
||||
"Modern Wireless": {
|
||||
PatchType.OVERWRITE_SYSTEM_VOLUME: {
|
||||
"/usr/libexec": {
|
||||
"airportd": "13.6.5",
|
||||
"wifip2pd": "13.6.5",
|
||||
"airportd": f"13.7.2-{self._xnu_major}",
|
||||
"wifip2pd": f"13.7.2-{self._xnu_major}",
|
||||
},
|
||||
"/System/Library/CoreServices": {
|
||||
**({ "WiFiAgent.app": "14.5" } if self._xnu_major >= os_data.sequoia else {}),
|
||||
**({ "WiFiAgent.app": "14.7.2" } if self._xnu_major >= os_data.sequoia else {}),
|
||||
},
|
||||
},
|
||||
PatchType.MERGE_SYSTEM_VOLUME: {
|
||||
"/System/Library/Frameworks": {
|
||||
"CoreWLAN.framework": f"13.6.5-{self._xnu_major}",
|
||||
"CoreWLAN.framework": f"13.7.2-{self._xnu_major}",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"CoreWiFi.framework": f"13.6.5-{self._xnu_major}",
|
||||
"IO80211.framework": f"13.6.5-{self._xnu_major}",
|
||||
"WiFiPeerToPeer.framework": f"13.6.5-{self._xnu_major}",
|
||||
"CoreWiFi.framework": f"13.7.2-{self._xnu_major}",
|
||||
"IO80211.framework": f"13.7.2-{self._xnu_major}",
|
||||
"WiFiPeerToPeer.framework": f"13.7.2-{self._xnu_major}",
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
@@ -41,6 +41,11 @@ class NonMetal(BaseSharedPatchSet):
|
||||
"/usr/sbin": {
|
||||
**({ "screencapture": "14.7"} if self._xnu_major >= os_data.sequoia else {}),
|
||||
},
|
||||
"/System/Library/CoreServices/RemoteManagement": {
|
||||
**({"ScreensharingAgent.bundle": "14.7.2"} if self._xnu_major >= os_data.sequoia else {}),
|
||||
**({"screensharingd.bundle": "14.7.2"} if self._xnu_major >= os_data.sequoia else {}),
|
||||
**({"SSMenuAgent.app": "14.7.2"} if self._xnu_major >= os_data.sequoia else {}),
|
||||
},
|
||||
},
|
||||
PatchType.REMOVE_SYSTEM_VOLUME: {
|
||||
"/System/Library/Extensions": [
|
||||
|
||||
@@ -28,6 +28,8 @@ class BuildFrame(wx.Frame):
|
||||
super(BuildFrame, self).__init__(parent, title=title, size=(350, 200), style=wx.DEFAULT_FRAME_STYLE & ~(wx.RESIZE_BORDER | wx.MAXIMIZE_BOX))
|
||||
gui_support.GenerateMenubar(self, global_constants).generate()
|
||||
|
||||
self.build_successful: bool = False
|
||||
|
||||
self.install_button: wx.Button = None
|
||||
self.text_box: wx.TextCtrl = None
|
||||
self.frame_modal: wx.Dialog = None
|
||||
@@ -107,6 +109,18 @@ class BuildFrame(wx.Frame):
|
||||
wx.Yield()
|
||||
|
||||
self.return_button.Enable()
|
||||
|
||||
# Check if config.plist was built
|
||||
if self.build_successful is False:
|
||||
dialog = wx.MessageDialog(
|
||||
parent=self,
|
||||
message="An error occurred while building OpenCore",
|
||||
caption="Error building OpenCore",
|
||||
style=wx.OK | wx.ICON_ERROR
|
||||
)
|
||||
dialog.ShowModal()
|
||||
return
|
||||
|
||||
dialog = wx.MessageDialog(
|
||||
parent=self,
|
||||
message=f"Would you like to install OpenCore now?",
|
||||
@@ -126,9 +140,16 @@ class BuildFrame(wx.Frame):
|
||||
logger.addHandler(gui_support.ThreadHandler(self.text_box))
|
||||
try:
|
||||
build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants)
|
||||
except:
|
||||
self.build_successful = True
|
||||
except Exception as e:
|
||||
logging.error("An internal error occurred while building:\n")
|
||||
logging.error(traceback.format_exc())
|
||||
|
||||
# Handle bug from 2.1.0 where None type was stored in config.plist from global settings
|
||||
if "TypeError: unsupported type: <class 'NoneType'>" in traceback.format_exc():
|
||||
logging.error("If you continue to see this error, delete the following file and restart the application:")
|
||||
logging.error("Path: /Users/Shared/.com.dortania.opencore-legacy-patcher.plist")
|
||||
|
||||
logger.removeHandler(logger.handlers[2])
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user