Jump to content

Clover General discussion


ErmaC
29,866 posts in this topic

Recommended Posts

Should be easy to embed a kext in the bootloader, tried in Enoch, but the problem initially was the size limit of the boot file (no place for FakeSMC, even if compressed with lzvn/lzss) then to thin the binary (solved trying a smaller kext), idea abandoned... But for Clover I think that there is no problem to load kexts in this way:

 

 

There is a much smaller kext AppleDecrypt that can be a replacement of FakeSMC for first start.

  • Like 1
Link to comment
Share on other sites

Ok. Disregard my initial post. I found FakeSMC.kext in S/L/E. Must have copied it there by mistake and forgot about it.

 

Sorry about that. Still...if it could be somehow "embedded" in Clover, that would be really cool.

 

Thanks so much for your support. And again, sorry.

  • Like 1
Link to comment
Share on other sites

Only if you put it on appropriate place :)

Got it. So it's not automatically added in /Other for example upon installation. Cause...that would be cool. :)) I mean, since it's being compiled anyway, I'm sure most people won't even know about it. So, why not add it? Now that Clover looks under /Other first, then under /10.11 or /10.10 or what have you. Why not actually use it upon installation?

 

Ooor...as we discussed since now, embed it, or embed some sort of FakeSMC so that the user can always have a bootable system, for as far as FakeSMC is concerned.

Link to comment
Share on other sites

Got it. So it's not automatically added in /Other for example upon installation. Cause...that would be cool. :)) I mean, since it's being compiled there, I'm sure most people won't even know about it. So, why not add it? Now that Clover looks under /Other first, then under /10.11 or /10.10 or what have you. Why not actually use it upon installation?

 

Ooor...as we discussed since now, embed it, or embed some sort of FakeSMC so that the user can always have a bootable system, for as far as FakeSMC is concerned.

Clover Special Edition do this; since the first release

Link to comment
Share on other sites

Put you kext inside EFI Before create your PKG with your Compiller :D

I guess that would be one way to do it. Still....I'm looking for a way of Clover doing this automatically. :) Cause most users won't know how to do that. And fixing it for myself only is not really the point here. The point is creating a better app for everyone. :)

Link to comment
Share on other sites

I guess that would be one way to do it. Still....I'm looking for a way of Clover doing this automatically. :) Cause most users won't know how to do that. And fixing it for myself only is not really the point here. The point is creating a better app for everyone. :)

I have done this with My app  Your only to ad curl

Like this

Exemple with Insanelymac Link

 

ditto -x -k --sequesterRsrc --rsrc /tmp/src.zip ~/
Link to comment
Share on other sites

Apparently there is a FakeSMC.kext compiled/downloaded alongside Clover...

 

It's being added in edk2/Clover/CloverPackage/CloverV2/ThirdParty/kexts/Other/FakeSMC.kext

 

Is this being used in any way?

This was done to build the iso image...otherwise after burning a cd/DVD, and you realize that you have no kexts..... is late :hysterical:

If you compile it from the source you can add all the kexts you want, but this can't be done if users use the OEM folder for multiple configurations (like me and many others), the result will be an unwanted FakeSMC.kext where user does not want :)

  • Like 1
Link to comment
Share on other sites

This was done to build the iso image...otherwise after burning a cd/DVD, and you realize that you have no kexts..... is late :hysterical:

If you compile it from the source you can add all the kexts you want, but this can't be done if users use the OEM folder for multiple configurations (like me and many others), the result will be an unwanted FakeSMC.kext where user does not want :)

You are correct. I don't use that OEM folder. But you are definitely right. Others may use it.

 

But...what if...we embed it? Just like you said. So users won't have to even think about it. Or move it anywhere.

 

It's a mandatory kext for hackintoshes, right? And, as experience showed (LMAO), there is no way to boot without it. Or at least I couldn't find it. You have to have it. Somewhere.

 

So, why not embed it somewhere, in a single place, from where it can do its job, no matter which configuration you want to load and which other 3rd party kexts you want to load. Why not make it a mandatory and embedded component of Clover? Like: you're using Clover, you don't need to worry about adding FakeSMC. Period.

 

You can add you other kexts wherever you want, but you will never get stuck outside your OS cause you forgot to add it to the proper place, for example. Or removed it by mistake, or stuff like that. It will always be there.

Link to comment
Share on other sites

You have to ask to devs, but probably they have already thought and decide about this (the current method) :)

 

EDIT

me too I like the idea to have it embedded, all my Hacks are able to boot w/o DSDT .. just the Fake is needed

ok, no audio, Ethernet..wifi etc... but can boot into the Desktop/Installer, So should be a good resque boot!

Link to comment
Share on other sites

You have to ask to devs, but probably they have already thought and decide about this (the current method) :)

 

EDIT

me too I like the idea to have it embedded, all my Hacks are able to boot w/o DSDT .. just the Fake is needed

ok, no audio, Ethernet..wifi etc... but can boot into the Desktop/Installer, So should be a good resque boot!

 

Well...I thought the devs are here. :P And, for as far as I know, reading the posts, as well.

 

Anyway, Slice, we would really appreciate your opinion on this. What do you think about it? Could it/should it be done this way, so that people can enjoy their systems without worrying about this particular kext anymore?

Sure, it's not gonna be backwards compatible. Meaning that people with older versions won't be able to beneficiate from this until they upgrade their Clover version. But sometimes you need to take bold decisions to achieve better quality. Apple does that every time. Most of the times, the decisions are inspired and prove to be good over time. Sometimes, not so much. But you won't know until you try.

 

People with older versions won't be affected. And with newer versions, there will be already a kext embedded, so they can simply remove the one they have, from wherever they have it.

Link to comment
Share on other sites

just add a new node in the config (disabled by default, but activabled in the GUI):

<dict>
	<key>EmbeddedExtensions</key>
	<dict>
		<key>FakeSMC</key>
		<false/>
	</dict>
	<key>ACPI</key>
        .....
	<dict/>
.....

(in the true Clover already check for the FakeSMC presence.. so can be automatic also..)

ok, for me is a closed discussion, let see if they want :)

  • Like 1
Link to comment
Share on other sites

 

just add a new node in the config (disabled by default, but activabled in the GUI):

<dict>
	<key>EmbeddedExtensions</key>
	<dict>
		<key>FakeSMC</key>
		<true/>
	</dict>
	<key>ACPI</key>
        .....
	<dict/>
.....

 

Ok...but where will it get it from? The app is already installed, right? So....no matter what you add in config, it needs to be done before you install the app. Oherwise, it doesn't really work. Does it...?

 

So...how does this work exactly? I update my config, then reinstall Clover so I can get the embedded FakeSMC? What if it's the first installation?

Link to comment
Share on other sites

Ok...but where will it get it from? The app is already installed, right? So....no matter what you add in config, it needs to be done before you install the app. Oherwise, it doesn't really work. Does it...?

 

So...how does this work exactly? I update my config, then reinstall Clover so I can get the embedded FakeSMC? What if it's the first installation?

 

 

ok, for me is a closed discussion, let see if they want  :)

 

Ok, one last.

A bootloader run the prelinkedkernel or kernelcache (a kernel with linked kexts), or run the kernel + scan /S/L/E and /L/E.

In the second, but also for /EFI/CLOVER/kexts (in congiunction with a kernel patch that allow reading kexts outside the standard repos), the loader read the Info.plist and the binary in memory from the filesystem... so then It's just data in memory: the same if you read it from an Header (.h file) compiled among the entire bootloader's source. Than just call or adjust existing functions to acquire embedded data instead of from the filesystem. I assure you that is the same :)

..and if you want to boot an installer, offcourse you need to have an installer, and adding my example at #8979 to the config.plist is not enough, need new code  :P

Link to comment
Share on other sites

 

 

Ok, one last.

A bootloader run the prelinkedkernel or kernelcache (a kernel with linked kexts), or run the kernel + scan /S/L/E and /L/E.

In the second, but also for /EFI/CLOVER/kexts (in congiunction with a kernel patch that allow reading kexts outside the standard repos), the loader read the Info.plist and the binary in memory from the filesystem... so then It's just data in memory: the same if you read it from an Header (.h file) compiled among the entire bootloader's source. Than just call or adjust existing functions to acquire embedded data instead of from the filesystem. I assure you that is the same :)

..and if you want to boot an installer, offcourse you need to have an installer, and adding my example at #8979 to the config.plist is not enough, need new code  :P

 

Take into account that Clover doesn't load neither kernel not kernelcache not kexts.

Clover is only load BOOT.EFI that do other works.

To load kexts from Clover folder we have a file system driver FSInject.efi that catch loading requests for SLE and redirect them into Clover folder.

  • Like 2
Link to comment
Share on other sites

Checking my log and found 2 same calls below, i dont know since when, is this ok slice?

...

7:514  0:000  Beginning FSInjection
FSInjectionInstall ...
- Our FSI_SIMPLE_FILE_SYSTEM_PROTOCOL installed on handle: B9F40418
FSInjectionInstall ...
- Our FSI_SIMPLE_FILE_SYSTEM_PROTOCOL installed on handle: B9F40418
7:527  0:013  Preparing kexts injection for arch=x86_64 from EFI\CLOVER\kexts\Other

...
Link to comment
Share on other sites

×
×
  • Create New...