Contribute
Register

Debate on correct location for 3rd Party kexts ...

Status
Not open for further replies.
I know this is a contentious issue and I am definitely not trying to stir the pot but I think the comments in my recent Mojave Asus Z390 build guide would help consolidate the Others argument.


@ModMike,

Your free to put your kexts where ever you like .... you don't have to use the kext guide.
However you should consider the benefits of installing kexts to /L/E as detailed in section 4 of the guide.

@RehabMan details the pro's of installing kexts in /L/E in a bit more detail in his post install guide :-


(See the section called Installing Kexts) :-

The important thing to take away from that post is that not all 3rd party kexts will not work correctly if injected ..

It's your choice ...

Cheers
Jay
 
Last edited:
@jay I am trying to help this person and you are jumping in with contradicting advice which kills my diagnostics methodology. Please don't get me wrong, I appreciate you trying to assist, but in this case, you are confusing the issue, no disrespect intended.

I understand your statement that not all 3rd party kexts will work correctly if injected but in this particular build, they do. By the way, where can we get a list of kexts that cannot be injected to make sure I am not messing up here?

Finally, many people are moving towards exclusively installing kexts in the Clover /Others folder only. Any other method precludes SIP enablement. For others who have not completely read the guide, here is the excerpt:

------------------------------------------------------------------------------------------

Lilu & WhatEverGreen (WEG) have drastically changed Hackintoshing by eliminating many kexts, some of which may not have been injectable.

The arguments put forth apply ONLY to this guide. Some systems may require custom or un-injectable kexts so the following may not apply.
  1. Lilu & WhatEverGreen (WEG) must be loaded before OSX for it to properly load its plug-ins. WEG developers instruct users to install WEG in EFI/Clover/Kexts/Other
  2. Lilu plug-Ins make up the majority of the plug-ins we need.
  3. FakeSMC is a critical kext that must be injected (meaning loaded before OSX) and should be in /Others.
  4. That leaves 4 kexts and the SMC sensors that could live in /Library/Extensions but they can all be injected and work perfectly.
  5. Kexts by their very nature must be loaded into kernal space and are therefore not subject to OSX memory management.
  6. The term "Protected Memory Space" as a term or concept does not exist anywhere on Apple's developer site
  7. Clover Configurator’s Kext installer is a great maintenance tool. It tracks all the kexts mentioned so far, except for 3 networking ones, and installs them in /Other BY DEFAULT, which implies that’s where they should go
  8. Rehabman, the developer of the remaining 3 networking kexts in question, states that his 3 kexts can be injected. In fact, the BrcmFirmwareData.kext is designed to be injected.
  9. Installing kexts in /Others makes debugging very easy. Installing in /L/E makes access very difficult during an unsuccessful boot
  10. Keeping OSX free of Hackintosh kexts lets you enable SIP mode and run as securely as an OEM Mac
  11. Apple recommends that 3rd party kexts be installed in /Library/Extensions. That is certainly true, but that’s for officially sanctioned, developed, and signed kexts, which ours are not.
  12. OSX cannot manage kexts critical to booting
  13. Putting everything in one shareable EFI folder vastly simplifies installation
  14. Putting everything in the /Other folder eliminates the need for kext installation and permission repair tools
  15. Pastrychef, who has helped hundreds of people, stated that moving kexts to /library/extensions has never helped solve one single issue he has come across. See what people think in his poll
Summary:
  1. The term or concept of "Protected Memory Space" does not exist in Apple's developer documentation
  2. WEG developers are unanimous in their position that kexts should be installed in /Other
  3. rehab man says it’s fine to inject them.
  4. Putting them in /Other simplifies maintenance and enables SIP.
Conclusion: All injectable kexts belong in Clover's /Other folder.

Edit: Modified to match my guide
 
Last edited:
@ModMike,

I'm not contradicting anything ... I like most of the moderators here at TMx86 will always advise users to install 3rd party kexts in /L/E and to only inject critical kext necessary to run Macos Installer, Updater and Recovery.

This is how Clover was designed handle kexts from the very start.

If you want to follow Pastrychef advice, thats fine .... but what works for one build may not work for another ..

Your free to do what ever you want ..

Cheers
Jay
 
Last edited:
@ModMike,

I'm not contradicting anything ... I like most of the moderators here at TMx86 will always advise users to install 3rd party kexts in /L/E and to only inject critical kext necessary to run Macos Installer, Updater and Recovery.

This is how Clover was designed handle kexts from the very start.

If you want to follow Pastrychef advice, thats fine .... but what works for one build may not work for another ..

Your free to do what ever you want ..

Cheers
Jay

"I don't know who told you the nonsense of the protected macOS memory space, that is not even a thing. The kexts are injected through a mechanism that is present in the kernel to load extensions from the boot loader, all kernel extensions are loaded into the kernel memory space or they couldn't work... There is reason to inject some kexts, as I said Lilu+Whatevergreen need to be injected to ensure they are initialized before any of the kexts they patch. [...] Inject kexts that you need to boot successfully, any kext that needs to be initialized first before another kext and perform some action on that kext, needs to be injected since boot loader kernel extensions are initialized first".


This is what one of the many Clover developer told me on InsanelyMac yesterday. I usually trust Tonymac's guides way more than others', but I'm quite confused because there should be a straight answer on the matter (we're talking about coding, not politics or whatever!): especially this memory space issue, what about it? I also asked him which kexts should be injected them and I've been basically told "those who need to", like WhateverGreen: I can't say I noticed any changes in my system after putting everything in /L/E as per your guide, nor WhateverGreen stopped working.
 
I am
"I don't know who told you the nonsense of the protected macOS memory space, that is not even a thing. The kexts are injected through a mechanism that is present in the kernel to load extensions from the boot loader, all kernel extensions are loaded into the kernel memory space or they couldn't work... There is reason to inject some kexts, as I said Lilu+Whatevergreen need to be injected to ensure they are initialized before any of the kexts they patch. [...] Inject kexts that you need to boot successfully, any kext that needs to be initialized first before another kext and perform some action on that kext, needs to be injected since boot loader kernel extensions are initialized first".


This is what one of the many Clover developer told me on InsanelyMac yesterday. I usually trust Tonymac's guides way more than others', but I'm quite confused because there should be a straight answer on the matter (we're talking about coding, not politics or whatever!): especially this memory space issue, what about it? I also asked him which kexts should be injected them and I've been basically told "those who need to", like WhateverGreen: I can't say I noticed any changes in my system after putting everything in /L/E as per your guide, nor WhateverGreen stopped working.

Not looking to debate anything, just get the facts. What I gather from your post is that you are saying the protected memory thing doesn't exist, that this whole thing boils down to what's loaded in what order?

I can accept that. I also rewrote my arguments for /other based on new information and updated post #12 to match what is in my guide, I hope that's ok.
 
I am


Not looking to debate anything, just get the facts. What I gather from your post is that you are saying the protected memory thing doesn't exist, that this whole thing boils down to what's loaded in what order?

I can accept that. I also rewrote my arguments for /other based on new information and updated post #12 to match what is in my guide, I hope that's ok.

More or less. In fact, RehabMan never, ever wrote anything about this alleged protected memory space, which cannot possibly exist if the Clover team says it doesn't: it was probably a misinterpretation on jaymonkey's side: he just stated that it is possible to do error checking when the kext are in /L/E and therefore present in the kextcache (which is crucial for a developer, not for the average user). This, along with Slice and that apianti's words, makes me think that, as long as you know what you're doing (I've been building hackintoshes for ten years) and have no kexts that can't possibly be injected (i.e. a certain Broadcom BT one), there's no actual difference between the two methods. Besides, I've had no improvements nor issues after moving everything to /L/E. But given that the Detect flag for Inject Kexts is broken and the Clover team has no intention to fix it any time soon, kexts will always be loaded twice. This is why, considering that I just need seven kexts (five are crucial, two are just convenient), I'm moving everything to Other again.

RehabMan's suggestion is definitely a good one technically speaking, but doesn't change anything for the average Joe that has no special kexts that need to be installed (to be honest, they are not many at all), and doesn't play nice anyway with Clover's bugs (or better, the current developers' ideas on injection). So, in the end, I agree with your points.
 
@ModMike @Jesahel & for reference @jaymonkey

Yes, "Protected Memory Space" *is* a thing. If you read about the 64-bit Mach kernel and Darwin you will understand it is a fundamental part of the BSD/Unix methodology. An application is set up to run this way so that if it goes belly-up there is much less chance it was crash the system, corrupt data or or generally cause any domino effect.

As to how the subtleties of Kernel-extensions are defined by the PMS and when and where they should be located isn't something to be easily dismissed. They are not apps as such, are cached and have elevated privileges.

Go to the Developer Documentation archive at Apple "Kernel and Device Drivers Layer" if you want to really go deep.

o_O
 
It doesn't really matter if it is because the vast majority of the kexts I use need to be loaded before just to boot. "Protected Memory Space" won't do squat if you can't even load the OS :) Is it even enabled when SIP is disabled?

Positions have been taken, arguments given, and I don't think there is really anything left to say. Over and out!
 
Last edited:
Of course. Your prerogative. Fully understood :thumbup:.

Just didn't want an argument being used to justify one position in this debate that may be 'flawed' etc :).

(Sigh!)
 
Status
Not open for further replies.
Back
Top