Compare commits

...

10 Commits
0.2.0 ... 0.2.2

Author SHA1 Message Date
Mykola Grymalyuk
0428244e60 Update CLI 2021-06-22 22:48:16 -06:00
Mykola Grymalyuk
135125bae6 Update CLI 2021-06-22 22:35:14 -06:00
Mykola Grymalyuk
120f893d1f Fix Root Patch Failure on Nvidia Tesla GPUs 2021-06-22 20:31:41 -06:00
Mykola Grymalyuk
a33c19448f Avoid double sudo in CLI 2021-06-22 16:55:12 -06:00
Mykola Grymalyuk
b8e29eca28 Fix SysPatch 2021-06-22 16:47:30 -06:00
Mykola Grymalyuk
d4873f8070 Fix CLI Root Patching 2021-06-22 16:43:05 -06:00
Dhinak G
c42ec31415 Fix IORegistry issue 2021-06-22 16:25:50 -04:00
Mykola Grymalyuk
8f251c1214 Increment build 2021-06-22 10:19:48 -06:00
Mykola Grymalyuk
40aea143cf Update build 2021-06-22 10:18:17 -06:00
Dhinak G
e6fc4f4a6e Fix NVMe exception 2021-06-22 12:10:19 -04:00
6 changed files with 90 additions and 49 deletions

View File

@@ -1,6 +1,16 @@
# OpenCore Legacy Patcher changelog
## 0.2.2
- Fix IORegistry issue
- Fix Root Patch Failure on Nvidia Tesla GPUs
## 0.2.1
- Fix NVMe Crash on build
## 0.2.0
- Refactor device probe logic
- Implement PatcherSupportPkg v0.0.10
- Reduces binary sizes depending on OS
@@ -17,14 +27,17 @@
- Allow AirPlay to Mac support on Skylake - Coffeelake Macs
## 0.1.9
- Fix incorrect AMFI and SIP detection
## 0.1.8
- Fix Kernel Panic in Big Sur and Monterey
- Increment binaries:
- Lilu (1.5.4 rolling - 06-15-2021)
## 0.1.7
- Add FireWire Boot Support for Catalina and newer
- Add NVMe firmware support for older models (ie. MacPro3,1)
- OpenCore must be stored on a bootable volume (ie. USB or SATA)
@@ -65,6 +78,7 @@
- User configurable, those prone to seizures are recommended to avoid or have another setup the machine due to initial colour strobing before forcing Million Colours on the display with SwitchResX or ResXtreme
## 0.1.6
- Add XHCI UEFI Driver for 3rd Party USB 3.0 Controllers
- Allows for Boot Support from OpenCore' Picker
- Fix UEFI output on MacPro3,1 with PC GPUs
@@ -81,6 +95,7 @@
- Fix GPU Switching on MacBookPro6,x
## 0.1.5
- Fix crashing when Wireless module not present
- Add iMac10,1 default dGPU pathing
- Add agdpmod=vit9696 to all Nvidia Metal iMacs
@@ -96,9 +111,11 @@
- Add SeedUtil option to Advanced Patcher Settings
## 0.1.4
- Fix Device Path formatting on 2012+ iMacs
## 0.1.3
- Fix internal PCIe devices reporting as external
- Opt for `built-in` when device path is detectable
- Innie 0ccd95e (1.3.0 release - 01-16-2021)
@@ -117,6 +134,7 @@
- Fix NVMe properties not applying when OpenCore is installed
## 0.1.2
- Fix IDE support on 2008 era MacBooks, iMacs and Xserves
- Fix reduced output speeds on BCM94360 series Wifi cards
- Fix accidentally disabling non-existent iGPU in iMac11,2
@@ -142,6 +160,7 @@
- SidecarFixup efdf11c (1.0.0 release - 05-02-2021)
## 0.1.1
- Fix iMac11,3 GFX0 pathing
- Add MouSSE support to iMac10,1 with Metal AMD GPU
- Fix iMac11,1 and iMac11,3 Nvidia boot issues after PRAM reset
@@ -161,9 +180,11 @@
- Fix Acceleration Linking for Intel Ironlake iGPUs
## 0.1.0
- Fix crash on iMacs with Metal GPUs
## 0.0.23
- Fix MacBookPro4,1 15" and 17" audio support
- Fix iMac7,1 24" and iMac9,1 24" audio support
- Fix Macmini4,1 audio support
@@ -184,6 +205,7 @@
- Disable SIP and SecureBootModel by default on legacy GPUs
## 0.0.22
- Add ExFat support for models missing driver
- Aids BootCamp support for EFI based installs on 2010 and older Macs
- Fix CPU Boosting on 2011 and older Macs
@@ -192,11 +214,13 @@
- Add BCM94322 and BCM94321 chipset support
## 0.0.21
- Fix botched images in OpenCanopy
- Add support for 3rd party OpenCore usage detection during building
- Mainly for users transitioning from Ausdauersportler's OpenCore configuration
## 0.0.20
- Fix CPU Calculation on early MCP79 chipsets (ie. iMac9,1, MacBook5,x)
- Increment binaries
- OpenCore c528597 (0.6.8 release - 2021-04-05)
@@ -212,6 +236,7 @@
- Fix Mac Pro and Xserve output issues
## 0.0.19
- Add SMC-Spoof.kext to avoid triggering `smcupdater`
- Add Root Volume patching for older machines
- AppleHDA Patch for 2011 and older (Excluding MacPro4,1+)
@@ -230,6 +255,7 @@
- Fix Broadcom Ethernet on older 2009-2011 Macs
## 0.0.18
- Disable Vault by default due to breaking installations
- Move BOOTx64.efi to System/Library/CoreServices/ to support GPT BootCamp installs
- Disable verbose by default, still configurable by end-user
@@ -240,12 +266,14 @@
- Add custom drive icons for external drives
## 0.0.17
- Fix build detection breaking on older OS
## 0.0.16
- Move Serial selection to Patcher Settings
- Add new SMBIOS patching options:
- Minimal: Only update board ID and BIOSVersion, keep original serials
- Minimal: Only update board ID and BIOSVersion, keep original serials
- Moderate: Update entire SMBIOS, keep original serials
- Advanced: Update entire SMBIOS, generate new serials
- Fix crash on MacBookPro4,1
@@ -261,12 +289,14 @@
- Enable `amfi_get_out_of_my_way=1` when SIP is disabled
## 0.0.15
- Add user-configurable OpenCore DEBUG builds
- Add user-configurable Wifi and GPU patches
- Fix ThirdPartyDrives model detection
- Add HW_BID injection to fix boot.efi error
## 0.0.14
- Enable ThirdPartyDrives to aid with hibernation on 3rd party SATA drives
- Increment OpenCore 7bb41aa (0.6.8 rolling, 2021-03-06)
- Add ForceBooterSignature to resolve hibernation issues
@@ -275,70 +305,83 @@
- Add GopPassThrough quirk for UGA-based systems
## 0.0.13
- Add CPUFriend support to resolve X86PlatformPlugin clashes
- (1.2.3 c388a62 release)
- (1.2.3 c388a62 release)
- Fix crash with MacBookAir5,x
- Fix hibernation support
- Remove Wireless patches for BCM4328/4321(14e4:4328) due to boot issues
## 0.0.12
- Convert OpenCore-Patcher binary to OpenCore-Patcher.app
- Add Backlight patches for modded Nvidia GPUs in iMac10,x-12,x
- Fix sleep for iMac12,x with upgraded GPUs
## 0.0.11
- Re-add OpenCore GUI
- Rewrite in py3
- Add OpenCore-Patcher binary for releases avoiding local python requirement
- Increment binaries
- OpenCore cbd2fa3 (0.6.7 release)
- WhateverGreen 2e19d1b (1.4.8 release)
- OpenCore cbd2fa3 (0.6.7 release)
- WhateverGreen 2e19d1b (1.4.8 release)
- Rework SMBIOS allowing both original and custom serials(Should resolve all iMessage issues)
- Support upgraded GPU detection in iMac10,x-12,x
- Add Wifi card upgrade detection
## 0.0.10
- Increment binaries
- OpenCore 43f5339 (0.6.6 release)
- Lilu d107554 (1.5.1 release)
- WhateverGreen 9e53d8a (1.4.7 release)
- OpenCore 43f5339 (0.6.6 release)
- Lilu d107554 (1.5.1 release)
- WhateverGreen 9e53d8a (1.4.7 release)
- Add IDE support to MacPro3,1
- Set SecureBootModel to iMac Pro(should aid in booting older OSes with OpenCore)
- Update MacBookPro SMBIOS
## 0.0.9
- Resolve firmware install issues bricking Macs
## 0.0.8
- Fix USB Map
- Add HiDPI patch
## 0.0.7
- Add MacPro3,1 to HID patch
- Fix missing SSDT-CPBG patch
- Fix BlacklistAppleUpdate
- Add RestrictEvents kext
## 0.0.6
- Fix macserial crashing
## 0.0.5
- Enable hibernation support
- Work around USB Map failing
- Add checks whether booting with OpenCore
- Fix MouSSE injection
## 0.0.4
- Add basic audio support for legacy chipsets
- Add patch for dual GPU machines
## 0.0.3
- Fix Wireless patch logic
## 0.0.2
- Expand IOHIDFamily Patch to all Nvidia chipsets
- Fix Airdrop 1.0 support
- Add El Capitan era wireless cards
## 0.0.1
- Initial developer preview

View File

@@ -40,7 +40,6 @@ class OpenCoreLegacyPatcher:
parser.add_argument("--verbose", help="Enable verbose boot", action="store_true", required=False)
parser.add_argument("--debug_oc", help="Enable OpenCore DEBUG", action="store_true", required=False)
parser.add_argument("--debug_kext", help="Enable kext DEBUG", action="store_true", required=False)
parser.add_argument("--skip_wifi", help="Skip wifi patches", action="store_true", required=False)
parser.add_argument("--hide_picker", help="Hide OpenCore picker", action="store_true", required=False)
parser.add_argument("--disable_sip", help="Disable SIP", action="store_true", required=False)
parser.add_argument("--disable_smb", help="Disable SecureBootModel", action="store_true", required=False)
@@ -49,10 +48,10 @@ class OpenCoreLegacyPatcher:
parser.add_argument("--firewire", help="Enable FireWire Booting", action="store_true", required=False)
parser.add_argument("--nvme", help="Enable NVMe Booting", action="store_true", required=False)
parser.add_argument("--disable_amfi", help="Disable AMFI", action="store_true", required=False)
parser.add_argument("--moderate_smbios", help="Moderate SMBIOS Patching", action="store_true", required=False)
# Building args requiring value values
parser.add_argument("--model", action="store", help="Set custom model", required=False)
parser.add_argument("--metal_gpu", action="store", help="Set Metal GPU Vendor", required=False)
parser.add_argument("--smbios_spoof", action="store", help="Set SMBIOS patching mode", required=False)
# SysPatch args
@@ -81,9 +80,6 @@ class OpenCoreLegacyPatcher:
if args.debug_kext:
print("- Set kext DEBUG configuration")
self.constants.kext_debug = True
if args.skip_wifi:
print("- Set wifi skip configuration")
self.constants.wifi_build = True
if args.hide_picker:
print("- Set HidePicker configuration")
self.constants.showpicker = False
@@ -105,19 +101,11 @@ class OpenCoreLegacyPatcher:
if args.disable_amfi:
print("- Set Disable AMFI configuration")
self.constants.disable_amfi = True
if args.metal_gpu:
if args.metal_gpu == "Nvidia":
print("- Set Metal GPU patches to Nvidia")
self.constants.metal_build = True
self.constants.imac_vendor = "Nvidia"
elif args.metal_gpu == "AMD":
print("- Set Metal GPU patches to AMD")
self.constants.metal_build = True
self.constants.imac_vendor = "AMD"
else:
print(f"- Unknown GPU arg passed: {args.metal_gpu}")
self.constants.metal_build = False
self.constants.imac_vendor = "None"
if args.moderate_smbios:
print("- Set Moderate SMBIOS Patching configuration")
self.constants.serial_settings = "Moderate"
if args.model:
host_is_target
if args.smbios_spoof:
if args.smbios_spoof == "Minimal":
self.constants.serial_settings = "Minimal"
@@ -148,6 +136,7 @@ If you plan to create the USB for another machine, please select the "Change Mod
sys.exit(1)
else:
print(f"- Using detected model: {self.constants.computer.real_model}")
self.set_defaults(self.constants.custom_model, True)
self.build_opencore()
if args.patch_sys_vol:
if args.terascale_2:
@@ -160,11 +149,6 @@ If you plan to create the USB for another machine, please select the "Change Mod
self.unpatch_vol()
def set_defaults(self, model, host_is_target):
# Defaults
self.constants.sip_status = True
self.constants.secure_status = False # Default false for Monterey
self.constants.disable_amfi = False
if model in ModelArray.LegacyGPU:
if (
host_is_target
@@ -178,27 +162,27 @@ If you plan to create the USB for another machine, please select the "Change Mod
device_probe.NVIDIA.Archs.Kepler,
]
):
print("- Detected Metal GPU, overriding default configuration")
# Building on device and we have a native, supported GPU
self.constants.sip_status = True
# self.constants.secure_status = True # Monterey
self.constants.disable_amfi = False
else:
self.constants.sip_status = False # Unsigned kexts
self.constants.secure_status = False # Root volume modified
self.constants.disable_amfi = True # Unsigned binaries
elif host_is_target:
self.constants.sip_status = False # Unsigned kexts
self.constants.secure_status = False # Root volume modified
self.constants.disable_amfi = True # Unsigned binaries
if model in ModelArray.ModernGPU:
if host_is_target and model in ["iMac13,1", "iMac13,3"] and self.computer.dgpu:
# Some models have a supported dGPU, others don't
print("- Detected Metal dGPU, overriding default configuration")
self.constants.sip_status = True
# self.constants.secure_status = True # Monterey
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
else:
self.constants.sip_status = False # Unsigned kexts
self.constants.secure_status = False # Modified root volume
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
if model == "MacBook8,1":
# MacBook8,1 has an odd bug where it cannot install Monterey with Minimal spoofing
self.constants.serial_settings == "Moderate"
elif host_is_target:
self.constants.sip_status = False # Unsigned kexts
self.constants.secure_status = False # Modified root volume
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
if model == "MacBook8,1" and host_is_target:
# MacBook8,1 has an odd bug where it cannot install Monterey with Minimal spoofing
self.constants.serial_settings == "Moderate"
def patch_vol(self):
SysPatch.PatchSysVolume(self.constants.custom_model or self.constants.computer.real_model, self.constants).start_patch()

View File

@@ -205,7 +205,7 @@ class BuildOpenCore:
if controller.pci_path:
print(f"- Found NVMe ({i}) at {controller.pci_path}")
self.config["DeviceProperties"]["Add"][controller.pci_path]["pci-aspm-default"] = nvme_aspm
self.config["DeviceProperties"]["Add"].setdefault(controller.pci_path, {})["pci-aspm-default"] = nvme_aspm
self.config["DeviceProperties"]["Add"][controller.pci_path.rpartition("/")[0]] = {"pci-aspm-default": nvme_aspm}
else:
if "-nvmefaspm" not in self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"]:

View File

@@ -12,7 +12,7 @@ from Resources import device_probe
class Constants:
def __init__(self):
self.patcher_version = "0.2.0"
self.patcher_version = "0.2.2"
self.opencore_commit = "4e0ff2d - 05-23-2021"
self.opencore_version = "0.7.0"
self.lilu_version = "1.5.4"
@@ -476,7 +476,7 @@ class Constants:
@property
def legacy_nvidia_path(self):
return self.legacy_graphics / Path("Nvidia-Tesla-Fermi")
return self.legacy_graphics / Path("Nvidia-Tesla")
@property
def legacy_nvidia_kepler_path(self):

View File

@@ -49,7 +49,7 @@ class PatchSysVolume:
self.mount_private_frameworks = f"{self.mount_location}/System/Library/PrivateFrameworks"
def elevated(self, *args, **kwargs) -> subprocess.CompletedProcess:
if os.getuid() == 0:
if os.getuid() == 0 or self.constants.gui_mode is True:
return subprocess.run(*args, **kwargs)
else:
return subprocess.run(["sudo"] + [args[0][0]] + args[0][1:], **kwargs)
@@ -473,6 +473,9 @@ class PatchSysVolume:
self.detect_patch_set()
if self.no_patch is False and self.constants.gui_mode is False:
change_menu = input("Would you like to continue with Root Volume Patching?(y/n): ")
elif self.constants.gui_mode is True:
change_menu = "y"
print("Continuing root patching")
else:
change_menu = None
print("- No Root Patches required for your machine!")

View File

@@ -1,9 +1,12 @@
from __future__ import annotations
from dataclasses import dataclass
import plistlib
import subprocess
import tempfile
from dataclasses import dataclass
from pathlib import Path
from typing import Generator
from xml.parsers.expat import ExpatError
@dataclass
@@ -18,7 +21,15 @@ class IORegistryEntry:
class IOReg:
def __init__(self):
self.ioreg = plistlib.loads(subprocess.run("ioreg -a -l".split(), stdout=subprocess.PIPE).stdout.strip())
try:
self.ioreg = plistlib.loads(subprocess.run("ioreg -a -l".split(), stdout=subprocess.PIPE).stdout.strip())
except ExpatError:
fd, file_path = tempfile.mkstemp(suffix=".plist")
with open(fd, "wb") as file_obj:
file_obj.write(subprocess.run("ioreg -a -l".split(), stdout=subprocess.PIPE).stdout.strip())
subprocess.run("plutil -convert binary1".split() + [file_path])
self.ioreg = plistlib.load(Path(file_path).open("rb"))
self.tree = self.recurse(self.ioreg, None)
def recurse(self, entry, parent):