mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-06-21 06:30:52 +10:00
Initial Commit
This commit is contained in:
@@ -1,287 +0,0 @@
|
|||||||
# Lists Root patches used by sys_patch.py
|
|
||||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
|
||||||
DeleteNvidiaAccel11 = [
|
|
||||||
"AMDRadeonX4000.kext",
|
|
||||||
"AMDRadeonX4000HWServices.kext",
|
|
||||||
"AMDRadeonX5000.kext",
|
|
||||||
"AMDRadeonX5000HWServices.kext",
|
|
||||||
"AMDRadeonX6000.kext",
|
|
||||||
"AMDRadeonX6000Framebuffer.kext",
|
|
||||||
"AMDRadeonX6000HWServices.kext",
|
|
||||||
"AppleIntelBDWGraphics.kext",
|
|
||||||
"AppleIntelBDWGraphicsFramebuffer.kext",
|
|
||||||
"AppleIntelCFLGraphicsFramebuffer.kext",
|
|
||||||
"AppleIntelHD4000Graphics.kext",
|
|
||||||
"AppleIntelHD5000Graphics.kext",
|
|
||||||
"AppleIntelICLGraphics.kext",
|
|
||||||
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
|
||||||
"AppleIntelKBLGraphics.kext",
|
|
||||||
"AppleIntelKBLGraphicsFramebuffer.kext",
|
|
||||||
"AppleIntelSKLGraphics.kext",
|
|
||||||
"AppleIntelSKLGraphicsFramebuffer.kext",
|
|
||||||
"AppleIntelFramebufferAzul.kext",
|
|
||||||
"AppleIntelFramebufferCapri.kext",
|
|
||||||
"AppleParavirtGPU.kext",
|
|
||||||
"GeForce.kext",
|
|
||||||
"IOAcceleratorFamily2.kext",
|
|
||||||
"IOGPUFamily.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
DeleteAMDAccel11 = [
|
|
||||||
"AMDRadeonX4000.kext",
|
|
||||||
"AMDRadeonX4000HWServices.kext",
|
|
||||||
"AMDRadeonX5000.kext",
|
|
||||||
"AMDRadeonX5000HWServices.kext",
|
|
||||||
"AMDRadeonX6000.kext",
|
|
||||||
"AMDRadeonX6000Framebuffer.kext",
|
|
||||||
"AMDRadeonX6000HWServices.kext",
|
|
||||||
"AMD7000Controller.kext", # AMDSupport Dependency
|
|
||||||
"AMD8000Controller.kext", # AMDSupport Dependency
|
|
||||||
"AMD9000Controller.kext", # AMDSupport Dependency
|
|
||||||
"AMD9500Controller.kext", # AMDSupport Dependency
|
|
||||||
"AMD10000Controller.kext", # AMDSupport Dependency
|
|
||||||
"AppleIntelBDWGraphics.kext",
|
|
||||||
"AppleIntelBDWGraphicsFramebuffer.kext",
|
|
||||||
"AppleIntelCFLGraphicsFramebuffer.kext",
|
|
||||||
"AppleIntelHD4000Graphics.kext",
|
|
||||||
"AppleIntelHD5000Graphics.kext",
|
|
||||||
"AppleIntelICLGraphics.kext",
|
|
||||||
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
|
||||||
"AppleIntelKBLGraphics.kext",
|
|
||||||
"AppleIntelKBLGraphicsFramebuffer.kext",
|
|
||||||
"AppleIntelSKLGraphics.kext",
|
|
||||||
"AppleIntelSKLGraphicsFramebuffer.kext",
|
|
||||||
"AppleIntelFramebufferAzul.kext",
|
|
||||||
"AppleIntelFramebufferCapri.kext",
|
|
||||||
"AppleParavirtGPU.kext",
|
|
||||||
"GeForce.kext",
|
|
||||||
"IOGPUFamily.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
DeleteAMDAccel11TS2 = [
|
|
||||||
"AppleCameraInterface.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddNvidiaAccel11 = [
|
|
||||||
"GeForceGA.bundle",
|
|
||||||
"GeForceTesla.kext",
|
|
||||||
"GeForceTeslaGLDriver.bundle",
|
|
||||||
"GeForceTeslaVADriver.bundle",
|
|
||||||
"NVDANV50HalTesla.kext",
|
|
||||||
"NVDAResmanTesla.kext",
|
|
||||||
"IOSurface.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddNvidiaBrightness = [
|
|
||||||
"GeForceGA.bundle",
|
|
||||||
"GeForceTesla.kext",
|
|
||||||
"GeForceTeslaGLDriver.bundle",
|
|
||||||
"GeForceTeslaVADriver.bundle",
|
|
||||||
"NVDANV50HalTesla.kext",
|
|
||||||
"NVDAResmanTesla.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddNvidiaKeplerAccel11 = [
|
|
||||||
"GeForce.kext",
|
|
||||||
"GeForceAIRPlugin.bundle",
|
|
||||||
"GeForceGLDriver.bundle",
|
|
||||||
"GeForceMTLDriver.bundle",
|
|
||||||
"GeForceVADriver.bundle",
|
|
||||||
"NVDAGF100Hal.kext",
|
|
||||||
"NVDAGK100Hal.kext",
|
|
||||||
"NVDAResman.kext",
|
|
||||||
"NVDAStartup.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddNvidiaTeslaAccel12 = [
|
|
||||||
"NVDAStartup.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddAMDAccel11 = [
|
|
||||||
"AMD2400Controller.kext",
|
|
||||||
"AMD2600Controller.kext",
|
|
||||||
"AMD3800Controller.kext",
|
|
||||||
"AMD4600Controller.kext",
|
|
||||||
"AMD4800Controller.kext",
|
|
||||||
"AMD5000Controller.kext",
|
|
||||||
"AMD6000Controller.kext",
|
|
||||||
"AMDFramebuffer.kext",
|
|
||||||
"AMDLegacyFramebuffer.kext",
|
|
||||||
"AMDLegacySupport.kext",
|
|
||||||
"AMDRadeonVADriver.bundle",
|
|
||||||
"AMDRadeonVADriver2.bundle",
|
|
||||||
"AMDRadeonX3000.kext",
|
|
||||||
"AMDRadeonX3000GLDriver.bundle",
|
|
||||||
"AMDShared.bundle",
|
|
||||||
"AMDSupport.kext",
|
|
||||||
"ATIRadeonX2000.kext",
|
|
||||||
"ATIRadeonX2000GA.plugin",
|
|
||||||
"ATIRadeonX2000GLDriver.bundle",
|
|
||||||
"ATIRadeonX2000VADriver.bundle",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddAMDBrightness = [
|
|
||||||
"AMD2400Controller.kext",
|
|
||||||
"AMD2600Controller.kext",
|
|
||||||
"AMD3800Controller.kext",
|
|
||||||
"AMD4600Controller.kext",
|
|
||||||
"AMD4800Controller.kext",
|
|
||||||
"AMD5000Controller.kext",
|
|
||||||
"AMD6000Controller.kext",
|
|
||||||
"AMDLegacyFramebuffer.kext",
|
|
||||||
"AMDLegacySupport.kext",
|
|
||||||
"AMDRadeonVADriver.bundle",
|
|
||||||
"AMDRadeonVADriver2.bundle",
|
|
||||||
# "AMDRadeonX3000.kext",
|
|
||||||
# "AMDRadeonX3000GLDriver.bundle",
|
|
||||||
"AMDShared.bundle",
|
|
||||||
"ATIRadeonX2000.kext",
|
|
||||||
"ATIRadeonX2000GA.plugin",
|
|
||||||
"ATIRadeonX2000GLDriver.bundle",
|
|
||||||
"ATIRadeonX2000VADriver.bundle",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddAMDAccel11TS2 = [
|
|
||||||
"IOSurface.kext",
|
|
||||||
"IOAcceleratorFamily2.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddIntelGen1Accel = [
|
|
||||||
"AppleIntelHDGraphics.kext",
|
|
||||||
"AppleIntelHDGraphicsFB.kext",
|
|
||||||
"AppleIntelHDGraphicsGA.plugin",
|
|
||||||
"AppleIntelHDGraphicsGLDriver.bundle",
|
|
||||||
"AppleIntelHDGraphicsVADriver.bundle",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddIntelGen2Accel = [
|
|
||||||
"AppleIntelHD3000Graphics.kext",
|
|
||||||
"AppleIntelHD3000GraphicsGA.plugin",
|
|
||||||
"AppleIntelHD3000GraphicsGLDriver.bundle",
|
|
||||||
"AppleIntelHD3000GraphicsVADriver.bundle",
|
|
||||||
# "AppleIntelSNBGraphicsFB.kext",
|
|
||||||
"AppleIntelSNBVA.bundle",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddIntelGen2AccelStock = [
|
|
||||||
"AppleIntelSNBGraphicsFB-Clean.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddIntelGen2AccelPatched = [
|
|
||||||
"AppleIntelSNBGraphicsFB.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddIntelGen3Accel = [
|
|
||||||
"AppleIntelFramebufferCapri.kext",
|
|
||||||
"AppleIntelHD4000Graphics.kext",
|
|
||||||
"AppleIntelHD4000GraphicsGLDriver.bundle",
|
|
||||||
"AppleIntelHD4000GraphicsMTLDriver.bundle",
|
|
||||||
"AppleIntelHD4000GraphicsVADriver.bundle",
|
|
||||||
"AppleIntelIVBVA.bundle",
|
|
||||||
"AppleIntelGraphicsShared.bundle",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddGeneralAccel = ["IOAcceleratorFamily2.kext", "IOSurface.kext"]
|
|
||||||
|
|
||||||
DeleteBrightness = ["AppleGraphicsControl.kext/Contents/PlugIns/AGDCBacklightControl.kext"]
|
|
||||||
|
|
||||||
DeleteDemux = [
|
|
||||||
"AppleGraphicsControl.kext/Contents/PlugIns/AGDCBacklightControl.kext",
|
|
||||||
"AppleGraphicsControl.kext/Contents/PlugIns/AppleMuxControl.kext",
|
|
||||||
"AppleBacklight.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddDemux = [
|
|
||||||
"AppleMuxControl.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddBrightness = [
|
|
||||||
"AppleBacklight.kext",
|
|
||||||
"AppleBacklightExpert.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddVolumeControl = [
|
|
||||||
"AppleHDA.kext",
|
|
||||||
"IOAudioFamily.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddVolumeControlv2 = [
|
|
||||||
"AppleHDA.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
DeleteVolumeControl = [
|
|
||||||
"AppleVirtIO.kext",
|
|
||||||
"AppleVirtualGraphics.kext",
|
|
||||||
"AppleVirtualPlatform.kext",
|
|
||||||
"ApplePVPanic.kext",
|
|
||||||
"AppleVirtIOStorage.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddNvidiaAccelLegacy = [
|
|
||||||
# "GeForceGA.bundle",
|
|
||||||
"GeForceTesla.kext",
|
|
||||||
"GeForceTeslaGLDriver.bundle",
|
|
||||||
"GeForceTeslaVADriver.bundle",
|
|
||||||
"NVDANV50HalTesla.kext",
|
|
||||||
"NVDAResmanTesla.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddAMDAccelLegacy = [
|
|
||||||
"AMD2400Controller.kext",
|
|
||||||
"AMD2600Controller.kext",
|
|
||||||
"AMD3800Controller.kext",
|
|
||||||
"AMD4600Controller.kext",
|
|
||||||
"AMD4800Controller.kext",
|
|
||||||
"AMD5000Controller.kext",
|
|
||||||
"AMD6000Controller.kext",
|
|
||||||
"AMDFramebuffer.kext",
|
|
||||||
"AMDLegacyFramebuffer.kext",
|
|
||||||
"AMDLegacySupport.kext",
|
|
||||||
"AMDRadeonVADriver.bundle",
|
|
||||||
"AMDRadeonVADriver2.bundle",
|
|
||||||
"AMDRadeonX3000.kext",
|
|
||||||
"AMDRadeonX3000GLDriver.bundle",
|
|
||||||
"AMDRadeonX4000HWServices.kext",
|
|
||||||
"AMDRadeonX4000.kext",
|
|
||||||
"AMDRadeonX4000GLDriver.bundle",
|
|
||||||
"AMDShared.bundle",
|
|
||||||
"AMDSupport.kext",
|
|
||||||
"ATIRadeonX2000.kext",
|
|
||||||
"ATIRadeonX2000GA.plugin",
|
|
||||||
"ATIRadeonX2000GLDriver.bundle",
|
|
||||||
"ATIRadeonX2000VADriver.bundle",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddGeneralAccelCatalina = [
|
|
||||||
"AppleGraphicsControl.kext",
|
|
||||||
"AppleGraphicsPowerManagement.kext",
|
|
||||||
"AppleMCCSControl.kext",
|
|
||||||
"IOGraphicsFamily.kext",
|
|
||||||
"IONDRVSupport.kext",
|
|
||||||
"IOSurface.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
AddGeneralAccelMojave = [
|
|
||||||
"IONDRVSupport.kext",
|
|
||||||
"AppleGraphicsControl.kext",
|
|
||||||
"AppleGraphicsPowerManagement.kext",
|
|
||||||
"AppleMCCSControl.kext",
|
|
||||||
"IOAccelerator2D.plugin",
|
|
||||||
"IOAcceleratorFamily2.kext",
|
|
||||||
"IOGraphicsFamily.kext",
|
|
||||||
]
|
|
||||||
|
|
||||||
BackupLocations = [
|
|
||||||
"System/Library/Extensions",
|
|
||||||
"System/Library/Frameworks/CoreDisplay.framework",
|
|
||||||
"System/Library/Frameworks/IOSurface.framework",
|
|
||||||
"System/Library/Frameworks/OpenGL.framework",
|
|
||||||
"System/Library/Frameworks/WebKit.framework",
|
|
||||||
"System/Library/LaunchDaemons",
|
|
||||||
"System/Library/PrivateFrameworks/DisplayServices.framework",
|
|
||||||
"System/Library/PrivateFrameworks/GPUSupport.framework",
|
|
||||||
"System/Library/PrivateFrameworks/SkyLight.framework",
|
|
||||||
"System/Library/PrivateFrameworks/IOAccelerator.framework",
|
|
||||||
"System/Library/PrivateFrameworks/AppleGVA.framework",
|
|
||||||
"System/Library/PrivateFrameworks/AppleGVACore.framework",
|
|
||||||
]
|
|
||||||
@@ -0,0 +1,305 @@
|
|||||||
|
from data import os_data
|
||||||
|
|
||||||
|
def SystemPatchDictionary(os):
|
||||||
|
sys_patch_dict = {
|
||||||
|
"Graphics": {
|
||||||
|
"Non-Metal Common": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"IOSurface.kext": "10.15.7",
|
||||||
|
},
|
||||||
|
"/System/Library/Frameworks": {
|
||||||
|
"OpenGL.framework": "10.14.3",
|
||||||
|
"CoreDisplay.framework": f"10.14.4-{os}",
|
||||||
|
"IOSurface.framework": f"10.15.7-{os}",
|
||||||
|
"QuartzCore.framework": f"10.15.7-{os}",
|
||||||
|
},
|
||||||
|
"/System/Library/PrivateFrameworks": {
|
||||||
|
"GPUSupport.framework": "10.14.3",
|
||||||
|
"SkyLight.framework": f"10.14.6-{os}",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Remove": {
|
||||||
|
"/System/Library/Extensions": [
|
||||||
|
"AMDRadeonX4000.kext",
|
||||||
|
"AMDRadeonX4000HWServices.kext",
|
||||||
|
"AMDRadeonX5000.kext",
|
||||||
|
"AMDRadeonX5000HWServices.kext",
|
||||||
|
"AMDRadeonX6000.kext",
|
||||||
|
"AMDRadeonX6000Framebuffer.kext",
|
||||||
|
"AMDRadeonX6000HWServices.kext",
|
||||||
|
"AppleIntelBDWGraphics.kext",
|
||||||
|
"AppleIntelBDWGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelCFLGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelHD4000Graphics.kext",
|
||||||
|
"AppleIntelHD5000Graphics.kext",
|
||||||
|
"AppleIntelICLGraphics.kext",
|
||||||
|
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelKBLGraphics.kext",
|
||||||
|
"AppleIntelKBLGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelSKLGraphics.kext",
|
||||||
|
"AppleIntelSKLGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelFramebufferAzul.kext",
|
||||||
|
"AppleIntelFramebufferCapri.kext",
|
||||||
|
"AppleParavirtGPU.kext",
|
||||||
|
"GeForce.kext",
|
||||||
|
"IOAcceleratorFamily2.kext",
|
||||||
|
"IOGPUFamily.kext",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"Install Non-Root": {
|
||||||
|
"/Library/Application Support/SkyLightPlugins": {
|
||||||
|
**({ "DropboxHack.dylib": "SkyLightPlugins" } if os >= os_data.os_data.monterey else {}),
|
||||||
|
**({ "DropboxHack.txt": "SkyLightPlugins" } if os >= os_data.os_data.monterey else {}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Metal Common": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Frameworks": {
|
||||||
|
"OpenCL.framework": "11.6",
|
||||||
|
"WebKit.framework": "11.6",
|
||||||
|
},
|
||||||
|
"/System/Library/PrivateFrameworks": {
|
||||||
|
"AppleGVA.framework": "10.15.7",
|
||||||
|
"AppleGVACore.framework": "10.15.7",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
"Legacy GVA": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/PrivateFrameworks": {
|
||||||
|
"AppleGVA.framework": "10.13.6",
|
||||||
|
"AppleGVACore.framework": "10.15.7",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
"Nvidia Tesla": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"GeForceGA.bundle": "10.13.6",
|
||||||
|
"GeForceTesla.kext": "10.13.6",
|
||||||
|
"GeForceTeslaGLDriver.bundle": "10.13.6",
|
||||||
|
"GeForceTeslaVADriver.bundle": "10.13.6",
|
||||||
|
"NVDANV50HalTesla.kext": "10.13.6",
|
||||||
|
"NVDAResmanTesla.kext": "10.13.6",
|
||||||
|
**({ "NVDAStartup.kext": "12.0 Beta 6" } if os >= os_data.os_data.monterey else {})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Nvidia Kepler": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"GeForceAIRPlugin.bundle": "11.0 Beta 3",
|
||||||
|
"GeForceGLDriver.bundle": "11.0 Beta 3",
|
||||||
|
"GeForceMTLDriver.bundle": "11.0 Beta 3",
|
||||||
|
"GeForce.kext": "12.0 Beta 6",
|
||||||
|
"GeForceVADriver.bundle": "12.0 Beta 6",
|
||||||
|
"NVDAGF100Hal.kext": "12.0 Beta 6",
|
||||||
|
"NVDAGK100Hal.kext": "12.0 Beta 6",
|
||||||
|
"NVDAResman.kext": "12.0 Beta 6",
|
||||||
|
"NVDAStartup.kext": "12.0 Beta 6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"AMD TeraScale 1": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"AMD2400Controller.kext": "10.13.6",
|
||||||
|
"AMD2600Controller.kext": "10.13.6",
|
||||||
|
"AMD3800Controller.kext": "10.13.6",
|
||||||
|
"AMD4600Controller.kext": "10.13.6",
|
||||||
|
"AMD4800Controller.kext": "10.13.6",
|
||||||
|
"AMDFramebuffer.kext": "10.13.6",
|
||||||
|
"AMDLegacyFramebuffer.kext": "10.13.6",
|
||||||
|
"AMDLegacySupport.kext": "10.13.6",
|
||||||
|
"AMDShared.bundle": "10.13.6",
|
||||||
|
"AMDSupport.kext": "10.13.6",
|
||||||
|
"ATIRadeonX2000.kext": "10.13.6",
|
||||||
|
"ATIRadeonX2000GA.plugin": "10.13.6",
|
||||||
|
"ATIRadeonX2000GLDriver.bundle": "10.13.6",
|
||||||
|
"ATIRadeonX2000VADriver.bundle": "10.13.6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Remove": {
|
||||||
|
"/System/Library/Extensions": [
|
||||||
|
"AMD7000Controller.kext",
|
||||||
|
"AMD8000Controller.kext",
|
||||||
|
"AMD9000Controller.kext",
|
||||||
|
"AMD9500Controller.kext",
|
||||||
|
"AMD10000Controller.kext",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"AMD TeraScale 2": {
|
||||||
|
"Processes": {
|
||||||
|
"defaults write com.apple.cmio CMIO_Unit_Input_ASC.DoNotUseOpenCL -bool true": False,
|
||||||
|
},
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"AMD5000Controller.kext": "10.13.6",
|
||||||
|
"AMD6000Controller.kext": "10.13.6",
|
||||||
|
"AMDFramebuffer.kext": "10.13.6",
|
||||||
|
"AMDLegacyFramebuffer.kext": "10.13.6",
|
||||||
|
"AMDLegacySupport.kext": "10.13.6",
|
||||||
|
"AMDRadeonVADriver.bundle": "10.13.6",
|
||||||
|
"AMDRadeonVADriver2.bundle": "10.13.6",
|
||||||
|
"AMDRadeonX3000.kext": "10.13.6",
|
||||||
|
"AMDRadeonX3000GLDriver.bundle": "10.13.6",
|
||||||
|
"AMDShared.bundle": "10.13.6",
|
||||||
|
"AMDSupport.kext": "10.13.6",
|
||||||
|
"IOAcceleratorFamily2.kext": "10.13.6",
|
||||||
|
"IOSurface.kext": "10.14.6",
|
||||||
|
},
|
||||||
|
"/System/Library/Frameworks": {
|
||||||
|
"OpenCL.framework": "10.13.6",
|
||||||
|
"IOSurface.framework": f"10.14.6-{os}",
|
||||||
|
},
|
||||||
|
"/System/Library/PrivateFrameworks": {
|
||||||
|
"GPUSupport.framework": "10.13.6",
|
||||||
|
"IOAccelerator.framework": f"10.13.6-{os}",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Remove": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"AppleCameraInterface.kext", # Specific to IOAccelerator downgrade
|
||||||
|
"AMD7000Controller.kext",
|
||||||
|
"AMD8000Controller.kext",
|
||||||
|
"AMD9000Controller.kext",
|
||||||
|
"AMD9500Controller.kext",
|
||||||
|
"AMD10000Controller.kext",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Intel Ironlake": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"AppleIntelHDGraphics.kext": "10.13.6",
|
||||||
|
"AppleIntelHDGraphicsFB.kext": "10.13.6",
|
||||||
|
"AppleIntelHDGraphicsGA.plugin": "10.13.6",
|
||||||
|
"AppleIntelHDGraphicsGLDriver.bundle": "10.13.6",
|
||||||
|
"AppleIntelHDGraphicsVADriver.bundle": "10.13.6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Intel Sandy Bridge": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"AppleIntelHD3000Graphics.kext": "10.13.6",
|
||||||
|
"AppleIntelHD3000GraphicsGA.plugin": "10.13.6",
|
||||||
|
"AppleIntelHD3000GraphicsGLDriver.bundle": "10.13.6",
|
||||||
|
"AppleIntelHD3000GraphicsVADriver.bundle": "10.13.6",
|
||||||
|
"AppleIntelSNBGraphicsFB.kext": "10.13.6", # Add check for Board ID patched kext
|
||||||
|
"AppleIntelSNBVA.bundle": "10.13.6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Intel Ivy Bridge": {
|
||||||
|
"Processes": {
|
||||||
|
"defaults write com.apple.coremedia hardwareVideoDecoder -string enable": False,
|
||||||
|
},
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"AppleIntelHD4000GraphicsGLDriver.bundle": "11.0 Beta 6",
|
||||||
|
"AppleIntelHD4000GraphicsMTLDriver.bundle": "11.0 Beta 6",
|
||||||
|
"AppleIntelHD4000GraphicsVADriver.bundle": "11.3 Beta 1",
|
||||||
|
"AppleIntelFramebufferCapri.kext": "11.4",
|
||||||
|
"AppleIntelHD4000Graphics.kext": "11.4",
|
||||||
|
"AppleIntelIVBVA.bundle": "11.4",
|
||||||
|
"AppleIntelGraphicsShared.bundle": "11.4", # libIGIL-Metal.dylib pulled from 11.0 Beta 6
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Audio": {
|
||||||
|
"Legacy Realtek": {
|
||||||
|
# For iMac7,1 and iMac8,1 units with legacy Realtek HD Audio
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"AppleHDA.kext": "10.11.6",
|
||||||
|
"IOAudioFamily.kext": "10.11.6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Remove": {
|
||||||
|
"/System/Library/Extensions": [
|
||||||
|
"AppleVirtIO.kext",
|
||||||
|
"AppleVirtualGraphics.kext",
|
||||||
|
"AppleVirtualPlatform.kext",
|
||||||
|
"ApplePVPanic.kext",
|
||||||
|
"AppleVirtIOStorage.kext",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
# For Mac Pros with non-UGA/GOP GPUs
|
||||||
|
"Legacy Non-GOP": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"AppleHDA.kext": "10.13.6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Networking": {
|
||||||
|
"Legacy WiFi": {
|
||||||
|
"Install": {
|
||||||
|
"/usr/libexec": {
|
||||||
|
"airportd": "11.5.2",
|
||||||
|
},
|
||||||
|
"/System/Library/CoreServices": {
|
||||||
|
"WiFiAgent.app": "11.5.2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Install Non-Root": {
|
||||||
|
"/Library/Application Support/SkyLightPlugins": {
|
||||||
|
**({ "CoreWLAN.dylib": "SkyLightPlugins" } if os >= os_data.os_data.monterey else {}),
|
||||||
|
**({ "CoreWLAN.txt": "SkyLightPlugins" } if os >= os_data.os_data.monterey else {}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Brightness": {
|
||||||
|
"Legacy Brightness": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions": {
|
||||||
|
"AppleBacklight.kext": "10.12.6",
|
||||||
|
"AppleBacklightExpert.kext": "10.12.6",
|
||||||
|
},
|
||||||
|
"/System/Library/PrivateFrameworks": {
|
||||||
|
"DisplayServices.framework": "10.12.6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Remove": {
|
||||||
|
"/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns": [
|
||||||
|
"AGDCBacklightControl.kext",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Miscellaneous": {
|
||||||
|
"Legacy GMUX": {
|
||||||
|
"Install": {
|
||||||
|
"/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns": {
|
||||||
|
"AppleMuxControl.kext": "10.12.6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Remove": {
|
||||||
|
"/System/Library/Extensions": [
|
||||||
|
"AppleBacklight.kext",
|
||||||
|
],
|
||||||
|
"/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns": [
|
||||||
|
"AGDCBacklightControl.kext",
|
||||||
|
"AppleMuxControl.kext",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Legacy Keyboard Backlight": {
|
||||||
|
"Processes": {
|
||||||
|
"defaults write /Library/Preferences/.GlobalPreferences.plist Moraea_BacklightHack -bool true": True,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return sys_patch_dict
|
||||||
+1
-1
@@ -899,7 +899,7 @@ class wx_python_gui:
|
|||||||
|
|
||||||
# Download resources
|
# Download resources
|
||||||
sys.stdout=menu_redirect.RedirectLabel(self.developer_note)
|
sys.stdout=menu_redirect.RedirectLabel(self.developer_note)
|
||||||
download_result, os_ver, extensions_link, framework_link = sys_patch_download.grab_patcher_support_pkg(self.constants).download_files()
|
download_result, os_ver, link = sys_patch_download.grab_patcher_support_pkg(self.constants).download_files()
|
||||||
sys.stdout=sys.__stdout__
|
sys.stdout=sys.__stdout__
|
||||||
|
|
||||||
if download_result is None:
|
if download_result is None:
|
||||||
|
|||||||
+6
-159
@@ -15,7 +15,7 @@ class Constants:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
# Patcher Versioning
|
# Patcher Versioning
|
||||||
self.patcher_version = "0.4.5" # OpenCore-Legacy-Patcher
|
self.patcher_version = "0.4.5" # OpenCore-Legacy-Patcher
|
||||||
self.patcher_support_pkg_version = "0.3.9" # PatcherSupportPkg
|
self.patcher_support_pkg_version = "0.4.0" # PatcherSupportPkg
|
||||||
self.url_patcher_support_pkg = "https://github.com/dortania/PatcherSupportPkg/releases/download/"
|
self.url_patcher_support_pkg = "https://github.com/dortania/PatcherSupportPkg/releases/download/"
|
||||||
self.nightly_url_patcher_support_pkg = "https://nightly.link/dortania/PatcherSupportPkg/workflows/build/master/"
|
self.nightly_url_patcher_support_pkg = "https://nightly.link/dortania/PatcherSupportPkg/workflows/build/master/"
|
||||||
self.discord_link = "https://discord.gg/rqdPgH8xSN"
|
self.discord_link = "https://discord.gg/rqdPgH8xSN"
|
||||||
@@ -571,167 +571,14 @@ class Constants:
|
|||||||
return self.payload_path / Path("AutoPkg-Assets.pkg.zip")
|
return self.payload_path / Path("AutoPkg-Assets.pkg.zip")
|
||||||
|
|
||||||
# Apple Payloads Paths
|
# Apple Payloads Paths
|
||||||
|
@property
|
||||||
|
def payload_local_binaries_root_path(self):
|
||||||
|
return self.payload_path / Path("Universal-Binaries")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_root_path_zip(self):
|
def payload_local_binaries_root_path_zip(self):
|
||||||
return self.payload_path / Path("Apple.zip")
|
return self.payload_path / Path("Universal-Binaries.zip")
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_universal_extensions_zip_path(self):
|
|
||||||
return self.payload_path / Path("Universal-Extensions.zip")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_root_path(self):
|
|
||||||
return self.payload_path / Path("Apple")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_kexts_path(self):
|
|
||||||
return self.payload_path / Path("Universal-Extensions")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_coreservices_path(self):
|
|
||||||
return self.payload_apple_root_path / Path("CoreServices")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_usr_path(self):
|
|
||||||
return self.payload_apple_root_path / Path("usr")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_libexec_path(self):
|
|
||||||
return self.payload_apple_usr_path / Path("libexec")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_application_support(self):
|
|
||||||
return self.payload_apple_root_path / Path("Application Support")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_private_path(self):
|
|
||||||
return self.payload_apple_root_path / Path("private")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_etc_path(self):
|
|
||||||
return self.payload_apple_private_path / Path("etc")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_frameworks_path(self):
|
|
||||||
return self.payload_apple_root_path / Path("Frameworks")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_frameworks_path_accel(self):
|
|
||||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-Non-Metal")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_frameworks_path_accel_ts2(self):
|
|
||||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-TeraScale-2")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_frameworks_path_accel_ivy(self):
|
|
||||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-Ivy-Bridge")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_frameworks_path_accel_kepler(self):
|
|
||||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-Kepler")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_lauchd_path(self):
|
|
||||||
return self.payload_apple_root_path / Path("LaunchDaemons")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_private_frameworks_path(self):
|
|
||||||
return self.payload_apple_root_path / Path("PrivateFrameworks")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_private_frameworks_path_accel(self):
|
|
||||||
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration-Non-Metal")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_private_frameworks_path_accel_ts2(self):
|
|
||||||
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration-TeraScale-2")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_private_frameworks_path_accel_ivy(self):
|
|
||||||
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration-Ivy-Bridge")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_private_frameworks_path_brightness(self):
|
|
||||||
return self.payload_apple_private_frameworks_path / Path("Brightness-Control")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def payload_apple_private_frameworks_path_legacy_drm(self):
|
|
||||||
return self.payload_apple_private_frameworks_path / Path("Legacy-GVA")
|
|
||||||
|
|
||||||
# Apple Extensions
|
|
||||||
# El Capitan Extensions
|
|
||||||
@property
|
|
||||||
def audio_path(self):
|
|
||||||
return self.payload_apple_kexts_path / Path("Audio")
|
|
||||||
|
|
||||||
# High Sierra Extensions
|
|
||||||
@property
|
|
||||||
def audio_v2_path(self):
|
|
||||||
return self.payload_apple_kexts_path / Path("Audio-v2")
|
|
||||||
|
|
||||||
# GPU Kexts and Bundles
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_graphics(self):
|
|
||||||
return self.payload_apple_kexts_path / Path("Graphics-Acceleration")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_nvidia_path(self):
|
|
||||||
return self.legacy_graphics / Path("Nvidia-Tesla")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_nvidia_kepler_path(self):
|
|
||||||
return self.legacy_graphics / Path("Nvidia-Kepler")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_amd_path(self):
|
|
||||||
return self.legacy_graphics / Path("AMD-TeraScale")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_amd_path_ts2(self):
|
|
||||||
return self.legacy_graphics / Path("AMD-TeraScale-2")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_intel_gen1_path(self):
|
|
||||||
return self.legacy_graphics / Path("Intel-Gen5-Ironlake")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_intel_gen2_path(self):
|
|
||||||
return self.legacy_graphics / Path("Intel-Gen6-SandyBridge")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_intel_gen3_path(self):
|
|
||||||
return self.legacy_graphics / Path("Intel-Gen7-IvyBridge")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_general_path(self):
|
|
||||||
return self.legacy_graphics / Path("General-Patches")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_brightness(self):
|
|
||||||
return self.payload_apple_kexts_path / Path("Brightness-Control")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_mux_path(self):
|
|
||||||
return self.payload_apple_kexts_path / Path("Legacy-Mux")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_wifi_coreservices(self):
|
|
||||||
return self.payload_apple_coreservices_path / Path("Legacy-Wifi")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_wifi_libexec(self):
|
|
||||||
return self.payload_apple_libexec_path / Path("Legacy-Wifi")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_wifi_support(self):
|
|
||||||
return self.payload_apple_application_support / Path("Legacy-Wifi")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def legacy_dropbox_support(self):
|
|
||||||
return self.payload_apple_application_support / Path("Dropbox")
|
|
||||||
|
|
||||||
sbm_values = [
|
sbm_values = [
|
||||||
"j137ap", # iMacPro1,1
|
"j137ap", # iMacPro1,1
|
||||||
|
|||||||
@@ -105,6 +105,13 @@ def find_model_off_board(board):
|
|||||||
return key
|
return key
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def find_board_off_model(model):
|
||||||
|
if model in smbios_data.smbios_dictionary:
|
||||||
|
return smbios_data.smbios_dictionary[model]["Board ID"]
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def check_firewire(model):
|
def check_firewire(model):
|
||||||
# MacBooks never supported FireWire
|
# MacBooks never supported FireWire
|
||||||
# Pre-Thunderbolt MacBook Airs as well
|
# Pre-Thunderbolt MacBook Airs as well
|
||||||
@@ -117,3 +124,53 @@ def check_firewire(model):
|
|||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def determine_best_board_id_for_sandy(current_board_id, gpus):
|
||||||
|
# This function is mainly for users who are either spoofing or using hackintoshes
|
||||||
|
# Generally hackintosh will use whatever the latest SMBIOS is, so we need to determine
|
||||||
|
# the best Board ID to patch inside of AppleIntelSNBGraphicsFB
|
||||||
|
|
||||||
|
# Currently the kext supports the following models:
|
||||||
|
# MacBookPro8,1 - Mac-94245B3640C91C81 (13")
|
||||||
|
# MacBookPro8,2 - Mac-94245A3940C91C80 (15")
|
||||||
|
# MacBookPro8,3 - Mac-942459F5819B171B (17")
|
||||||
|
# MacBookAir4,1 - Mac-C08A6BB70A942AC2 (11")
|
||||||
|
# MacBookAir4,2 - Mac-742912EFDBEE19B3 (13")
|
||||||
|
# Macmini5,1 - Mac-8ED6AF5B48C039E1
|
||||||
|
# Macmini5,2 - Mac-4BC72D62AD45599E (headless)
|
||||||
|
# Macmini5,3 - Mac-7BA5B2794B2CDB12
|
||||||
|
# iMac12,1 - Mac-942B5BF58194151B (headless)
|
||||||
|
# iMac12,2 - Mac-942B59F58194171B (headless)
|
||||||
|
# Unknown(MBP) - Mac-94245AF5819B141B
|
||||||
|
# Unknown(iMac) - Mac-942B5B3A40C91381 (headless)
|
||||||
|
if current_board_id:
|
||||||
|
model = find_model_off_board(current_board_id)
|
||||||
|
if model:
|
||||||
|
if model.startswith("MacBook"):
|
||||||
|
try:
|
||||||
|
size = int(smbios_data.smbios_dictionary[model]["Screen Size"])
|
||||||
|
except KeyError:
|
||||||
|
size = 13 # Assume 13 if it's missing
|
||||||
|
if model.startswith("MacBookPro"):
|
||||||
|
if size >= 17:
|
||||||
|
return find_board_off_model("MacBookPro8,3")
|
||||||
|
elif size >= 15:
|
||||||
|
return find_board_off_model("MacBookPro8,2")
|
||||||
|
else:
|
||||||
|
return find_board_off_model("MacBookPro8,1")
|
||||||
|
else: # MacBook and MacBookAir
|
||||||
|
if size >= 13:
|
||||||
|
return find_board_off_model("MacBookAir4,2")
|
||||||
|
else:
|
||||||
|
return find_board_off_model("MacBookAir4,1")
|
||||||
|
else:
|
||||||
|
# We're working with a desktop, so need to figure out whether the unit is running headless or not
|
||||||
|
if len(gpus) > 1:
|
||||||
|
# More than 1 GPU detected, assume headless
|
||||||
|
if model.startswith("Macmini"):
|
||||||
|
return find_board_off_model("Macmini5,2")
|
||||||
|
else:
|
||||||
|
return find_board_off_model("iMac12,2")
|
||||||
|
else:
|
||||||
|
return find_board_off_model("Macmini5,1")
|
||||||
|
return find_board_off_model("Macmini5,1") # Safest bet if we somehow don't know the model
|
||||||
+184
-435
@@ -11,8 +11,8 @@ import subprocess
|
|||||||
import zipfile
|
import zipfile
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from resources import constants, utilities, generate_smbios, sys_patch_download, sys_patch_detect
|
from resources import constants, generate_smbios, utilities, sys_patch_download, sys_patch_detect
|
||||||
from data import sip_data, sys_patch_data, os_data
|
from data import os_data, sys_patch_dict
|
||||||
|
|
||||||
|
|
||||||
class PatchSysVolume:
|
class PatchSysVolume:
|
||||||
@@ -26,7 +26,7 @@ class PatchSysVolume:
|
|||||||
self.root_supports_snapshot = utilities.check_if_root_is_apfs_snapshot()
|
self.root_supports_snapshot = utilities.check_if_root_is_apfs_snapshot()
|
||||||
self.constants.root_patcher_succeded = False # Reset Variable each time we start
|
self.constants.root_patcher_succeded = False # Reset Variable each time we start
|
||||||
|
|
||||||
# GUI will detect hardware patches betfore starting PatchSysVolume()
|
# GUI will detect hardware patches before starting PatchSysVolume()
|
||||||
# However the TUI will not, so allow for data to be passed in manually avoiding multiple calls
|
# However the TUI will not, so allow for data to be passed in manually avoiding multiple calls
|
||||||
if hardware_details is None:
|
if hardware_details is None:
|
||||||
hardware_details = sys_patch_detect.detect_root_patch(self.computer.real_model, self.constants).detect_patch_set()
|
hardware_details = sys_patch_detect.detect_root_patch(self.computer.real_model, self.constants).detect_patch_set()
|
||||||
@@ -68,14 +68,7 @@ class PatchSysVolume:
|
|||||||
else:
|
else:
|
||||||
self.mount_location = ""
|
self.mount_location = ""
|
||||||
self.mount_location_data = ""
|
self.mount_location_data = ""
|
||||||
self.mount_coreservices = f"{self.mount_location}/System/Library/CoreServices"
|
|
||||||
self.mount_extensions = f"{self.mount_location}/System/Library/Extensions"
|
self.mount_extensions = f"{self.mount_location}/System/Library/Extensions"
|
||||||
self.mount_frameworks = f"{self.mount_location}/System/Library/Frameworks"
|
|
||||||
self.mount_lauchd = f"{self.mount_location}/System/Library/LaunchDaemons"
|
|
||||||
self.mount_private_frameworks = f"{self.mount_location}/System/Library/PrivateFrameworks"
|
|
||||||
self.mount_libexec = f"{self.mount_location}/usr/libexec"
|
|
||||||
self.mount_extensions_mux = f"{self.mount_location}/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/"
|
|
||||||
self.mount_private_etc = f"{self.mount_location_data}/private/etc"
|
|
||||||
self.mount_application_support = f"{self.mount_location_data}/Library/Application Support"
|
self.mount_application_support = f"{self.mount_location_data}/Library/Application Support"
|
||||||
|
|
||||||
def find_mount_root_vol(self, patch):
|
def find_mount_root_vol(self, patch):
|
||||||
@@ -147,6 +140,7 @@ class PatchSysVolume:
|
|||||||
# - Check the output for 'KernelCache ID' to see if the cache was successfully rebuilt
|
# - Check the output for 'KernelCache ID' to see if the cache was successfully rebuilt
|
||||||
# kmutil notes:
|
# kmutil notes:
|
||||||
# - will return 71 on failure to build KCs
|
# - will return 71 on failure to build KCs
|
||||||
|
# - will return 31 on 'No binaries or codeless kexts were provided'
|
||||||
# - will return -10 if the volume is missing (ie. unmounted by another process)
|
# - will return -10 if the volume is missing (ie. unmounted by another process)
|
||||||
if result.returncode != 0 or (self.constants.detected_os < os_data.os_data.catalina and "KernelCache ID" not in result.stdout.decode()):
|
if result.returncode != 0 or (self.constants.detected_os < os_data.os_data.catalina and "KernelCache ID" not in result.stdout.decode()):
|
||||||
self.success_status = False
|
self.success_status = False
|
||||||
@@ -191,25 +185,6 @@ class PatchSysVolume:
|
|||||||
print("- Unmounting Root Volume (Don't worry if this fails)")
|
print("- Unmounting Root Volume (Don't worry if this fails)")
|
||||||
utilities.elevated(["diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
utilities.elevated(["diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||||
|
|
||||||
def delete_old_binaries(self, vendor_patch):
|
|
||||||
for delete_current_kext in vendor_patch:
|
|
||||||
delete_path = Path(self.mount_extensions) / Path(delete_current_kext)
|
|
||||||
if Path(delete_path).exists():
|
|
||||||
print(f"- Deleting {delete_current_kext}")
|
|
||||||
utilities.process_status(utilities.elevated(["rm", "-R", delete_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
else:
|
|
||||||
print(f"- Couldn't find {delete_current_kext}, skipping")
|
|
||||||
|
|
||||||
def add_new_binaries(self, vendor_patch, vendor_location):
|
|
||||||
for add_current_kext in vendor_patch:
|
|
||||||
existing_path = Path(self.mount_extensions) / Path(add_current_kext)
|
|
||||||
if Path(existing_path).exists():
|
|
||||||
print(f"- Found conflicting kext, Deleting Root Volume's {add_current_kext}")
|
|
||||||
utilities.process_status(utilities.elevated(["rm", "-R", existing_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
print(f"- Adding {add_current_kext}")
|
|
||||||
utilities.process_status(utilities.elevated(["cp", "-R", f"{vendor_location}/{add_current_kext}", self.mount_extensions], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
utilities.process_status(utilities.elevated(["chmod", "-Rf", "755", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
utilities.process_status(utilities.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
|
|
||||||
def install_auto_patcher_launch_agent(self):
|
def install_auto_patcher_launch_agent(self):
|
||||||
# Installs the following:
|
# Installs the following:
|
||||||
@@ -265,360 +240,192 @@ class PatchSysVolume:
|
|||||||
|
|
||||||
def clean_skylight_plugins(self):
|
def clean_skylight_plugins(self):
|
||||||
if (Path(self.mount_application_support) / Path("SkyLightPlugins/")).exists():
|
if (Path(self.mount_application_support) / Path("SkyLightPlugins/")).exists():
|
||||||
print("- Found SkylightPlugins folder, removing")
|
print("- Found SkylightPlugins folder, removing old plugins")
|
||||||
utilities.process_status(utilities.elevated(["rm", "-rf", f"{self.mount_application_support}/SkyLightPlugins"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
utilities.process_status(utilities.elevated(["rm", "-Rf", f"{self.mount_application_support}/SkyLightPlugins"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
utilities.process_status(utilities.elevated(["mkdir", f"{self.mount_application_support}/SkyLightPlugins"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
def add_brightness_patch(self):
|
|
||||||
self.delete_old_binaries(sys_patch_data.DeleteBrightness)
|
|
||||||
self.add_new_binaries(sys_patch_data.AddBrightness, self.constants.legacy_brightness)
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_brightness}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
|
||||||
utilities.process_status(utilities.elevated(["chmod", "-Rf", "755", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
utilities.process_status(utilities.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
|
|
||||||
def add_audio_patch(self):
|
|
||||||
if self.model in ["iMac7,1", "iMac8,1"]:
|
|
||||||
self.delete_old_binaries(sys_patch_data.DeleteVolumeControl)
|
|
||||||
self.add_new_binaries(sys_patch_data.AddVolumeControl, self.constants.audio_path)
|
|
||||||
else:
|
else:
|
||||||
self.add_new_binaries(sys_patch_data.AddVolumeControlv2, self.constants.audio_v2_path)
|
print("- Creating SkylightPlugins folder")
|
||||||
|
utilities.process_status(utilities.elevated(["mkdir", f"{self.mount_application_support}/SkyLightPlugins/"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
|
||||||
def add_wifi_patch(self):
|
|
||||||
print("- Merging Wireless CoreSerices patches")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.legacy_wifi_coreservices}/", self.mount_coreservices], stdout=subprocess.PIPE)
|
|
||||||
utilities.process_status(utilities.elevated(["chmod", "-Rf", "755", f"{self.mount_coreservices}/WiFiAgent.app"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
utilities.process_status(utilities.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_coreservices}/WiFiAgent.app"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
print("- Merging Wireless usr/libexec patches")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.legacy_wifi_libexec}/", self.mount_libexec], stdout=subprocess.PIPE)
|
|
||||||
utilities.process_status(utilities.elevated(["chmod", "755", f"{self.mount_libexec}/airportd"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
utilities.process_status(utilities.elevated(["chown", "root:wheel", f"{self.mount_libexec}/airportd"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
|
|
||||||
# dylib patch to resolve password crash prompt
|
|
||||||
# Note requires ASentientBot's SkyLight to function
|
|
||||||
# Thus Metal machines do not benefit from this patch, however install anyways as harmless
|
|
||||||
print("- Merging Wireless SkyLightPlugins")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.legacy_wifi_support}/", self.mount_application_support], stdout=subprocess.PIPE)
|
|
||||||
|
|
||||||
def add_legacy_mux_patch(self):
|
|
||||||
self.delete_old_binaries(sys_patch_data.DeleteDemux)
|
|
||||||
print("- Merging Legacy Mux Kext patches")
|
|
||||||
utilities.process_status(
|
|
||||||
utilities.elevated(["cp", "-R", f"{self.constants.legacy_mux_path}/AppleMuxControl.kext", self.mount_extensions_mux], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
)
|
|
||||||
|
|
||||||
def add_legacy_keyboard_backlight_patch(self):
|
|
||||||
print("- Enabling Keyboard Backlight delay")
|
|
||||||
utilities.process_status(
|
|
||||||
utilities.elevated(["defaults", "write", "/Library/Preferences/.GlobalPreferences.plist", "Moraea_BacklightHack", "-bool", "true"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
)
|
|
||||||
|
|
||||||
def add_legacy_dropbox_patch(self):
|
|
||||||
print("- Merging DropboxHack SkyLightPlugins")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.legacy_dropbox_support}/", self.mount_application_support], stdout=subprocess.PIPE)
|
|
||||||
|
|
||||||
def gpu_accel_legacy(self):
|
|
||||||
if self.constants.detected_os == os_data.os_data.mojave:
|
|
||||||
print("- Installing General Acceleration Kext patches for Mojave")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddGeneralAccelMojave, self.constants.legacy_general_path)
|
|
||||||
elif self.constants.detected_os == os_data.os_data.catalina:
|
|
||||||
print("- Installing General Acceleration Kext patches for Catalina")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddGeneralAccelCatalina, self.constants.legacy_general_path)
|
|
||||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey]:
|
|
||||||
print("- Installing General Acceleration Kext patches for Big Sur/Monterey")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddGeneralAccel, self.constants.legacy_general_path)
|
|
||||||
|
|
||||||
# Nvidia
|
|
||||||
def gpu_accel_legacy_nvidia_master(self):
|
|
||||||
if self.constants.detected_os in [os_data.os_data.mojave, os_data.os_data.catalina]:
|
|
||||||
print("- Installing Nvidia Acceleration Kext patches for Mojave/Catalina")
|
|
||||||
self.gpu_accel_legacy()
|
|
||||||
self.add_new_binaries(sys_patch_data.AddNvidiaAccelLegacy, self.constants.legacy_nvidia_path)
|
|
||||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey]:
|
|
||||||
print("- Installing Nvidia Acceleration Kext patches for Big Sur/Monterey")
|
|
||||||
self.delete_old_binaries(sys_patch_data.DeleteNvidiaAccel11)
|
|
||||||
self.gpu_accel_legacy()
|
|
||||||
self.add_new_binaries(sys_patch_data.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
|
|
||||||
if self.constants.detected_os == os_data.os_data.monterey and self.constants.detected_os_minor > 0:
|
|
||||||
# Beta 7+ removes NVDAStartup
|
|
||||||
self.add_new_binaries(sys_patch_data.AddNvidiaTeslaAccel12, self.constants.legacy_nvidia_kepler_path)
|
|
||||||
else:
|
|
||||||
print("- Installing basic Nvidia Framebuffer Kext patches for generic OS")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddNvidiaBrightness, self.constants.legacy_nvidia_path)
|
|
||||||
|
|
||||||
# AMD/ATI
|
|
||||||
def gpu_accel_legacy_ts1_master(self):
|
|
||||||
if self.constants.detected_os in [os_data.os_data.mojave, os_data.os_data.catalina]:
|
|
||||||
print("- Installing TeraScale 1 Acceleration Kext patches for Mojave/Catalina")
|
|
||||||
self.gpu_accel_legacy()
|
|
||||||
self.add_new_binaries(sys_patch_data.AddAMDAccelLegacy, self.constants.legacy_amd_path)
|
|
||||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey]:
|
|
||||||
print("- Installing TeraScale 1 Acceleration Kext patches for Big Sur/Monterey")
|
|
||||||
self.delete_old_binaries(sys_patch_data.DeleteAMDAccel11)
|
|
||||||
self.gpu_accel_legacy()
|
|
||||||
self.add_new_binaries(sys_patch_data.AddAMDAccel11, self.constants.legacy_amd_path)
|
|
||||||
else:
|
|
||||||
print("- Installing basic TeraScale 1 Framebuffer Kext patches for generic OS")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddAMDBrightness, self.constants.legacy_amd_path)
|
|
||||||
|
|
||||||
def gpu_accel_legacy_ts2_master(self):
|
|
||||||
if self.constants.detected_os in [os_data.os_data.mojave, os_data.os_data.catalina] and self.constants.allow_ts2_accel is True:
|
|
||||||
print("- Installing TeraScale 2 Acceleration Kext patches for Mojave/Catalina")
|
|
||||||
self.gpu_accel_legacy()
|
|
||||||
self.add_new_binaries(sys_patch_data.AddAMDAccelLegacy, self.constants.legacy_amd_path)
|
|
||||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey] and self.constants.allow_ts2_accel is True:
|
|
||||||
print("- Installing TeraScale 2 Acceleration Kext patches for Big Sur")
|
|
||||||
self.delete_old_binaries(sys_patch_data.DeleteAMDAccel11)
|
|
||||||
self.delete_old_binaries(sys_patch_data.DeleteAMDAccel11TS2)
|
|
||||||
self.gpu_accel_legacy()
|
|
||||||
self.add_new_binaries(sys_patch_data.AddAMDAccel11, self.constants.legacy_amd_path)
|
|
||||||
else:
|
|
||||||
print("- Installing basic TeraScale 2 Framebuffer Kext patches for generic OS")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddAMDBrightness, self.constants.legacy_amd_path)
|
|
||||||
|
|
||||||
# Intel
|
|
||||||
def gpu_accel_legacy_ironlake_master(self):
|
|
||||||
if self.constants.detected_os in [os_data.os_data.mojave, os_data.os_data.catalina]:
|
|
||||||
print("- Installing Ironlake Acceleration Kext patches for Mojave/Catalina")
|
|
||||||
self.gpu_accel_legacy()
|
|
||||||
self.add_new_binaries(sys_patch_data.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
|
||||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey]:
|
|
||||||
print("- Installing Ironlake Acceleration Kext patches for Big Sur/Monterey")
|
|
||||||
self.delete_old_binaries(sys_patch_data.DeleteNvidiaAccel11)
|
|
||||||
self.gpu_accel_legacy()
|
|
||||||
self.add_new_binaries(sys_patch_data.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
|
||||||
else:
|
|
||||||
print("- Installing basic Ironlake Framebuffer Kext patches for generic OS")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
|
||||||
|
|
||||||
def gpu_accel_legacy_sandybridge_master(self):
|
|
||||||
if self.constants.detected_os in [os_data.os_data.mojave, os_data.os_data.catalina]:
|
|
||||||
print("- Installing Sandy Bridge Acceleration Kext patches for Mojave/Catalina")
|
|
||||||
self.gpu_accel_legacy()
|
|
||||||
self.add_new_binaries(sys_patch_data.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
|
||||||
self.gpu_accel_legacy_sandybridge_board_id()
|
|
||||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey]:
|
|
||||||
print("- Installing Sandy Bridge Acceleration Kext patches for Big Sur/Monterey")
|
|
||||||
self.delete_old_binaries(sys_patch_data.DeleteNvidiaAccel11)
|
|
||||||
self.gpu_accel_legacy()
|
|
||||||
self.add_new_binaries(sys_patch_data.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
|
||||||
self.gpu_accel_legacy_sandybridge_board_id()
|
|
||||||
self.gpu_accel_legacy_gva()
|
|
||||||
else:
|
|
||||||
print("- Installing basic Sandy Bridge Framebuffer Kext patches for generic OS")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
|
||||||
self.gpu_accel_legacy_sandybridge_board_id()
|
|
||||||
|
|
||||||
def gpu_accel_legacy_sandybridge_board_id(self):
|
|
||||||
if self.constants.computer.reported_board_id in self.constants.sandy_board_id_stock:
|
|
||||||
print("- Using stock AppleIntelSNBGraphicsFB")
|
|
||||||
# TODO: Clean this function up
|
|
||||||
# add_new_binaries() and delete_old_binaries() have a bug when the passed array has a single element
|
|
||||||
# 'TypeError: expected str, bytes or os.PathLike object, not list'
|
|
||||||
# This is a temporary workaround to fix that
|
|
||||||
utilities.elevated(["rm", "-r", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB-Clean.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
utilities.elevated(["rm", "-r", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
# Add kext
|
|
||||||
print("- Adding AppleIntelSNBGraphicsFB.kext")
|
|
||||||
utilities.elevated(
|
|
||||||
["cp", "-r", f"{self.constants.legacy_intel_gen2_path}/AppleIntelSNBGraphicsFB-Clean.kext", f"{self.mount_extensions}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
|
||||||
)
|
|
||||||
# Rename kext
|
|
||||||
utilities.elevated(
|
|
||||||
["mv", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB-Clean.kext", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
|
||||||
)
|
|
||||||
# Fix permissions
|
|
||||||
utilities.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
utilities.elevated(["chmod", "-Rf", "755", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
|
|
||||||
else:
|
|
||||||
# Adjust board ID for spoofs
|
|
||||||
print("- Using Board ID patched AppleIntelSNBGraphicsFB")
|
|
||||||
utilities.elevated(["rm", "-r", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB-Clean.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
utilities.elevated(["rm", "-r", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
# Add kext
|
|
||||||
print("- Adding AppleIntelSNBGraphicsFB.kext")
|
|
||||||
utilities.elevated(["cp", "-r", f"{self.constants.legacy_intel_gen2_path}/AppleIntelSNBGraphicsFB.kext", f"{self.mount_extensions}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
# Fix permissions
|
|
||||||
utilities.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
utilities.elevated(["chmod", "-Rf", "755", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
|
|
||||||
def gpu_framebuffer_ivybridge_master(self):
|
|
||||||
if self.constants.detected_os == os_data.os_data.monterey:
|
|
||||||
print("- Installing IvyBridge Acceleration Kext patches for Monterey")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddIntelGen3Accel, self.constants.legacy_intel_gen3_path)
|
|
||||||
if self.validate is False:
|
|
||||||
print("- Fixing Acceleration in CoreMedia")
|
|
||||||
utilities.process_status(subprocess.run(["defaults", "write", "com.apple.coremedia", "hardwareVideoDecoder", "-string", "enable"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
print("- Merging Ivy Bridge Frameworks")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel_ivy}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
print("- Merging Ivy Bridge PrivateFrameworks")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_accel_ivy}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
|
||||||
else:
|
|
||||||
print("- Installing basic Ivy Bridge Kext patches for generic OS")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddIntelGen3Accel, self.constants.legacy_intel_gen3_path)
|
|
||||||
|
|
||||||
def gpu_framebuffer_kepler_master(self):
|
|
||||||
if self.constants.detected_os == os_data.os_data.monterey:
|
|
||||||
print("- Installing Kepler Acceleration Kext patches for Monterey")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddNvidiaKeplerAccel11, self.constants.legacy_nvidia_kepler_path)
|
|
||||||
print("- Merging Kepler Frameworks")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel_kepler}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
else:
|
|
||||||
print("- Installing Kepler Kext patches for generic OS")
|
|
||||||
self.add_new_binaries(sys_patch_data.AddNvidiaKeplerAccel11, self.constants.legacy_nvidia_kepler_path)
|
|
||||||
|
|
||||||
def gpu_accel_legacy_gva(self):
|
|
||||||
print("- Merging AppleGVA Hardware Accel patches for non-Metal")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_legacy_drm}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
|
||||||
|
|
||||||
def gpu_accel_legacy_extended(self):
|
|
||||||
if self.constants.detected_os == os_data.os_data.monterey:
|
|
||||||
self.add_legacy_dropbox_patch()
|
|
||||||
|
|
||||||
if self.legacy_keyboard_backlight is True:
|
|
||||||
self.add_legacy_keyboard_backlight_patch()
|
|
||||||
|
|
||||||
print("- Merging general legacy Frameworks")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
if self.constants.detected_os > os_data.os_data.big_sur:
|
|
||||||
print("- Merging Monterey WebKit patch")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel_ivy}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
|
|
||||||
print("- Merging general legacy PrivateFrameworks")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_accel}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
|
||||||
if self.constants.detected_os > os_data.os_data.catalina:
|
|
||||||
# With PatcherSupportPkg v0.2.0, IOHID-Fixup.plist is deprecated and integrated into SkyLight patch set
|
|
||||||
if (Path(self.mount_lauchd) / Path("IOHID-Fixup.plist")).exists():
|
|
||||||
print("- Stripping legacy IOHID-Fixup.plist")
|
|
||||||
utilities.process_status(
|
|
||||||
utilities.elevated(["rm", "-f", f"{self.mount_lauchd}/IOHID-Fixup.plist"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
print("- Disabling Library Validation")
|
|
||||||
utilities.process_status(
|
|
||||||
utilities.elevated(
|
|
||||||
["defaults", "write", "/Library/Preferences/com.apple.security.libraryvalidation.plist", "DisableLibraryValidation", "-bool", "true"],
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
stderr=subprocess.STDOUT,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
def gpu_accel_legacy_extended_ts2(self):
|
|
||||||
print("- Merging TeraScale 2 legacy Frameworks")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel_ts2}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
|
|
||||||
print("- Merging TeraScale 2 PrivateFrameworks")
|
|
||||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_accel_ts2}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
|
||||||
if self.validate is False:
|
|
||||||
print("- Fixing Acceleration in CMIO")
|
|
||||||
utilities.process_status(subprocess.run(["defaults", "write", "com.apple.cmio", "CMIO_Unit_Input_ASC.DoNotUseOpenCL", "-bool", "true"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
|
||||||
|
|
||||||
def patch_root_vol(self):
|
def patch_root_vol(self):
|
||||||
print(f"- Running patches for {self.model}")
|
print(f"- Running patches for {self.model}")
|
||||||
|
|
||||||
# Before starting, clean out old plugins
|
self.execute_patchset(self.generate_patchset())
|
||||||
self.clean_skylight_plugins()
|
|
||||||
|
|
||||||
# Graphics patches
|
|
||||||
if self.nvidia_legacy is True:
|
|
||||||
print("- Installing legacy Nvidia Patches")
|
|
||||||
if self.constants.detected_os in self.constants.legacy_accel_support:
|
|
||||||
print("- Detected supported OS, installing Acceleration Patches")
|
|
||||||
self.added_legacy_kexts = True
|
|
||||||
else:
|
|
||||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
|
||||||
self.gpu_accel_legacy_nvidia_master()
|
|
||||||
|
|
||||||
elif self.kepler_gpu is True:
|
|
||||||
print("- Installing Kepler Patches")
|
|
||||||
if self.constants.detected_os == os_data.os_data.monterey:
|
|
||||||
print("- Detected supported OS, installing Acceleration Patches")
|
|
||||||
else:
|
|
||||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
|
||||||
self.gpu_framebuffer_kepler_master()
|
|
||||||
|
|
||||||
elif self.amd_ts1 is True:
|
|
||||||
print("- Installing legacy TeraScale 1 Patches")
|
|
||||||
if self.constants.detected_os in self.constants.legacy_accel_support:
|
|
||||||
print("- Detected supported OS, installing Acceleration Patches")
|
|
||||||
self.added_legacy_kexts = True
|
|
||||||
else:
|
|
||||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
|
||||||
self.gpu_accel_legacy_ts1_master()
|
|
||||||
|
|
||||||
elif self.amd_ts2 is True:
|
|
||||||
print("- Installing legacy TeraScale 2 Patches")
|
|
||||||
if self.constants.detected_os in self.constants.legacy_accel_support:
|
|
||||||
print("- Detected supported OS, installing Acceleration Patches")
|
|
||||||
self.added_legacy_kexts = True
|
|
||||||
else:
|
|
||||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
|
||||||
self.gpu_accel_legacy_ts2_master()
|
|
||||||
|
|
||||||
if self.iron_gpu is True:
|
|
||||||
print("- Installing legacy Ironlake Patches")
|
|
||||||
if self.constants.detected_os in self.constants.legacy_accel_support:
|
|
||||||
print("- Detected supported OS, installing Acceleration Patches")
|
|
||||||
self.added_legacy_kexts = True
|
|
||||||
else:
|
|
||||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
|
||||||
self.gpu_accel_legacy_ironlake_master()
|
|
||||||
|
|
||||||
elif self.sandy_gpu is True:
|
|
||||||
print("- Installing legacy Sandy Bridge Patches")
|
|
||||||
if self.constants.detected_os in self.constants.legacy_accel_support:
|
|
||||||
print("- Detected supported OS, installing Acceleration Patches")
|
|
||||||
self.added_legacy_kexts = True
|
|
||||||
else:
|
|
||||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
|
||||||
self.gpu_accel_legacy_sandybridge_master()
|
|
||||||
|
|
||||||
elif self.ivy_gpu is True:
|
|
||||||
print("- Installing Ivy Bridge Patches")
|
|
||||||
if self.constants.detected_os == os_data.os_data.monterey:
|
|
||||||
print("- Detected supported OS, installing Acceleration Patches")
|
|
||||||
else:
|
|
||||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
|
||||||
self.gpu_framebuffer_ivybridge_master()
|
|
||||||
|
|
||||||
if self.amd_ts2 is True and self.constants.detected_os in self.constants.legacy_accel_support and self.constants.allow_ts2_accel is True:
|
|
||||||
# TeraScale 2 patches must be installed after Intel HD3000
|
|
||||||
self.add_new_binaries(sys_patch_data.AddAMDAccel11TS2, self.constants.legacy_amd_path_ts2)
|
|
||||||
|
|
||||||
if self.added_legacy_kexts is True and self.constants.detected_os in self.constants.legacy_accel_support:
|
|
||||||
self.gpu_accel_legacy_extended()
|
|
||||||
if self.amd_ts2 is True and self.constants.allow_ts2_accel is True:
|
|
||||||
self.gpu_accel_legacy_extended_ts2()
|
|
||||||
|
|
||||||
# Misc patches
|
|
||||||
if self.brightness_legacy is True:
|
|
||||||
print("- Installing legacy Brightness Control")
|
|
||||||
self.add_brightness_patch()
|
|
||||||
|
|
||||||
if self.legacy_audio is True:
|
|
||||||
print("- Fixing Volume Control Support")
|
|
||||||
self.add_audio_patch()
|
|
||||||
|
|
||||||
if self.legacy_wifi is True:
|
|
||||||
print("- Installing legacy Wireless support")
|
|
||||||
self.add_wifi_patch()
|
|
||||||
|
|
||||||
if self.legacy_gmux is True:
|
|
||||||
print("- Installing Legacy Mux Brightness support")
|
|
||||||
self.add_legacy_mux_patch()
|
|
||||||
|
|
||||||
if self.constants.wxpython_variant is True and self.constants.detected_os >= os_data.os_data.big_sur:
|
if self.constants.wxpython_variant is True and self.constants.detected_os >= os_data.os_data.big_sur:
|
||||||
self.install_auto_patcher_launch_agent()
|
self.install_auto_patcher_launch_agent()
|
||||||
|
|
||||||
if self.validate is False:
|
self.rebuild_snapshot()
|
||||||
self.rebuild_snapshot()
|
|
||||||
|
def generate_patchset(self):
|
||||||
|
all_hardware_patchset = sys_patch_dict.SystemPatchDictionary(self.constants.detected_os)
|
||||||
|
required_patches = {}
|
||||||
|
|
||||||
|
print("- Creating Patch Set for Booted Hardware:")
|
||||||
|
if self.iron_gpu is True:
|
||||||
|
print(" - Adding Intel Ironlake Graphics Patchset")
|
||||||
|
required_patches.update({"Non-Metal Common": all_hardware_patchset["Graphics"]["Non-Metal Common"]})
|
||||||
|
required_patches.update({"Intel Ironlake": all_hardware_patchset["Graphics"]["Intel Ironlake"]})
|
||||||
|
if self.sandy_gpu is True:
|
||||||
|
print(" - Adding Intel Sandy Bridge Graphics Patchset")
|
||||||
|
required_patches.update({"Non-Metal Common": all_hardware_patchset["Graphics"]["Non-Metal Common"]})
|
||||||
|
required_patches.update({"Legacy GVA": all_hardware_patchset["Graphics"]["Legacy GVA"]})
|
||||||
|
required_patches.update({"Intel Sandy Bridge": all_hardware_patchset["Graphics"]["Intel Sandy Bridge"]})
|
||||||
|
if self.ivy_gpu is True:
|
||||||
|
print(" - Adding Intel Ivy Bridge Graphics Patchset")
|
||||||
|
required_patches.update({"Metal Common": all_hardware_patchset["Graphics"]["Metal Common"]})
|
||||||
|
required_patches.update({"Intel Ivy Bridge": all_hardware_patchset["Graphics"]["Intel Ivy Bridge"]})
|
||||||
|
if self.nvidia_legacy is True:
|
||||||
|
print(" - Adding Nvidia Tesla Graphics Patchset")
|
||||||
|
required_patches.update({"Non-Metal Common": all_hardware_patchset["Graphics"]["Non-Metal Common"]})
|
||||||
|
required_patches.update({"Nvidia Tesla": all_hardware_patchset["Graphics"]["Nvidia Tesla"]})
|
||||||
|
if self.kepler_gpu is True:
|
||||||
|
print(" - Adding Nvidia Kepler Graphics Patchset")
|
||||||
|
required_patches.update({"Metal Common": all_hardware_patchset["Graphics"]["Metal Common"]})
|
||||||
|
required_patches.update({"Nvidia Kepler": all_hardware_patchset["Graphics"]["Nvidia Kepler"]})
|
||||||
|
if self.amd_ts1 is True:
|
||||||
|
print(" - Adding AMD TeraScale 1 Graphics Patchset")
|
||||||
|
required_patches.update({"Non-Metal Common": all_hardware_patchset["Graphics"]["Non-Metal Common"]})
|
||||||
|
required_patches.update({"AMD TeraScale 1": all_hardware_patchset["Graphics"]["AMD TeraScale 1"]})
|
||||||
|
if self.amd_ts2 is True:
|
||||||
|
print(" - Adding AMD TeraScale 2 Graphics Patchset")
|
||||||
|
required_patches.update({"Non-Metal Common": all_hardware_patchset["Graphics"]["Non-Metal Common"]})
|
||||||
|
required_patches.update({"AMD TeraScale 2": all_hardware_patchset["Graphics"]["AMD TeraScale 2"]})
|
||||||
|
if self.brightness_legacy is True:
|
||||||
|
print(" - Adding Legacy Brightness Patchset")
|
||||||
|
required_patches.update({"Legacy Brightness": all_hardware_patchset["Brightness"]["Legacy Brightness"]})
|
||||||
|
if self.legacy_audio is True:
|
||||||
|
print(" - Adding Legacy Audio Patchset")
|
||||||
|
if self.model in ["iMac7,1", "iMac8,1"]:
|
||||||
|
required_patches.update({"Legacy Realtek": all_hardware_patchset["Audio"]["Legacy Realtek"]})
|
||||||
|
else:
|
||||||
|
required_patches.update({"Legacy Non-GOP": all_hardware_patchset["Audio"]["Legacy Non-GOP"]})
|
||||||
|
if self.legacy_wifi is True:
|
||||||
|
print(" - Adding Legacy WiFi Patchset")
|
||||||
|
required_patches.update({"Legacy WiFi": all_hardware_patchset["Networking"]["Legacy WiFi"]})
|
||||||
|
if self.legacy_gmux is True:
|
||||||
|
print(" - Adding Legacy GMUX Patchset")
|
||||||
|
required_patches.update({"Legacy GMUX": all_hardware_patchset["Miscellaneous"]["Legacy GMUX"]})
|
||||||
|
if self.legacy_keyboard_backlight:
|
||||||
|
print(" - Adding Legacy Keyboard Backlight Patchset")
|
||||||
|
required_patches.update({"Legacy Keyboard Backlight": all_hardware_patchset["Miscellaneous"]["Legacy Keyboard Backlight"]})
|
||||||
|
|
||||||
|
return required_patches
|
||||||
|
|
||||||
|
|
||||||
|
def execute_patchset(self, required_patches):
|
||||||
|
source_files_path = str(self.constants.payload_local_binaries_root_path)
|
||||||
|
print("- Running Preflight Checks before patching")
|
||||||
|
# Make sure old SkyLight plugins aren't being used
|
||||||
|
self.clean_skylight_plugins()
|
||||||
|
# Make sure SNB kexts are compatible with the host
|
||||||
|
if "Intel Sandy Bridge" in required_patches:
|
||||||
|
if self.computer.reported_board_id not in self.constants.sandy_board_id_stock:
|
||||||
|
print(f"- Found unspported Board ID {self.computer.reported_board_id}, performing AppleIntelSNBGraphicsFB bin patching")
|
||||||
|
board_to_patch = generate_smbios.determine_best_board_id_for_sandy(self.computer.reported_board_id, self.computer.gpus)
|
||||||
|
print(f"- Replacing {board_to_patch} with {self.computer.reported_board_id}")
|
||||||
|
|
||||||
|
board_to_patch_hex = bytes.fromhex(board_to_patch.encode('utf-8').hex())
|
||||||
|
reported_board_hex = bytes.fromhex(self.computer.reported_board_id.encode('utf-8').hex())
|
||||||
|
|
||||||
|
if len(board_to_patch_hex) != len(reported_board_hex):
|
||||||
|
print(f"- Error: Board ID {self.computer.reported_board_id} is not the same length as {board_to_patch}")
|
||||||
|
raise Exception("Host's Board ID is not the same length as the kext's Board ID, cannot patch!!!")
|
||||||
|
else:
|
||||||
|
path = source_files_path + "10.13.6/System/Library/Extensions/AppleIntelSNBGraphicsFB.kext/Contents/MacOS/AppleIntelSNBGraphicsFB"
|
||||||
|
if Path(path).exists:
|
||||||
|
with open(path, 'rb') as f:
|
||||||
|
data = f.read()
|
||||||
|
data = data.replace(board_to_patch_hex, reported_board_hex)
|
||||||
|
with open(path, 'wb') as f:
|
||||||
|
f.write(data)
|
||||||
|
else:
|
||||||
|
raise Exception("Failed to find AppleIntelSNBGraphicsFB.kext, cannot patch!!!")
|
||||||
|
|
||||||
|
print("- Finished Preflight, starting patching")
|
||||||
|
for patch in required_patches:
|
||||||
|
print("- Installing Patchset: " + patch)
|
||||||
|
if "Remove" in required_patches[patch]:
|
||||||
|
for remove_patch_directory in required_patches[patch]["Remove"]:
|
||||||
|
print("- Remove Files at: " + remove_patch_directory)
|
||||||
|
for remove_patch_file in required_patches[patch]["Remove"][remove_patch_directory]:
|
||||||
|
destination_folder_path = str(self.mount_location) + remove_patch_directory
|
||||||
|
self.remove_file(destination_folder_path, remove_patch_file)
|
||||||
|
|
||||||
|
if "Install" in required_patches[patch]:
|
||||||
|
for install_patch_directory in required_patches[patch]["Install"]:
|
||||||
|
print(f"- Handling Installs in: {install_patch_directory}")
|
||||||
|
for install_file in required_patches[patch]["Install"][install_patch_directory]:
|
||||||
|
source_folder_path = source_files_path + "/" + required_patches[patch]['Install'][install_patch_directory][install_file] + install_patch_directory
|
||||||
|
destination_folder_path = str(self.mount_location) + install_patch_directory
|
||||||
|
self.install_new_file(source_folder_path, destination_folder_path, install_file)
|
||||||
|
|
||||||
|
if "Install Non-Root" in required_patches[patch]:
|
||||||
|
for install_patch_directory in required_patches[patch]["Install Non-Root"]:
|
||||||
|
print(f"- Handling Non-Root Installs in: {install_patch_directory}")
|
||||||
|
for install_file in required_patches[patch]["Install Non-Root"][install_patch_directory]:
|
||||||
|
source_folder_path = source_files_path + "/" + required_patches[patch]['Install Non-Root'][install_patch_directory][install_file] + install_patch_directory
|
||||||
|
destination_folder_path = str(self.mount_location_data) + install_patch_directory
|
||||||
|
self.install_new_file(source_folder_path, destination_folder_path, install_file)
|
||||||
|
|
||||||
|
if "Processes" in required_patches[patch]:
|
||||||
|
for process in required_patches[patch]["Processes"]:
|
||||||
|
# Some processes need sudo, however we cannot directly call sudo in some scenarios
|
||||||
|
# Instead, call elevated funtion and strip sudo from argument
|
||||||
|
process_array = process.split(" ")
|
||||||
|
if required_patches[patch]["Processes"][process] is True:
|
||||||
|
utilities.process_status(utilities.elevated(process_array, stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
else:
|
||||||
|
utilities.process_status(subprocess.run(process_array, stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
|
||||||
|
def install_new_file(self, source_folder, destination_folder, file_name):
|
||||||
|
# .frameworks are merged
|
||||||
|
# .kexts and .apps are deleted and replaced
|
||||||
|
file_name_str = str(file_name)
|
||||||
|
if file_name_str.endswith(".kext") or file_name_str.endswith(".app") or file_name_str.endswith(".bundle") or file_name_str.endswith(".plugin"):
|
||||||
|
if Path(destination_folder + "/" + file_name).exists():
|
||||||
|
print(f" - Found existing {file_name}, overwritting...")
|
||||||
|
utilities.process_status(utilities.elevated(["rm", "-R", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
else:
|
||||||
|
print(" - Installing: " + file_name)
|
||||||
|
utilities.process_status(utilities.elevated(["cp", "-R", f"{source_folder}/{file_name}", destination_folder], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
utilities.process_status(utilities.elevated(["chmod", "-Rf", "755", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
utilities.process_status(utilities.elevated(["chown", "-Rf", "root:wheel", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
|
||||||
|
elif file_name_str.endswith(".framework"):
|
||||||
|
# merge with rsync
|
||||||
|
print(" - Installing: " + file_name)
|
||||||
|
utilities.elevated(["rsync", "-r", "-i", "-a", f"{source_folder}/{file_name}", f"{destination_folder}/"], stdout=subprocess.PIPE)
|
||||||
|
utilities.process_status(utilities.elevated(["chmod", "-Rf", "755", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
utilities.process_status(utilities.elevated(["chown", "-Rf", "root:wheel", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
else:
|
||||||
|
# Assume it's an individual file, replace as normal
|
||||||
|
if Path(destination_folder + "/" + file_name).exists():
|
||||||
|
print(f" - Found existing {file_name}, overwritting...")
|
||||||
|
utilities.process_status(utilities.elevated(["rm", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
else:
|
||||||
|
print(" - Installing: " + file_name)
|
||||||
|
utilities.process_status(utilities.elevated(["cp", f"{source_folder}/{file_name}", destination_folder], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
utilities.process_status(utilities.elevated(["chmod", "755", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
utilities.process_status(utilities.elevated(["chown", "root:wheel", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
|
||||||
|
def remove_file(self, destination_folder, file_name):
|
||||||
|
if Path(destination_folder + "/" + file_name).exists():
|
||||||
|
print(" - Removing: " + file_name)
|
||||||
|
if Path(destination_folder + "/" + file_name).is_dir():
|
||||||
|
utilities.process_status(utilities.elevated(["rm", "-R", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
else:
|
||||||
|
utilities.process_status(utilities.elevated(["rm", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
|
||||||
|
|
||||||
def check_files(self):
|
def check_files(self):
|
||||||
if Path(self.constants.payload_apple_root_path).exists():
|
if Path(self.constants.payload_local_binaries_root_path).exists():
|
||||||
print("- Found local Apple Binaries")
|
print("- Found local Apple Binaries")
|
||||||
if self.constants.gui_mode is False:
|
if self.constants.gui_mode is False:
|
||||||
patch_input = input("Would you like to redownload?(y/n): ")
|
patch_input = input("Would you like to redownload?(y/n): ")
|
||||||
if patch_input in {"y", "Y", "yes", "Yes"}:
|
if patch_input in {"y", "Y", "yes", "Yes"}:
|
||||||
shutil.rmtree(Path(self.constants.payload_apple_root_path))
|
shutil.rmtree(Path(self.constants.payload_local_binaries_root_path))
|
||||||
output = self.download_files()
|
output = self.download_files()
|
||||||
else:
|
else:
|
||||||
output = self.download_files()
|
output = self.download_files()
|
||||||
@@ -628,32 +435,26 @@ class PatchSysVolume:
|
|||||||
|
|
||||||
def download_files(self):
|
def download_files(self):
|
||||||
if self.constants.gui_mode is False or "Library/InstallerSandboxes/" in str(self.constants.payload_path):
|
if self.constants.gui_mode is False or "Library/InstallerSandboxes/" in str(self.constants.payload_path):
|
||||||
download_result, os_ver, extensions_link, framework_link = sys_patch_download.grab_patcher_support_pkg(self.constants).download_files()
|
download_result, os_ver, link = sys_patch_download.grab_patcher_support_pkg(self.constants).download_files()
|
||||||
else:
|
else:
|
||||||
download_result = True
|
download_result = True
|
||||||
os_ver, extensions_link, framework_link = sys_patch_download.grab_patcher_support_pkg(self.constants).generate_pkg_link()
|
os_ver, link = sys_patch_download.grab_patcher_support_pkg(self.constants).generate_pkg_link()
|
||||||
|
|
||||||
if download_result and self.constants.payload_apple_root_path_zip.exists() and self.constants.payload_universal_extensions_zip_path.exists():
|
if download_result and self.constants.payload_local_binaries_root_path_zip.exists():
|
||||||
print("- Download completed")
|
print("- Unzipping binaries...")
|
||||||
print("- Unzipping download...")
|
|
||||||
try:
|
try:
|
||||||
utilities.process_status(subprocess.run(["unzip", self.constants.payload_apple_root_path_zip], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.constants.payload_path))
|
utilities.process_status(subprocess.run(["ditto", "-V", "-x", "-k", "--sequesterRsrc", "--rsrc", self.constants.payload_local_binaries_root_path_zip, self.constants.payload_path]))
|
||||||
utilities.process_status(subprocess.run(["unzip", self.constants.payload_universal_extensions_zip_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.constants.payload_path))
|
|
||||||
print("- Renaming folder")
|
print("- Renaming folder")
|
||||||
os.rename(self.constants.payload_path / Path(os_ver), self.constants.payload_apple_root_path)
|
|
||||||
Path(self.constants.payload_apple_root_path_zip).unlink()
|
|
||||||
Path(self.constants.payload_universal_extensions_zip_path).unlink()
|
|
||||||
print("- Binaries downloaded to:")
|
print("- Binaries downloaded to:")
|
||||||
print(self.constants.payload_path)
|
print(self.constants.payload_path)
|
||||||
return self.constants.payload_apple_root_path
|
return self.constants.payload_local_binaries_root_path
|
||||||
except zipfile.BadZipFile:
|
except zipfile.BadZipFile:
|
||||||
print("- Couldn't unzip")
|
print("- Couldn't unzip")
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
if self.constants.gui_mode is True:
|
if self.constants.gui_mode is True:
|
||||||
print("- Download failed, please verify the below links work:")
|
print("- Download failed, please verify the below link work:")
|
||||||
print(framework_link)
|
print(link)
|
||||||
print(extensions_link)
|
|
||||||
print("\nIf you continue to have issues, try using the Offline builds")
|
print("\nIf you continue to have issues, try using the Offline builds")
|
||||||
print("located on Github next to the other builds")
|
print("located on Github next to the other builds")
|
||||||
else:
|
else:
|
||||||
@@ -705,57 +506,6 @@ class PatchSysVolume:
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
def verify_patch_allowed(self):
|
|
||||||
sip = sip_data.system_integrity_protection.root_patch_sip_big_sur if self.constants.detected_os > os_data.os_data.catalina else sip_data.system_integrity_protection.root_patch_sip_mojave
|
|
||||||
if sip == sip_data.system_integrity_protection.root_patch_sip_mojave:
|
|
||||||
sip_value = "For Hackintoshes, please set csr-active-config to '03060000' (0x603)\nFor non-OpenCore Macs, please run 'csrutil disable' in RecoveryOS"
|
|
||||||
else:
|
|
||||||
sip_value = (
|
|
||||||
"For Hackintoshes, please set csr-active-config to '02080000' (0x802)\nFor non-OpenCore Macs, please run 'csrutil disable' and \n'csrutil authenticated-root disable' in RecoveryOS"
|
|
||||||
)
|
|
||||||
if self.sip_enabled is True:
|
|
||||||
print("\nCannot patch! Please disable System Integrity Protection (SIP).")
|
|
||||||
print("Disable SIP in Patcher Settings and Rebuild OpenCore\n")
|
|
||||||
print("Ensure the following bits are set for csr-active-config:")
|
|
||||||
print("\n".join(sip))
|
|
||||||
print(sip_value)
|
|
||||||
|
|
||||||
if self.sbm_enabled is True:
|
|
||||||
print("\nCannot patch! Please disable Apple Secure Boot.")
|
|
||||||
print("Disable SecureBootModel in Patcher Settings and Rebuild OpenCore")
|
|
||||||
print("For Hackintoshes, set SecureBootModel to Disabled")
|
|
||||||
|
|
||||||
if self.fv_enabled is True:
|
|
||||||
print("\nCannot patch! Please disable FileVault.")
|
|
||||||
print("For OCLP Macs, please rebuild your config with 0.2.5 or newer")
|
|
||||||
print("For others, Go to System Preferences -> Security and disable FileVault")
|
|
||||||
|
|
||||||
if self.amfi_enabled is True and self.amfi_must_disable is True:
|
|
||||||
print("\nCannot patch! Please disable AMFI.")
|
|
||||||
print("For Hackintoshes, please add amfi_get_out_of_my_way=1 to boot-args")
|
|
||||||
|
|
||||||
if self.check_board_id is True and (self.computer.reported_board_id not in self.constants.sandy_board_id and self.computer.reported_board_id not in self.constants.sandy_board_id_stock):
|
|
||||||
print("\nCannot patch! Board ID not supported by AppleIntelSNBGraphicsFB")
|
|
||||||
print(f"Detected Board ID: {self.computer.reported_board_id}")
|
|
||||||
print("Please ensure your Board ID is listed below:")
|
|
||||||
for board in self.constants.sandy_board_id:
|
|
||||||
print(f"- {board} ({generate_smbios.find_model_off_board(board)})")
|
|
||||||
for board in self.constants.sandy_board_id_stock:
|
|
||||||
print(f"- {board} ({generate_smbios.find_model_off_board(board)})")
|
|
||||||
|
|
||||||
self.bad_board_id = True
|
|
||||||
|
|
||||||
if self.dosdude_patched is True:
|
|
||||||
print("\nCannot patch! Detected machine has already been patched by another patcher")
|
|
||||||
print("Please ensure your install is either clean or patched with OpenCore Legacy Patcher")
|
|
||||||
|
|
||||||
if any(
|
|
||||||
[self.sip_enabled, self.sbm_enabled, self.fv_enabled, self.dosdude_patched, self.amfi_enabled if self.amfi_must_disable else False, self.bad_board_id if self.check_board_id else False]
|
|
||||||
):
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
return True
|
|
||||||
|
|
||||||
# Entry Function
|
# Entry Function
|
||||||
def start_patch(self):
|
def start_patch(self):
|
||||||
print("- Starting Patch Process")
|
print("- Starting Patch Process")
|
||||||
@@ -772,9 +522,8 @@ class PatchSysVolume:
|
|||||||
change_menu = "y"
|
change_menu = "y"
|
||||||
print("- Continuing root patching")
|
print("- Continuing root patching")
|
||||||
if change_menu in ["y", "Y"]:
|
if change_menu in ["y", "Y"]:
|
||||||
print("- Continuing with Patching")
|
|
||||||
print("- Verifying whether Root Patching possible")
|
print("- Verifying whether Root Patching possible")
|
||||||
if self.verify_patch_allowed() is True:
|
if sys_patch_detect.detect_root_patch(self.computer.real_model, self.constants).verify_patch_allowed(print_errors=not self.constants.wxpython_variant) is True:
|
||||||
print("- Patcher is capable of patching")
|
print("- Patcher is capable of patching")
|
||||||
if self.check_files():
|
if self.check_files():
|
||||||
self.find_mount_root_vol(True)
|
self.find_mount_root_vol(True)
|
||||||
@@ -786,7 +535,7 @@ class PatchSysVolume:
|
|||||||
|
|
||||||
def start_unpatch(self):
|
def start_unpatch(self):
|
||||||
print("- Starting Unpatch Process")
|
print("- Starting Unpatch Process")
|
||||||
if self.verify_patch_allowed() is True:
|
if sys_patch_detect.detect_root_patch(self.computer.real_model, self.constants).verify_patch_allowed(print_errors=not self.constants.wxpython_variant) is True:
|
||||||
self.find_mount_root_vol(False)
|
self.find_mount_root_vol(False)
|
||||||
if self.constants.gui_mode is False:
|
if self.constants.gui_mode is False:
|
||||||
input("\nPress [ENTER] to return to the main menu")
|
input("\nPress [ENTER] to return to the main menu")
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Used when supplying data to sys_patch.py
|
# Used when supplying data to sys_patch.py
|
||||||
# Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk
|
# Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk
|
||||||
|
|
||||||
from resources import constants, device_probe, utilities
|
from resources import constants, device_probe, utilities, generate_smbios
|
||||||
from data import model_array, os_data, sip_data
|
from data import model_array, os_data, sip_data
|
||||||
|
|
||||||
class detect_root_patch:
|
class detect_root_patch:
|
||||||
@@ -182,12 +182,51 @@ class detect_root_patch:
|
|||||||
|
|
||||||
return self.root_patch_dict
|
return self.root_patch_dict
|
||||||
|
|
||||||
def verify_patch_allowed(self):
|
def verify_patch_allowed(self, print_errors=False):
|
||||||
sip = sip_data.system_integrity_protection.root_patch_sip_big_sur if self.constants.detected_os > os_data.os_data.catalina else sip_data.system_integrity_protection.root_patch_sip_mojave
|
sip = sip_data.system_integrity_protection.root_patch_sip_big_sur if self.constants.detected_os > os_data.os_data.catalina else sip_data.system_integrity_protection.root_patch_sip_mojave
|
||||||
self.sip_enabled, self.sbm_enabled, self.amfi_enabled, self.fv_enabled, self.dosdude_patched = utilities.patching_status(sip, self.constants.detected_os)
|
self.sip_enabled, self.sbm_enabled, self.amfi_enabled, self.fv_enabled, self.dosdude_patched = utilities.patching_status(sip, self.constants.detected_os)
|
||||||
|
if sip == sip_data.system_integrity_protection.root_patch_sip_mojave:
|
||||||
|
sip_value = "For Hackintoshes, please set csr-active-config to '03060000' (0x603)\nFor non-OpenCore Macs, please run 'csrutil disable' in RecoveryOS"
|
||||||
|
else:
|
||||||
|
sip_value = (
|
||||||
|
"For Hackintoshes, please set csr-active-config to '02080000' (0x802)\nFor non-OpenCore Macs, please run 'csrutil disable' and \n'csrutil authenticated-root disable' in RecoveryOS"
|
||||||
|
)
|
||||||
|
if print_errors is True:
|
||||||
|
if self.sip_enabled is True:
|
||||||
|
print("\nCannot patch! Please disable System Integrity Protection (SIP).")
|
||||||
|
print("Disable SIP in Patcher Settings and Rebuild OpenCore\n")
|
||||||
|
print("Ensure the following bits are set for csr-active-config:")
|
||||||
|
print("\n".join(sip))
|
||||||
|
print(sip_value)
|
||||||
|
|
||||||
|
if self.sbm_enabled is True:
|
||||||
|
print("\nCannot patch! Please disable Apple Secure Boot.")
|
||||||
|
print("Disable SecureBootModel in Patcher Settings and Rebuild OpenCore")
|
||||||
|
print("For Hackintoshes, set SecureBootModel to Disabled")
|
||||||
|
|
||||||
|
if self.fv_enabled is True:
|
||||||
|
print("\nCannot patch! Please disable FileVault.")
|
||||||
|
print("For OCLP Macs, please rebuild your config with 0.2.5 or newer")
|
||||||
|
print("For others, Go to System Preferences -> Security and disable FileVault")
|
||||||
|
|
||||||
|
if self.amfi_enabled is True and self.amfi_must_disable is True:
|
||||||
|
print("\nCannot patch! Please disable AMFI.")
|
||||||
|
print("For Hackintoshes, please add amfi_get_out_of_my_way=1 to boot-args")
|
||||||
|
|
||||||
|
if self.dosdude_patched is True:
|
||||||
|
print("\nCannot patch! Detected machine has already been patched by another patcher")
|
||||||
|
print("Please ensure your install is either clean or patched with OpenCore Legacy Patcher")
|
||||||
|
|
||||||
if self.check_board_id is True and (self.computer.reported_board_id not in self.constants.sandy_board_id and self.computer.reported_board_id not in self.constants.sandy_board_id_stock):
|
if self.check_board_id is True and (self.computer.reported_board_id not in self.constants.sandy_board_id and self.computer.reported_board_id not in self.constants.sandy_board_id_stock):
|
||||||
self.bad_board_id = True
|
self.bad_board_id = True
|
||||||
|
if print_errors is True:
|
||||||
|
print("\nCannot patch! Board ID not supported by AppleIntelSNBGraphicsFB")
|
||||||
|
print(f"Detected Board ID: {self.computer.reported_board_id}")
|
||||||
|
print("Please ensure your Board ID is listed below:")
|
||||||
|
for board in self.constants.sandy_board_id:
|
||||||
|
print(f"- {board} ({generate_smbios.find_model_off_board(board)})")
|
||||||
|
for board in self.constants.sandy_board_id_stock:
|
||||||
|
print(f"- {board} ({generate_smbios.find_model_off_board(board)})")
|
||||||
|
|
||||||
if any(
|
if any(
|
||||||
[self.sip_enabled, self.sbm_enabled, self.fv_enabled, self.dosdude_patched, self.amfi_enabled if self.amfi_must_disable else False, self.bad_board_id if self.check_board_id else False]
|
[self.sip_enabled, self.sbm_enabled, self.fv_enabled, self.dosdude_patched, self.amfi_enabled if self.amfi_must_disable else False, self.bad_board_id if self.check_board_id else False]
|
||||||
|
|||||||
@@ -22,31 +22,23 @@ class grab_patcher_support_pkg:
|
|||||||
os_ver = "10.14-Mojave"
|
os_ver = "10.14-Mojave"
|
||||||
else:
|
else:
|
||||||
raise Exception(f"Unsupported OS: {self.constants.detected_os}")
|
raise Exception(f"Unsupported OS: {self.constants.detected_os}")
|
||||||
framework_link = f"{self.constants.url_patcher_support_pkg}{self.constants.patcher_support_pkg_version}/{os_ver}.zip"
|
link = f"{self.constants.url_patcher_support_pkg}{self.constants.patcher_support_pkg_version}/Universal-Binaries.zip"
|
||||||
extensions_link = f"{self.constants.url_patcher_support_pkg}{self.constants.patcher_support_pkg_version}/Universal-Extensions.zip"
|
return os_ver, link
|
||||||
return os_ver, extensions_link, framework_link
|
|
||||||
|
|
||||||
def download_files(self):
|
def download_files(self):
|
||||||
os_ver, extensions_link, framework_link = self.generate_pkg_link()
|
os_ver, link = self.generate_pkg_link()
|
||||||
if Path(self.constants.payload_apple_root_path).exists():
|
if Path(self.constants.payload_local_binaries_root_path).exists():
|
||||||
print("- Removing old Apple Binaries folder")
|
print("- Removing old Apple Binaries folder")
|
||||||
# Delete folder
|
# Delete folder
|
||||||
shutil.rmtree(self.constants.payload_apple_root_path)
|
shutil.rmtree(self.constants.payload_local_binaries_root_path)
|
||||||
if Path(self.constants.payload_apple_root_path_zip).exists():
|
|
||||||
print("- Removing old Apple Binaries zip")
|
|
||||||
Path(self.constants.payload_apple_root_path_zip).unlink()
|
|
||||||
|
|
||||||
download_result = None
|
download_result = None
|
||||||
local_framework_zip = Path(self.constants.payload_path) / f"{os_ver}.zip"
|
local_zip = Path(self.constants.payload_path) / f"Universal-Binaries.zip"
|
||||||
local_extensions_zip = Path(self.constants.payload_path) / f"Universal-Extensions.zip"
|
if Path(local_zip).exists():
|
||||||
if Path(local_framework_zip).exists() and Path(local_extensions_zip).exists():
|
print(f"- Found local {local_zip} zip, skipping download")
|
||||||
print(f"- Found local {os_ver} zip, skipping download")
|
|
||||||
print(f"- Duplicating into Apple.zip")
|
|
||||||
shutil.copy(local_framework_zip, self.constants.payload_apple_root_path_zip)
|
|
||||||
download_result = True
|
download_result = True
|
||||||
else:
|
else:
|
||||||
print(f"- No local version found, donwloading...")
|
print(f"- No local version found, downloading...")
|
||||||
if utilities.download_file(extensions_link, self.constants.payload_universal_extensions_zip_path):
|
download_result = utilities.download_file(link, self.constants.payload_local_binaries_root_path_zip)
|
||||||
download_result = utilities.download_file(framework_link, self.constants.payload_apple_root_path_zip)
|
|
||||||
|
|
||||||
return download_result, os_ver, extensions_link, framework_link
|
return download_result, os_ver, link
|
||||||
Reference in New Issue
Block a user