Configuration / KernelAndKextPatches
<key>KernelAndKextPatches</key> <dict> ... </dict>
This parameter group enables patching on-the-fly.
Requirement: booting with kernel cache or with the key NoCache.
Should the cache be missing because of other reasons, then patching will not be enabled.
Enables detailed output describing the patching process. This prints kernel patches and kext injection debug messages to the screen, since standard boot log is already closed. Useful for debugging purposes.
Eliminates kernel panics related to an unsupported CPU like Yonah, Atom or Haswell for old systems. However, the kernel has other algorithms which will not work correctly when using an unsupported CPU and this patch will not solve all problems. It is highly unlikely that this will work with a Pentium M, Pentium 4 or and AMD. The use of a special replacement kernel is advised in such cases.
Fake CPUID is intended to be a replacement for the Kernel CPU patch. It influences the kernel and AppleCPUPowerManagement as well.
If you want to install OSX with an unsupported CPU then you'll need to fake its ID to avoid kernel panics. Useful if you're trying to install OSX with an Atom CPU, or 10.7.2 with an IvyBridge CPU.
For these cases Clover allows you to set FakeCPUID in config.plist or even through the GUI, in the Binaries patching menu.
The following table shows all supported CPUIDs by different OS X versions:
AsusAICPUPM key was renamed to AppleIntelCPUPM.
Some vendors, like ASUS, restrict the use of MSR register 0xE2 in their power management module to ReadOnly. On Sandy/Ivy Bridge systems the kext AppleIntelCpuPowerManagement will try to write to this register and cause a kernel panic. This patch will eliminate the kext's write operations.
<key>KernelAndKextPatches</key> <dict> <key>KernelPm</key> <true/> </dict>
Kernel power management patch for Haswell with locked msrs. Works with 10.8.5 and 10.9 kernels.
OS X has compatibility issues with a BIOS CMOS resulting in its reset on each wake after sleep and reboot, which is noticeable in a loss of BIOS settings. Mostly Gigabyte motherboards are affected. Usually it can be solved by patching Device(RTC) in the DSDT.
If this does not help, the kext itself can be patched, which is done here.
HP notebooks have lapic problems, which can be solved by using the boot parameter
cpus=1 or by using this option.
Haswell-E setups are currently not supported by the OS X kernel (as of OS X 10.10.2). This patch gets rid of the blocking compatibility checks. Note that this will not enable Power Management or similar features.
Apart from the built-in patches you can create your own ones providing following data: the binary file name, the data to find and the data to replace with - both in hexadecimal. The data length must be equal. A smaller replacement data line can be filled with zeroes.
<key>KextsToPatch</key> <array> <dict> <key>Name</key> <string>VoodooHDA</string> <key>Find</key> <data>SGVhZHBob25lcwA=</data> <key>Replace</key> <data>VGVsZXBob25lcwA=</data> </dict> </array>
Note: the patch data is encoded in base64 due to the data type of the field.
Common patches are:
<dict> <key>Name</key> <string>IOAHCIBlockStorage</string> <key>Find</key> <data>QVBQTEUgU1NEAA==</data> <key>Replace</key> <data>AAAAAAAAAAAAAA==</data> </dict>
Define external drivers as internal to fix yellow drive icons:
<dict> <key>Name</key> <string>AppleAHCIPort</string> <key>Find</key> <data>RXh0ZXJuYWw=</data> <key>Replace</key> <data>SW50ZXJuYWw=</data> </dict>
<dict> <key>Name</key> <string>AppleTyMCEDriver</string> <key>Find</key> <data>cgoATWFjUHJvNCwxAE1hY1BybzUsMQBY</data> <key>Replace</key> <data>cgoAAAAAAAAAAAAAAAAAAAAAAAAAAABY</data> </dict>
It is sometimes necessary to additionally modify a kext's Info.plist. In this case following syntax is used:
<dict> <key>Name</key> <string>AppleHDAController</string> <key>Comment</key> <string>Patch_to_not_load_this_driver</string> <key>InfoPlistPatch</key> <true/> <key>Find</key> <string>0x04020000</string> <key>Replace</key> <string>0x44220000</string> </dict>
Side note: The patch is supposed to be done in the cache. If you patch an Info.plist to allow the loading of a kext, then it is not yet present in the cache. You will need to reboot twice. First with the key NoCaches to allow FSInject to load the kext and a second time for the cache to be patched successfully.
Force load kexts (and plugins) from booted volume so it can be patched. It also accepts directories to force load/inject every kext in the folder.
<key>ForceKextsToLoad</key> <array> <string>\System\Library\Extensions\AppleHDA.kext</string> <string>\Extra\Extensions</string> </array>
For a fully working AMD video card injecting properties into the registry is not enough. Additionally a modification of the connectors in the according controller binary file is necessary. The example points to the 6000 series controller file:
<key>ATIConnectorsData</key> <string>000400000403000000010000210302040400000014020000000100000000 040310000000100000000001000000000001</string> <key>ATIConnectorsPatch</key> <string>040000001402000000010000000004040004000004030000000100001102 010500000000000000000000000000000000</string>
This method works for systems using Mac OS X 10.7 or newer.
More info in the post of bcc9 on insanelymac.
Last edited by Michael Belyaev (usr-sse2), 2017-09-22 15:01:42