From 9bdc5148c4026cc1b5bbb50eedac73f4f908ae37 Mon Sep 17 00:00:00 2001
From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com>
Date: Wed, 28 Jul 2021 16:43:17 -0600
Subject: [PATCH] Adjust MinKernel
---
OCLP-CLI.command | 35 +++++++-
Resources/Build.py | 7 +-
Resources/Constants.py | 45 +++++-----
Resources/ModelExample.py | 164 +++++++++++++++++++++++++++++++++++
payloads/Config/config.plist | 57 +++---------
5 files changed, 233 insertions(+), 75 deletions(-)
create mode 100644 Resources/ModelExample.py
diff --git a/OCLP-CLI.command b/OCLP-CLI.command
index 31b30261e..b0e79fb48 100755
--- a/OCLP-CLI.command
+++ b/OCLP-CLI.command
@@ -9,7 +9,7 @@ import platform
import argparse
from pathlib import Path
-from Resources import Build, ModelArray, Constants, SysPatch, device_probe, Utilities
+from Resources import Build, ModelArray, Constants, SysPatch, device_probe, Utilities, ModelExample
class OpenCoreLegacyPatcher:
@@ -212,17 +212,44 @@ If you plan to create the USB for another machine, please select the "Change Mod
def validate(self):
# Runs through ocvalidate to check for errors
+
+ valid_dumps = [
+ ModelExample.MacBookPro.MacBookPro92_Stock,
+ #ModelExample.MacBookPro.MacBookPro171_Stock,
+ ModelExample.iMac.iMac81_Stock,
+ ModelExample.iMac.iMac112_Stock,
+ ModelExample.MacPro.MacPro31_Stock,
+ ModelExample.MacPro.MacPro31_Upgrade,
+ ModelExample.MacPro.MacPro31_Modern_AMD,
+ ]
+ self.constants.validate = True
+
for model in ModelArray.SupportedSMBIOS:
- print(f"Validating model: {model}")
+ print(f"Validating predefined model: {model}")
self.constants.custom_model = model
self.build_opencore()
result = subprocess.run([self.constants.ocvalidate_path, f"{self.constants.opencore_release_folder}/EFI/OC/config.plist"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if result.returncode != 0:
print("Error on build!")
print(result.stdout.decode())
- raise Exception(f"Validation failed for model: {model}")
+ raise Exception(f"Validation failed for predefined model: {model}")
else:
- print(f"Validation succeeded for model: {model}")
+ print(f"Validation succeeded for predefined model: {model}")
+
+ for model in valid_dumps:
+ self.constants.computer = model
+ self.computer = self.constants.computer
+ self.constants.custom_model = ""
+ print(f"Validating dumped model: {self.computer.real_model}")
+ self.build_opencore()
+ result = subprocess.run([self.constants.ocvalidate_path, f"{self.constants.opencore_release_folder}/EFI/OC/config.plist"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ if result.returncode != 0:
+ print("Error on build!")
+ print(result.stdout.decode())
+ raise Exception(f"Validation failed for predefined model: {self.computer.real_model}")
+ else:
+ print(f"Validation succeeded for predefined model: {self.computer.real_model}")
+
OpenCoreLegacyPatcher()
diff --git a/Resources/Build.py b/Resources/Build.py
index 4ebcbc6c2..97b39af7e 100644
--- a/Resources/Build.py
+++ b/Resources/Build.py
@@ -243,7 +243,7 @@ class BuildOpenCore:
arpt_path = "PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)"
print(f"- Using known DevicePath {arpt_path}")
self.config["DeviceProperties"]["Add"][arpt_path] = {"device-id": binascii.unhexlify("ba430000"), "compatible": "pci14e4,43ba"}
- if not self.constants.custom_model and self.computer.wifi and self.computer.wifi.country_code:
+ if not self.constants.custom_model and self.computer.wifi and self.constants.validate is False and self.computer.wifi.country_code:
print(f"- Applying fake ID for WiFi, setting Country Code: {self.computer.wifi.country_code}")
self.config["DeviceProperties"]["Add"][arpt_path].update({"brcmfx-country": self.computer.wifi.country_code})
if self.constants.enable_wake_on_wlan is True:
@@ -264,7 +264,7 @@ class BuildOpenCore:
elif not self.constants.custom_model and self.computer.wifi:
if isinstance(self.computer.wifi, device_probe.Broadcom):
# This works around OCLP spoofing the Wifi card and therefore unable to actually detect the correct device
- if self.computer.wifi.chipset == device_probe.Broadcom.Chipsets.AirportBrcmNIC and self.computer.wifi.country_code:
+ if self.computer.wifi.chipset == device_probe.Broadcom.Chipsets.AirportBrcmNIC and self.constants.validate is False and self.computer.wifi.country_code:
self.enable_kext("AirportBrcmFixup.kext", self.constants.airportbcrmfixup_version, self.constants.airportbcrmfixup_path)
print(f"- Setting Wireless Card's Country Code: {self.computer.wifi.country_code}")
if self.computer.wifi.pci_path:
@@ -670,6 +670,9 @@ class BuildOpenCore:
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -no_compat_check"
if self.constants.disk != "":
self.disk_type()
+ if self.constants.validate is False:
+ print("- Adding bootmgfw.efi BlessOverride")
+ self.config["Misc"]["BlessOverride"] += ["\\EFI\\Microsoft\\Boot\\bootmgfw.efi"]
def set_smbios(self):
spoofed_model = self.model
diff --git a/Resources/Constants.py b/Resources/Constants.py
index fd81f5192..6bee9394f 100644
--- a/Resources/Constants.py
+++ b/Resources/Constants.py
@@ -96,6 +96,7 @@ class Constants:
self.latebloom_delay = 0
self.latebloom_range = 0
self.latebloom_debug = 0
+ self.validate = False
# OS Versions
self.tiger = 8
@@ -575,31 +576,31 @@ class Constants:
]
sbm_values = [
- "j137",
- "j680",
- "j132",
- "j174",
- "j140k",
- "j780",
- "j213",
- "j140a",
- "j152f",
- "j160",
- "j230k",
- "j214k",
- "j223",
- "j215",
- "j185",
- "j185f",
+ "j137", # iMacPro1,1
+ "j680", # MacBookPro15,1
+ "j132", # MacBookPro15,2
+ "j174", # Macmini8,1
+ "j140k", # MacBookAir8,1
+ "j780", # MacBookPro15,3
+ "j213", # MacBookPro15,4
+ "j140a", # MacBookAir8,2
+ "j152f", # MacBookPro16,1
+ "j160", # MacPro7,1
+ "j230k", # MacBookAir9,1
+ "j214k", # MacBookPro16,2
+ "j223", # MacBookPro16,3
+ "j215", # MacBookPro16,4
+ "j185", # iMac20,1
+ "j185f", # iMac20,2
]
sandy_board_id = [
- "Mac-E43C1C25D4880AD6", # MacBookPro12,1
- "Mac-06F11F11946D27C5", # MacBookPro11,5
- "Mac-9F18E312C5C2BF0B", # MacBookAir7,1
- "Mac-937CB26E2E02BB01", # MacBookAir7,2
- "Mac-35C5E08120C7EEAF", # Macmini7,1
- "Mac-7BA5B2D9E42DDD94", # iMacPro1,1
+ "Mac-E43C1C25D4880AD6", # MacBookPro12,1
+ "Mac-06F11F11946D27C5", # MacBookPro11,5
+ "Mac-9F18E312C5C2BF0B", # MacBookAir7,1
+ "Mac-937CB26E2E02BB01", # MacBookAir7,2
+ "Mac-35C5E08120C7EEAF", # Macmini7,1
+ "Mac-7BA5B2D9E42DDD94", # iMacPro1,1
]
board_id = {
diff --git a/Resources/ModelExample.py b/Resources/ModelExample.py
new file mode 100644
index 000000000..d81a79f5e
--- /dev/null
+++ b/Resources/ModelExample.py
@@ -0,0 +1,164 @@
+# Example Hardware probe of multiple models
+# To be used when running validation tests
+from Resources import device_probe
+
+class MacBookPro:
+
+ MacBookPro92_Stock = device_probe.Computer(
+ real_model="MacBookPro9,2",
+ real_board_id="Mac-6F01561E16C75D06",
+ reported_model="MacBookPro9,2",
+ reported_board_id="Mac-6F01561E16C75D06",
+ gpus=[device_probe.Intel(vendor_id=32902, device_id=358, class_code=196608, name="IGPU", model="Intel HD Graphics 4000", pci_path="PciRoot(0x0)/Pci(0x2,0x0)")],
+ igpu=device_probe.Intel(vendor_id=32902, device_id=358, class_code=196608, name="IGPU", model="Intel HD Graphics 4000", pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
+ dgpu=None,
+ storage=[device_probe.SATAController(vendor_id=32902, device_id=7683, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")],
+ wifi=device_probe.Broadcom(vendor_id=5348, device_id=17201, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0)"),
+ cpu=device_probe.CPU(
+ name='Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz',
+ flags=['FPU', 'VME', 'DE', 'PSE', 'TSC', 'MSR', 'PAE', 'MCE', 'CX8', 'APIC', 'SEP', 'MTRR', 'PGE', 'MCA', 'CMOV', 'PAT', 'PSE36', 'CLFSH', 'DS', 'ACPI', 'MMX', 'FXSR', 'SSE', 'SSE2', 'SS', 'HTT', 'TM', 'PBE', 'SSE3', 'PCLMULQDQ', 'DTES64', 'MON', 'DSCPL', 'VMX', 'EST', 'TM2', 'SSSE3', 'CX16', 'TPR', 'PDCM', 'SSE4.1', 'SSE4.2', 'x2APIC', 'POPCNT', 'AES', 'PCID', 'XSAVE', 'OSXSAVE', 'TSCTMR', 'AVX1.0', 'RDRAND', 'F16C']
+ ),
+ oclp_version=None,
+ opencore_version=None,
+ )
+
+ MacBookPro171_Stock = device_probe.Computer(
+ real_model="MacBookPro17,1",
+ real_board_id="J293",
+ reported_model="MacBookPro17,1",
+ reported_board_id="J293",
+ gpus=[device_probe.AMD(vendor_id=4098, device_id=26640, class_code=196608, name="display", model="Unknown Unknown", pci_path="")],
+ igpu=None,
+ dgpu=None,
+ storage=[],
+ wifi=device_probe.Broadcom(vendor_id=5348, device_id=17445, class_code=163840, name="wlan", model=None, pci_path=""),
+ cpu=device_probe.CPU(
+ name="Apple M1",
+ flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "PCLMULQDQ", "DTSE64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "AES", "SEGLIM64"],
+ ),
+ oclp_version=None,
+ opencore_version=None,
+ )
+
+class iMac:
+
+ iMac81_Stock = device_probe.Computer(
+ # Stock Model
+ real_model="iMac8,1",
+ real_board_id="Mac-F226BEC8",
+ reported_model="iMac8,1",
+ reported_board_id="Mac-F226BEC8",
+ gpus=[
+ device_probe.AMD(vendor_id=4098, device_id=38088, class_code=196608, name="GFX0", model="ATI Radeon HD 2400", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)")
+ ],
+ igpu=None,
+ dgpu=device_probe.AMD(vendor_id=4098, device_id=38088, class_code=196608, name="GFX0", model="ATI Radeon HD 2400", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"),
+ storage=[
+ device_probe.SATAController(vendor_id=32902, device_id=10281, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
+ ],
+ wifi=device_probe.Broadcom(vendor_id=5348, device_id=17192, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x4)/Pci(0x0,0x0)"),
+ cpu=device_probe.CPU(
+ name="Intel(R) Core(TM)2 Duo CPU E8135 @ 2.40GHz",
+ flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"]
+ ),
+ oclp_version=None,
+ opencore_version=None,
+ )
+
+ iMac112_Stock = device_probe.Computer(
+ # Stock Model
+ real_model="iMac11,2",
+ real_board_id="Mac-F2238AC8",
+ reported_model="iMac11,2",
+ reported_board_id="Mac-F2238AC8",
+ gpus=[
+ device_probe.AMD(vendor_id=4098, device_id=38024, class_code=196608, name="GFX0", model="ATI Radeon HD 4670", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)")
+ ],
+ igpu=None,
+ dgpu=device_probe.AMD(vendor_id=4098, device_id=38024, class_code=196608, name="GFX0", model="ATI Radeon HD 4670", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"),
+ storage=[
+ device_probe.SATAController(vendor_id=32902, device_id=15138, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
+ ],
+ wifi=device_probe.Atheros(vendor_id=5772, device_id=42, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0)"),
+ cpu=device_probe.CPU(
+ name="Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz",
+ flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "POPCNT", "PCID"]
+ ),
+ oclp_version=None,
+ opencore_version=None
+ )
+
+class MacPro:
+
+ MacPro31_Stock = device_probe.Computer(
+ # Stock Model, stock TS1 GPU and no Wifi card
+ real_model="MacPro3,1",
+ real_board_id="Mac-F42C88C8",
+ reported_model="MacPro3,1",
+ reported_board_id="Mac-F42C88C8",
+ gpus=[
+ device_probe.AMD(vendor_id=4098, device_id=38272, class_code=196608, name="GFX0", model="ATI Radeon HD 2600", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")
+ ],
+ igpu=None,
+ dgpu=device_probe.AMD(vendor_id=4098, device_id=38272, class_code=196608, name="GFX0", model="ATI Radeon HD 2600", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
+ storage=[
+ device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
+ ],
+ wifi=None,
+ cpu=device_probe.CPU(
+ name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
+ flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
+ ),
+ oclp_version=None,
+ opencore_version=None,
+ )
+
+ MacPro31_Upgrade = device_probe.Computer(
+ # Upgraded Model, TS2 GPU and El-Capitan era Wifi card
+ real_model="MacPro3,1",
+ real_board_id="Mac-F42C88C8",
+ reported_model="MacPro3,1",
+ reported_board_id="Mac-F42C88C8",
+ gpus=[
+ device_probe.AMD(vendor_id=4098, device_id=26808, class_code=196608, name="GFX0", model="ATI Radeon HD 5770", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")
+ ],
+ igpu=None,
+ dgpu=device_probe.AMD(vendor_id=4098, device_id=26808, class_code=196608, name="GFX0", model="ATI Radeon HD 5770", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
+ storage=[
+ device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
+ ],
+ wifi=device_probe.Broadcom(
+ vendor_id=5348, device_id=17192, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)"
+ ),
+ cpu=device_probe.CPU(
+ name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
+ flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
+ ),
+ oclp_version=None,
+ opencore_version=None,
+ )
+
+ MacPro31_Modern_AMD = device_probe.Computer(
+ # Upgraded Model, Polaris GPU and BCM94360CD
+ real_model="MacPro3,1",
+ real_board_id="Mac-F42C88C8",
+ reported_model="MacPro3,1",
+ reported_board_id="Mac-F42C88C8",
+ gpus=[
+ device_probe.AMD(vendor_id=4098, device_id=26591, class_code=196608, name="GFX0", model="Radeon RX 470/570", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")
+ ],
+ igpu=None,
+ dgpu=device_probe.AMD(vendor_id=4098, device_id=26591, class_code=196608, name="GFX0", model="Radeon RX 470/570", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
+ storage=[
+ device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
+ ],
+ wifi=device_probe.Broadcom(
+ vendor_id=5348, device_id=17312, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)"
+ ),
+ cpu=device_probe.CPU(
+ name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
+ flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
+ ),
+ oclp_version=None,
+ opencore_version=None,
+ )
diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist
index de93fff23..30a172977 100644
--- a/payloads/Config/config.plist
+++ b/payloads/Config/config.plist
@@ -242,7 +242,7 @@
MaxKernel
MinKernel
-
+ 10.0.0
BundlePath
Lilu.kext
ExecutablePath
@@ -278,7 +278,7 @@
MaxKernel
MinKernel
-
+ 10.0.0
BundlePath
WhateverGreen.kext
ExecutablePath
@@ -296,7 +296,7 @@
MaxKernel
MinKernel
-
+ 12.0.0
BundlePath
RestrictEvents.kext
ExecutablePath
@@ -314,7 +314,7 @@
MaxKernel
MinKernel
-
+ 16.0.0
BundlePath
AAAMouSSE.kext
ExecutablePath
@@ -592,42 +592,6 @@
PlistPath
Contents/Info.plist
-
- Arch
- x86_64
- Comment
- AppleBacklightFixup - Modded Nvidia GPUs
- Enabled
-
- MaxKernel
-
- MinKernel
-
- BundlePath
- AppleBacklightFixup.kext
- ExecutablePath
- Contents/MacOS/AppleBacklightFixup
- PlistPath
- Contents/Info.plist
-
-
- Arch
- x86_64
- Comment
- NightShiftEnabler
- Enabled
-
- MaxKernel
-
- MinKernel
-
- BundlePath
- NightShiftEnabler.kext
- ExecutablePath
- Contents/MacOS/NightShiftEnabler
- PlistPath
- Contents/Info.plist
-
Arch
x86_64
@@ -638,7 +602,7 @@
MaxKernel
MinKernel
-
+ 15.0.0
BundlePath
CPUFriend.kext
ExecutablePath
@@ -656,7 +620,7 @@
MaxKernel
MinKernel
-
+ 15.0.0
BundlePath
CPUFriendDataProvider.kext
ExecutablePath
@@ -764,7 +728,7 @@
MaxKernel
MinKernel
-
+ 12.0.0
BundlePath
CpuTscSync.kext
ExecutablePath
@@ -782,7 +746,7 @@
MaxKernel
MinKernel
-
+ 14.0.0
BundlePath
HibernationFixup.kext
ExecutablePath
@@ -800,7 +764,7 @@
MaxKernel
MinKernel
-
+ 18.0.0
BundlePath
NVMeFix.kext
ExecutablePath
@@ -948,7 +912,7 @@
MaxKernel
MinKernel
-
+ 12.0.0
PlistPath
Contents/Info.plist
@@ -1110,7 +1074,6 @@
BlessOverride
- \EFI\Microsoft\Boot\bootmgfw.efi
Boot