- Aug 27, 2011
- ASRock-Z97 EX6
- i7-4790K OC @ 4.8GHz
- Vega 64LC + HD4600
- Mobile Phone
Installing 3rd Party Kexts
1. What Versions of MacOS does this guide cover ?
The methods detailed in this guide will work on the following versions of MacOS
- MacOS 10.11.X - El Capitan
- MacOS 10.12.X - Sierra
- MacOS 10.13.X - High Sierra
- MacOS 10.14.X - Mojave
2. Where should I install 3rd Party Kexts ?
You should install all 3rd Party kexts (including FakeSMC) to /Library/Extensions (/L/E)
Warning: you can not simply use Finder to copy kexts into /L/E (see Section 7 below)
3. What about EFI/Clover/kexts/Other ?
It seems that many users are under the impression that you can simply copy all 3rd Party Kexts into EFI/Clover/kexts/Other and allow Clover to Inject the kexts by setting Clover -> System Parameters -> Inject Kexts to "Yes" which will result in a maintenance free and more native MacOS install.
This assumption is completely wrong ...
4. Why should I use /Library/Extensions over Clover Injected kexts ?
Contrary to Hackintosh myth, having Clover inject all the 3rd party kexts does not result in a cleaner install, in fact the exact opposite is true.
- Injected Kexts live outside of "protected MacOS memory" *
- Injecting a large amount of kexts can result in an unstable system.
- Many 3rd party kexts will not work correctly when injected by Clover.
- Injected Kexts are not included in the kernel cache and thus are excluded form MacOS error checking.
- Installing kexts in /Library/Extensions is the Apple endorsed and recommended location for all 3rd Party kexts.
* Note: I use the term "protected MacOS memory" in this guide as a generic descriptive term. In reality kext's installed in /L/E are loaded into MacOS's kernel memory which is 'protected' (IE: segregated) form application memory and execution memory. Everything running in kernel memory (including kexts) is actively managed and monitored by MacOS.
5. If thats true why does Clover even have this feature ?
The main reason that Clover supports injecting kexts is to load critical kexts required to run the following :-
- MacOS Installer
- MacOS Updater
- MacOS Recovery
Think very carefully about the kexts you actually need in EFI/Clover/kexts/Other ... you only need the absolute bare minimum to run the above packages.
6. How does Clover know to Inject kexts or Not ?
You need to set Clover -> System Parameters -> Inject Kexts to "Detect"
With this setting, Clover will look for FakeSMC in /Library/Extensions or the MacOS Kernel Cache when you select/boot MacOS, if 'detected' Clover will not inject any kexts and leave MacOS to load all the 3rd party kexts (including FakeSMC) from /Library/Extensions (or the kernel cache) which is the preferred and recommended method for all the reasons stated in section 4. of this guide.
If Clover does not 'detect' FakeSMC in /Library/Extensions or the MacOS Kernel Cache such as when booting Recovery or a MacOS update then Clover will inject all the kexts from the EFI/Clover/kexts/Other folder.
Note: It is also possible to set Clover -> System Parameters -> Inject Kexts to either "No" or "Yes", these values should be considered as debugging settings, if set to "No" then Clover will never Inject any kexts and thus you will be unable to run Recovery or any MacOS Updates. If Set To "Yes" then Clover will Inject all kexts in EFI/Clover/kexts/Other regardless of any other condition, this can obviously cause problems if you have duplicate kexts in /Library/Extensions as these kexts will be loaded twice which can be especially problematic if you have different versions in the two locations.
7. How do I install kexts in /Library/Extensions ?
Important: Do not use Finder to copy kext's to /Library/Extensions as it will not correctly install the kext(S)
First we need to make sure that MacOS is allowed to load unsigned kexts/drivers by setting BooterConfig and CsrActiveConfig in Clover's RTVariables section to the correct values.
<key>RtVariables</key> <dict> <key>BooterConfig</key> <string>0x28</string> <key>CsrActiveConfig</key> <string>0x67</string> . . . </dict>
You can also set these values in the RTVariables section of Clover Configurator :-
The Super Easy Method
If you have Hackintool V2.5 or later installed then you can use it to install kexts into /L/E with just a few clicks.
Tip: If you have a lot of kexts to install then it easer to copy them all to a common folder (if not already).
Run Hackintool, click on the "Tools" icon on the upper in-app menu and then on "Install Kexts(s)" on the lower menu
Navigate to the folder you want to install the kext(s) from and select (CMD-Click) the ones you want to install so that they have a blue highlight, then click on "Select".
Hackintool will now install the selected kexts into /L/E, repair all kext permissions and rebuild the kext caches :-
Once it's finished you should see something like the following :-
Thats it .. job done ... don't worry that the output is red .. thats completely normal.
Legacy Easy Method :-
Download KextBeast which is available in the downloads section, copy all the kext's you want to install onto the desktop and run the KextBeast pkg file, click on Continue a few times, enter your admin password when prompted and accept the usual notices until you get the option to select the install target. Select /Library/Extensions and click on Continue.
KextBeast will install the kext's that you placed on the desktop into the target Extensions folder. Once Kext Beast has done its work it will offer you the option of keeping the pkg or deleting it. I generally click on "keep" as i'm always trying new and different versions of kext's and KextBeast is a quick and easy way to do the job.
Note: Do not install kexts into /System/Library/Extensions unless you are running a version of MacOS earlier than El-Capitan as it will cause SIP (System Integrity Protection) issues.
Once Kext Beast has finished I recommend running version 2.6.6 of cVad's Kext Utility (click here to download) which will repair any broken kext permissions and rebuild the caches. Simply run the app and enter your admin password when prompted, then wait while Kext Utility does it's work, it will take a while (approx 40 seconds) ... you will know when it's finished once you see "Quit" in black text at the bottom of the app window.
Warning: Do not use Kext Utility to install a kext as it does not support installing kext's into /Library/Extensions, it does however do a very good job of repairing all kext permissions and rebuilding the caches.
Once Kext Utility has finished reboot your system.
Terminal/Console Method :-
- Using Finder, create a folder on your desktop, copy all the kexts you want to install into it.
- Open Terminal and change the active path to the folder you created in step 1 using the "CD" command.
- Install the Kexts into /Library/Extensions using the following command :-
sudo cp -R *.kext /Library/Extensions
4. To repair permissions and rebuild the caches enter the following commands one at a time :-
sudo chown -v -R root:wheel /System/Library/Extensions sudo touch /System/Library/Extensions sudo chmod -v -R 755 /Library/Extensions sudo chown -v -R root:wheel /Library/Extensions sudo touch /Library/Extensions sudo kextcache -i /
The above command set is a belt and braces approach (mimics what Hackintool and Kext Utility does) and should make sure that there are no problems with any file persimmons on the system kexts (in /S/L/E) and the 3rd party kexts (in /L/E).
Once finished reboot your system.
8. Updating Kexts
If you need to update one or more kexts then use Finder to the delete just the kexts you want to update (do not select all/delete all) from /Library/Extensions and then install the new versions using one of the the methods detailed in section 7 of this guide.
To update kexts in EFI/Clover/kexts/Other simply use Finder to copy and paste the new kexts and select "Replace" when prompted.
9. Deleteting Kexts
If you need to delete one or more kexts, simply navigate to /L/E in Finder, select the kext(s) you no longer need and select Move to Trash in the context menu (right click).
Then run Hackingtool and use the "Repair Permissions and Rebuild Caches" feature on the Tools page :-
Alternatively you can run Kext Utility or execute the Terminal commands to repair permissions and rebuild the caches (see Section-7 above).
1. Copy FakeSMC and only critical kext's needed to run the MacOS Installer, Updater or Recovery to EFI/Clover/kexts/Other
2. Install all 3rd party kexts (including FakeSMC) required to run MacOS in /Library/Extensions
3. Set Clover -> System Parameters -> Inject Kexts to "Detect"