Contribute
Register

Understanding Kext install locations

Joined
Jun 10, 2010
Messages
178
Motherboard
Asus ROG-Z370-G
CPU
i7 8700K
Graphics
RX 580
Mac
MacBook Air
Mobile Phone
Android
Despite being here since 2010 I have yet to grasp a good understanding of the different locations that kexts can exist in and whether there's a "right" place for them to be.

Back in the Chameleon days before Clover it may have been different, but keeping things relevant for the current macOS of today we seem to have:

EFI > CLOVER > kexts > 10.14
EFI > CLOVER > kexts > other
/ System / Extensions
/ System / Library / Extensions


From the point of view of keeping it clean and knowing where things are, I'd prefer to keep all my kexts as part of Clover - but even that raises the question of "10.14 or other" ?

And if I do use Clover for my kexts, should I be rebuilding the kext cache after installing or will a restart be sufficient?

Thanks
 

P1LGRIM

Moderator
Joined
Mar 2, 2012
Messages
20,311
Motherboard
Lenovo ThinkStation p300 ⌘
CPU
i7-4790K
Graphics
HD 4600
Mac
MacBook Pro, Mac mini
Classic Mac
Power Mac
Mobile Phone
iOS
Apple kexts are in /System/Library/Extensions.
All third party kexts should be installed in /Library/Extensions.
Only kexts that are essential to load the operating system should be in /EFI/CLOVER/kexts/Other and all of the /EFI/CLOVER/kexts/10.* folders should be deleted. Essential kexts are usually just FakeSMC.kext and your Ethernet kext.
Doing this will enable use of the recovery partition and OS updates.
Inject Kexts should be set to Detect in config.plist.

Kexts that are in /EFI/CLOVER/kexts/Other may not load correctly if something triggers a cache rebuild.
 

Jamesbond007

Moderator
Joined
May 21, 2011
Messages
4,616
Motherboard
Gigabyte Z270X-UD5
CPU
i7 7700K
Graphics
RX 580
Mac
Mac mini
Mobile Phone
iOS
I always put kexts in /EFI/CLOVER/kexts/Other and never have a problem.

I don't want to install any kexts in the system folders since I want to keep the installations as "vanilla" as possible. I can move the OS installations to and from various machines without worrying that those kexts will cause problems. If there are problems on another system I just need to remove offending kexts and add necessary kexts, which is as simple as deleting and copying them to and from /EFI/CLOVER/kexts/Other.
 
Joined
May 15, 2016
Messages
4,291
Motherboard
GIGABYTE Z170M D3H
CPU
i5-6500
Graphics
RX 480
Mac
iMac
I always put kexts in /EFI/CLOVER/kexts/Other and never have a problem.

I don't want to install any kexts in the system folders since I want to keep the installations as "vanilla" as possible. I can move the OS installations to and from various machines without worrying that those kexts will cause problems. If there are problems on another system I just need to remove offending kexts and add necessary kexts, which is as simple as deleting and copying them to and from /EFI/CLOVER/kexts/Other.
Clover also has a setting in System Preferences section Kexts Inject = No, detect (as Pilgrim stated) and Yes. Generally, detect is used when you have Kexts in Library/Extensions, and Yes when only using the clover/Kexts/Other folder.

A lot of rehabmans guides and special Kexts for laptops require placing Kexts in Library/Extensions to assure proper function. Multibeast tool does this as well. These Kexts will usually survive a system software update (10.12.5 to 10.12.6) but when upgrading to a new release or install (10.12.6 to 10.13.0) they can disappear.

Sometimes if using a modified Apple kext like a graphics kext that is edited for a device ID or a WiFi kext it needs to be in System/Library/Extensions folder and THEN you need to rebuild caches before a reboot to enable it and have it function.

Most desktop hacks that I have run only require Kexts in Clover/Kexts/Other folder to work correctly and if they don’t then try Library/Extensions folder.
 
Joined
Dec 17, 2017
Messages
8
Motherboard
Lenovo B250
CPU
i7-7700
Graphics
HD 630 & RX 560
Mac
iMac, MacBook Pro
Mobile Phone
Android, iOS
I always put kexts in /EFI/CLOVER/kexts/Other too.
No files are added or modified any files of the system, mainly for upgrading.
Like Gigamaxx mentioned above. Kexts Inject = YES
 
Joined
Jun 10, 2010
Messages
178
Motherboard
Asus ROG-Z370-G
CPU
i7 8700K
Graphics
RX 580
Mac
MacBook Air
Mobile Phone
Android
Thanks everyone I've learned a lot.

I think I prefer to keep things clean and simple, going with Clover/kexts/other unless there's a reason to deviate from that
 
Joined
Nov 12, 2010
Messages
54
Motherboard
GIGABYTE Z370 AORUS Gaming 7
CPU
i7-8700K
Graphics
RX Vega 64
Mac
iMac, MacBook Pro
Classic Mac
Classic, SE, Xserve
Mobile Phone
iOS
I wonder about this also. I see many (knowledgable) people on here advocating /L/E for everything except FakeSMC and potentially ethernet in Clover. But as I see it:

/S/L/E - to be avoided, lots of system kexts and no real reason to use vs other locations. No argument here.

/L/E - used for 3rd party kexts
advantages: relatively clean location (compared to /s/l/e), included in kext cache, anything else?​
disadvantages: not completely clean (compared to clover), must rebuild kext cache when making changes, not used when booting into things like recovery, kexts go along with system partition if you want to clone for another machine.​

clover (other) - injected by clover
advantages: totally clean location in EFI partition, injected and used for all booting including recovery, don't need to update kext cache for changes, can't be removed changed by updates, doesn't get in the way of cloning system partition for another machine.​
disadvantages: not part of the kext cache made, anything else ?​

Someone PLEASE correct me if I'm wrong above. But to me it seems that (outside of caching benefits vs install ease) the clover location makes the most sense, especially when there are are other items that would affect recovery boot. Like in my case I can't boot to recovery without removing all but 1 monitor from my Vega64 for my iMac18,3 definition without having the kexts in clover location.

So I guess I'm wondering why so many seem to advocate /L/E. Is it purely to be part of the cache ? are there other things about the clover location I'm missing?

TIA!
 

Feartech

Moderator
Joined
Aug 3, 2013
Messages
10,893
Motherboard
Asus N752VX-Clover
CPU
i7-6700HQ / HM170
Graphics
HD530 + GTX 950m 1920 x 1080
Mac
iMac
Mobile Phone
Android
I wonder about this also. I see many (knowledgable) people on here advocating /L/E for everything except FakeSMC and potentially ethernet in Clover. But as I see it:

/S/L/E - to be avoided, lots of system kexts and no real reason to use vs other locations. No argument here.

/L/E - used for 3rd party kexts
advantages: relatively clean location (compared to /s/l/e), included in kext cache, anything else?​
disadvantages: not completely clean (compared to clover), must rebuild kext cache when making changes, not used when booting into things like recovery, kexts go along with system partition if you want to clone for another machine.​

clover (other) - injected by clover
advantages: totally clean location in EFI partition, injected and used for all booting including recovery, don't need to update kext cache for changes, can't be removed changed by updates, doesn't get in the way of cloning system partition for another machine.​
disadvantages: not part of the kext cache made, anything else ?​

Someone PLEASE correct me if I'm wrong above. But to me it seems that (outside of caching benefits vs install ease) the clover location makes the most sense, especially when there are are other items that would affect recovery boot. Like in my case I can't boot to recovery without removing all but 1 monitor from my Vega64 for my iMac18,3 definition without having the kexts in clover location.

So I guess I'm wondering why so many seem to advocate /L/E. Is it purely to be part of the cache ? are there other things about the clover location I'm missing?

TIA!
all kexts you need to be installed to /L/E (yes, that means FakeSMC as well)

only essential kexts in clover/kexts/other, ie FakeSMC, lilu, whatevergreen, USBInjectAll and an ethernet kext,
(essential kexts to reach macOS installer)

you will find you have duplicate kexts in both places which is fine

and then in config.plist, InjectKexts->Detect
 
Joined
Nov 12, 2010
Messages
54
Motherboard
GIGABYTE Z370 AORUS Gaming 7
CPU
i7-8700K
Graphics
RX Vega 64
Mac
iMac, MacBook Pro
Classic Mac
Classic, SE, Xserve
Mobile Phone
iOS
all kexts you need to be installed to /L/E (yes, that means FakeSMC as well)

only essential kexts in clover/kexts/other, ie FakeSMC, lilu, whatevergreen, USBInjectAll and an ethernet kext,
(essential kexts to reach macOS installer)

you will find you have duplicate kexts in both places which is fine

and then in config.plist, InjectKexts->Detect
Ok, so if I understand that correctly then basically the system will boot from the cached kexts only (nothing from clover) unless FakeSMC is not found in the cache -- in which case clover will inject whatever is applicable from its kext directories. (for something like recovery) Does that sound right ?

Thanks!
 
Top