Fix misc issues

This commit is contained in:
Mykola Grymalyuk
2021-03-17 12:16:57 -06:00
parent b78247f9e8
commit 254267f1be
4 changed files with 67 additions and 10 deletions

View File

@@ -4,7 +4,7 @@ from __future__ import print_function
import subprocess, sys, time, platform import subprocess, sys, time, platform
from Resources import build, ModelArray, Constants, utilities from Resources import build, ModelArray, Constants, SysPatch, utilities
class OpenCoreLegacyPatcher(): class OpenCoreLegacyPatcher():
@@ -288,6 +288,25 @@ running, however this will enforce iMac Nvidia Build Patches.
- Slice:\t\tVoodooHDA - Slice:\t\tVoodooHDA
- cdf:\t\tNightShiftEnabler"""]).start() - cdf:\t\tNightShiftEnabler"""]).start()
def PatchVolume(self):
utilities.cls()
utilities.header(["Patching System Volume"])
print("""Patches Root volume to fix misc issues such as:
- Audio
- Ethernet
Note: When the system volume is patched, you can no longer have Delta
updates or have FileVault enabled. Please think carefully if this is
desired.
""")
change_kext_menu = input("Patch System Volume?(y/n): ")
if change_kext_menu in {"y", "Y", "yes", "Yes"}:
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_patch()
else:
print("Returning to main menu")
def main_menu(self): def main_menu(self):
response = None response = None
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS11 ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS11
@@ -325,6 +344,7 @@ running, however this will enforce iMac Nvidia Build Patches.
["Install OpenCore to USB/internal drive", self.install_opencore], ["Install OpenCore to USB/internal drive", self.install_opencore],
["Change Model", self.change_model], ["Change Model", self.change_model],
["Patcher Settings", self.patcher_settings], ["Patcher Settings", self.patcher_settings],
#["Patch Volume", self.PatchVolume],
["Credits", self.credits] ["Credits", self.credits]
] ]

View File

@@ -812,4 +812,23 @@ NoAPFSsupport = [
"MacPro4,1", "MacPro4,1",
"Xserve3,1", "Xserve3,1",
"Dortania1,1" "Dortania1,1"
]
NoRootPatch11 = [
"MacBookAir5,1",
"MacBookAir5,2",
"MacBookPro9,1",
"MacBookPro9,2",
"MacBookPro10,1",
"MacBookPro10,2",
"Macmini6,1",
"Macmini6,2",
"iMac13,1",
"iMac13,2",
"iMac14,1",
"iMac14,2",
"iMac14,3",
"MacPro4,1",
"MacPro5,1",
"Xserve3,1",
] ]

View File

@@ -126,6 +126,8 @@ class PatchSysVolume:
def patch_root_vol(self): def patch_root_vol(self):
print(f"- Detecting patches for {self.model}") print(f"- Detecting patches for {self.model}")
print("- Creating backup snapshot")
subprocess.run("tmutil snapshot".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
# Start Patch engine # Start Patch engine
if self.model in ModelArray.LegacyAudio: if self.model in ModelArray.LegacyAudio:
@@ -137,13 +139,14 @@ class PatchSysVolume:
if self.model in ModelArray.EthernetBroadcom: if self.model in ModelArray.EthernetBroadcom:
print("- Attempting AppleBCM5701Ethernet Patch") print("- Attempting AppleBCM5701Ethernet Patch")
subprocess.run(f"sudo rm -R {self.mount_extensions}/IONetworkingFamily.kext/Contents/PlugIns/AppleBCM5701Ethernet.kext".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode() subprocess.run(f"sudo rm -R {self.mount_extensions}/IONetworkingFamily.kext/Contents/PlugIns/AppleBCM5701Ethernet.kext".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(f"sudo cp -R {self.constants.applebcm_path} {self.mount_extensions}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode() subprocess.run(f"sudo cp -R {self.constants.applebcm_path} {self.mount_extensions}/IONetworkingFamily.kext/Contents/PlugIns/".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
rebuild_required = True rebuild_required = True
if self.model in ModelArray.LegacyGPU: if self.model in ModelArray.LegacyGPU:
print("- Attemping Legacy GPU Patches") print("- Attemping Legacy GPU Patches")
#TODO: Re-enable when GPU patches are public #TODO: Re-enable when GPU patches are public
#self.gpu_accel_patches() #self.gpu_accel_patches()
#rebuild_required = True
if rebuild_required is True: if rebuild_required is True:
self.rebuild_snapshot() self.rebuild_snapshot()
@@ -158,7 +161,9 @@ class PatchSysVolume:
def start_patch(self): def start_patch(self):
# Check SIP # Check SIP
if self.constants.custom_model != None: if self.constants.custom_model != None:
print("Cannot patch for another machine!") print("Root Patching must be done on target machine!")
elif self.model in ModelArray.NoRootPatch11:
print("Root Patching not required for this machine!")
elif self.model not in ModelArray.SupportedSMBIOS: elif self.model not in ModelArray.SupportedSMBIOS:
print("Cannot run on this machine!") print("Cannot run on this machine!")
elif self.constants.detected_os < 10.16: elif self.constants.detected_os < 10.16:
@@ -169,13 +174,26 @@ class PatchSysVolume:
sip_status = nvram_dump["csr-active-config"] sip_status = nvram_dump["csr-active-config"]
except KeyError: except KeyError:
print("- csr-active-config var is missing") print("- csr-active-config var is missing")
sip_status = "00000000" sip_status = b'\x00\x00\x00\x00'
print(sip_status)
if sip_status != "EF0F0000": smb_model: str = subprocess.run("nvram 94B73556-2197-4702-82A8-3E1337DAFBFB:HardwareModel ".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
if not smb_model.startswith("nvram: Error getting variable"):
smb_model = [line.strip().split(":HardwareModel ", 1)[1] for line in smb_model.split("\n") if line.strip().startswith("94B73556-2197-4702-82A8-3E1337DAFBFB:")][0]
if smb_model.startswith("j137"):
smb_status = "Enabled"
else:
smb_status = "Disabled"
else:
smb_status = "Disabled"
if (sip_status == b'\xef\x0f\x00\x00') and (smb_status == "Disabled"):
print("- Detected SIP is disabled, continuing")
input("\nPress [ENTER] to continue")
self.find_mount_root_vol() self.find_mount_root_vol()
print("- Patching complete") print("- Patching complete")
print("\nPlease reboot the machine for patches to take effect") print("\nPlease reboot the machine for patches to take effect")
else: else:
print("- SIP enabled, unable to patch") print("- SIP and SecureBootModel set incorrectly, unable to patch")
print("\nPlease disable SIP in Patcher Settings, build OpenCore again and reinstall OpenCore") print("\nPlease disable SIP and SecureBootModel in Patcher Settings")
print("Then build OpenCore again, reinstall OpenCore to your drive and reboot.")
input("Press [Enter] to go exit.") input("Press [Enter] to go exit.")

View File

@@ -86,9 +86,9 @@ class BuildOpenCore:
# Ethernet patches # Ethernet patches
("nForceEthernet.kext", self.constants.nforce_version, self.constants.nforce_path, lambda: self.model in ModelArray.EthernetNvidia), ("nForceEthernet.kext", self.constants.nforce_version, self.constants.nforce_path, lambda: self.model in ModelArray.EthernetNvidia),
("MarvelYukonEthernet.kext", self.constants.marvel_version, self.constants.marvel_path, lambda: self.model in ModelArray.EthernetMarvell), ("MarvelYukonEthernet.kext", self.constants.marvel_version, self.constants.marvel_path, lambda: self.model in ModelArray.EthernetMarvell),
("CatalinaBCM5701Ethernet.kext", self.constants.bcm570_version, self.constants.bcm570_path, lambda: self.model in ModelArray.EthernetBroadcom), #("CatalinaBCM5701Ethernet.kext", self.constants.bcm570_version, self.constants.bcm570_path, lambda: self.model in ModelArray.EthernetBroadcom),
# Legacy audio # Legacy audio
("VoodooHDA.kext", self.constants.voodoohda_version, self.constants.voodoohda_path, lambda: self.model in ModelArray.LegacyAudio), #("VoodooHDA.kext", self.constants.voodoohda_version, self.constants.voodoohda_path, lambda: self.model in ModelArray.LegacyAudio),
# IDE patch # IDE patch
("AppleIntelPIIXATA.kext", self.constants.piixata_version, self.constants.piixata_path, lambda: self.model in ModelArray.IDEPatch), ("AppleIntelPIIXATA.kext", self.constants.piixata_version, self.constants.piixata_path, lambda: self.model in ModelArray.IDEPatch),
]: ]: