mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-06-21 06:30:52 +10:00
Merge branch 'main' into sequoia-development
This commit is contained in:
@@ -12,6 +12,8 @@
|
|||||||
- 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
|
||||||
|
- Increment Binaries:
|
||||||
|
- PatcherSupportPkg 1.6.3 - release
|
||||||
|
|
||||||
## 1.5.0
|
## 1.5.0
|
||||||
- Restructure project directories
|
- Restructure project directories
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
Here are some common errors that users may experience while using this patcher:
|
Here are some common errors that users may experience while using this patcher:
|
||||||
|
|
||||||
* [OpenCore Legacy Patcher not launching](#opencore-legacy-patcher-not-launching)
|
* [OpenCore Legacy Patcher not launching](#opencore-legacy-patcher-not-launching)
|
||||||
* ["You don't have permission to save..." error when creating USB installer](#you-dont-have-permission-to-save-error-when-creating-usb-installer)
|
* ["You don't have permission to save..." error when creating USB installer](#you-don-t-have-permission-to-save-error-when-creating-usb-installer)
|
||||||
* [Stuck on `This version of Mac OS X is not supported on this platform` or (🚫) Prohibited Symbol](#stuck-on-this-version-of-mac-os-x-is-not-supported-on-this-platform-or-(🚫)-prohibited-symbol)
|
* [Stuck on `This version of Mac OS X is not supported on this platform` or (🚫) Prohibited Symbol](#stuck-on-this-version-of-mac-os-x-is-not-supported-on-this-platform-or-🚫-prohibited-symbol)
|
||||||
* [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)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class Constants:
|
|||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
# Patcher Versioning
|
# Patcher Versioning
|
||||||
self.patcher_version: str = "1.6.0" # OpenCore-Legacy-Patcher
|
self.patcher_version: str = "1.6.0" # OpenCore-Legacy-Patcher
|
||||||
self.patcher_support_pkg_version: str = "1.6.2" # PatcherSupportPkg
|
self.patcher_support_pkg_version: str = "1.6.3" # PatcherSupportPkg
|
||||||
self.copyright_date: str = "Copyright © 2020-2024 Dortania"
|
self.copyright_date: str = "Copyright © 2020-2024 Dortania"
|
||||||
self.patcher_name: str = "OpenCore Legacy Patcher"
|
self.patcher_name: str = "OpenCore Legacy Patcher"
|
||||||
|
|
||||||
|
|||||||
@@ -91,10 +91,10 @@ class SystemPatchDictionary():
|
|||||||
- AppleIntelHD4000Graphics.kext
|
- AppleIntelHD4000Graphics.kext
|
||||||
"""
|
"""
|
||||||
if self.os_major < os_data.os_data.sonoma:
|
if self.os_major < os_data.os_data.sonoma:
|
||||||
return "11.4"
|
return "11.7.10"
|
||||||
if self.os_float < self.macOS_14_4:
|
if self.os_float < self.macOS_14_4:
|
||||||
return "11.4-23"
|
return "11.7.10-23"
|
||||||
return "11.4-23.4"
|
return "11.7.10-23.4"
|
||||||
|
|
||||||
|
|
||||||
def __resolve_kepler_geforce_framebuffers(self) -> str:
|
def __resolve_kepler_geforce_framebuffers(self) -> str:
|
||||||
@@ -458,8 +458,8 @@ class SystemPatchDictionary():
|
|||||||
},
|
},
|
||||||
"Install": {
|
"Install": {
|
||||||
"/System/Library/PrivateFrameworks": {
|
"/System/Library/PrivateFrameworks": {
|
||||||
"AppleGVA.framework": "10.15.7",
|
"AppleGVA.framework": "11.7.10",
|
||||||
"AppleGVACore.framework": "10.15.7",
|
"AppleGVACore.framework": "11.7.10",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -972,13 +972,13 @@ class SystemPatchDictionary():
|
|||||||
},
|
},
|
||||||
"Install": {
|
"Install": {
|
||||||
"/System/Library/Extensions": {
|
"/System/Library/Extensions": {
|
||||||
"AppleIntelHD4000GraphicsGLDriver.bundle": "11.0 Beta 6",
|
"AppleIntelHD4000GraphicsGLDriver.bundle": "11.7.10",
|
||||||
"AppleIntelHD4000GraphicsMTLDriver.bundle": "11.0 Beta 6" if self.os_major < os_data.os_data.ventura else "11.0-beta 6-22",
|
"AppleIntelHD4000GraphicsMTLDriver.bundle": "11.7.10" if self.os_major < os_data.os_data.ventura else "11.7.10-22",
|
||||||
"AppleIntelHD4000GraphicsVADriver.bundle": "11.3 Beta 1",
|
"AppleIntelHD4000GraphicsVADriver.bundle": "11.7.10",
|
||||||
"AppleIntelFramebufferCapri.kext": self.__resolve_ivy_bridge_framebuffers(),
|
"AppleIntelFramebufferCapri.kext": self.__resolve_ivy_bridge_framebuffers(),
|
||||||
"AppleIntelHD4000Graphics.kext": self.__resolve_ivy_bridge_framebuffers(),
|
"AppleIntelHD4000Graphics.kext": self.__resolve_ivy_bridge_framebuffers(),
|
||||||
"AppleIntelIVBVA.bundle": "11.4",
|
"AppleIntelIVBVA.bundle": "11.7.10",
|
||||||
"AppleIntelGraphicsShared.bundle": "11.4", # libIGIL-Metal.dylib pulled from 11.0 Beta 6
|
"AppleIntelGraphicsShared.bundle": "11.7.10", # libIGIL-Metal.dylib pulled from 11.0 Beta 6
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1354,7 +1354,7 @@ class SystemPatchDictionary():
|
|||||||
},
|
},
|
||||||
"Install": {
|
"Install": {
|
||||||
"/System/Library/Frameworks": {
|
"/System/Library/Frameworks": {
|
||||||
"LocalAuthentication.framework": f"13.6-{self.os_major}", # Required for Password Authentication (SharedUtils.framework)
|
"LocalAuthentication.framework": f"13.6-{self.os_major}" # Required for Password Authentication (SharedUtils.framework)
|
||||||
},
|
},
|
||||||
"/System/Library/PrivateFrameworks": {
|
"/System/Library/PrivateFrameworks": {
|
||||||
"EmbeddedOSInstall.framework": "13.6", # Required for biometrickitd
|
"EmbeddedOSInstall.framework": "13.6", # Required for biometrickitd
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ install.py: Installation of OpenCore files to ESP
|
|||||||
import logging
|
import logging
|
||||||
import plistlib
|
import plistlib
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import re
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
@@ -27,9 +28,15 @@ class tui_disk_installation:
|
|||||||
# Sierra and older
|
# Sierra and older
|
||||||
disks = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "list", "-plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
disks = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "list", "-plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
for disk in disks["AllDisksAndPartitions"]:
|
for disk in disks["AllDisksAndPartitions"]:
|
||||||
disk_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
|
||||||
try:
|
try:
|
||||||
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["TotalSize"], "partitions": {}}
|
disk_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
|
except:
|
||||||
|
# Chinesium USB can have garbage data in MediaName
|
||||||
|
diskutil_output = subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip()
|
||||||
|
ungarbafied_output = re.sub(r'(<key>MediaName</key>\s*<string>).*?(</string>)', r'\1\2', diskutil_output).encode()
|
||||||
|
disk_info = plistlib.loads(ungarbafied_output)
|
||||||
|
try:
|
||||||
|
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info.get("MediaName", "Disk"), "size": disk_info["TotalSize"], "partitions": {}}
|
||||||
for partition in disk["Partitions"]:
|
for partition in disk["Partitions"]:
|
||||||
partition_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", partition["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
partition_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", partition["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
all_disks[disk["DeviceIdentifier"]]["partitions"][partition["DeviceIdentifier"]] = {
|
all_disks[disk["DeviceIdentifier"]]["partitions"][partition["DeviceIdentifier"]] = {
|
||||||
@@ -98,7 +105,7 @@ class tui_disk_installation:
|
|||||||
partition_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", full_disk_identifier], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
partition_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", full_disk_identifier], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
parent_disk = partition_info["ParentWholeDisk"]
|
parent_disk = partition_info["ParentWholeDisk"]
|
||||||
drive_host_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", parent_disk], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
drive_host_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", parent_disk], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
sd_type = drive_host_info["MediaName"]
|
sd_type = drive_host_info.get("MediaName", "Disk")
|
||||||
try:
|
try:
|
||||||
ssd_type = drive_host_info["SolidState"]
|
ssd_type = drive_host_info["SolidState"]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import logging
|
|||||||
import plistlib
|
import plistlib
|
||||||
import tempfile
|
import tempfile
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import re
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
@@ -171,9 +172,15 @@ fi
|
|||||||
disks = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "list", "-plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
disks = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "list", "-plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
|
|
||||||
for disk in disks["AllDisksAndPartitions"]:
|
for disk in disks["AllDisksAndPartitions"]:
|
||||||
disk_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
|
||||||
try:
|
try:
|
||||||
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["TotalSize"], "removable": disk_info["Internal"], "partitions": {}}
|
disk_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
|
except:
|
||||||
|
# Chinesium USB can have garbage data in MediaName
|
||||||
|
diskutil_output = subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip()
|
||||||
|
ungarbafied_output = re.sub(r'(<key>MediaName</key>\s*<string>).*?(</string>)', r'\1\2', diskutil_output).encode()
|
||||||
|
disk_info = plistlib.loads(ungarbafied_output)
|
||||||
|
try:
|
||||||
|
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info.get("MediaName", "Disk"), "size": disk_info["TotalSize"], "removable": disk_info["Internal"], "partitions": {}}
|
||||||
except KeyError:
|
except KeyError:
|
||||||
# Avoid crashing with CDs installed
|
# Avoid crashing with CDs installed
|
||||||
continue
|
continue
|
||||||
|
|||||||
Reference in New Issue
Block a user