CloverHackyColor / CloverBootloader

Bootloader for macOS, Windows and Linux in UEFI and in legacy mode
BSD 2-Clause "Simplified" License
4.51k stars 619 forks source link

[SOLVED] GUI Custom Entry for Big Sur Preboot breaks loading kexts from '11' folder #349

Closed LeeBinder closed 3 years ago

LeeBinder commented 3 years ago

Tested Clover versions: 5128, 5129

Expected behavior: regardless if Big Sur is started via the default "Boot Mac OS X from Big Sur via Preboot" or via a custom GUI entry, Clover should load kexts from any of the corresponding folders in CLOVER/kexts, Other and 11.

Bug: having moved kexts from Other into 11 (for compatibility with other versions of macOS installed parallel to other disk partitions which load their kexts from their respective folders) -> Kernel panic.

Observation: Clover only loads kexts from Other and fails to load them from 11 or/and 11.2 (for my Big Sur 11.2 RC install)

Successless attempts to resolve or work-around:

Steps to reproduce:

vaczi001 (github nic) aka kushwavez (insanelymac nic) has reproduced this issue on his Hack, too, also with Clover 5129. In addition he found out that

From log I can see that seems like kexts are being searched and added to the array, but won't load after that:

0:993  0:000  AddKextsInArray from Other
0:993  0:000  AddKextsInArray from Off
0:993  0:000  AddKextsInArray from Unknown

There is no "AddKextsInArray from 11" so the kexts won't load.

Debug log: 2021-1-30_9-35-23_BOOTX64.EFI.log.zip

Let me know if you need any more data from me.

serdeliuk commented 3 years ago

@LeeBinder you need to enable debug log and provide us with the log file after you boot to bigsur in order to see what is going on, worth to mention that the 11.x folder should be 11.1 for BigSur 11.1 and should be outside "other" folder for example EFI/CLOVER/kexts/11.1

kushwavez commented 3 years ago

@serdeliuk Unfortunately the insanelymac link he posted is broken, so I copy & paste the whole reply here, also to not bounce from here to insanelymac unnecessarily.

Comment from Insanelymac (kushwavez) with Custom entry our kexts are won't load from CLOVER/kexts/11 From log I can see that seems like kexts are being searched and added to the array, but won't load after that.

0:826  0:000  === [ InitKextList ] ============================
0:831  0:005  Added Kext=11\VoodooRMI.kext
0:832  0:001  Added Kext=11\VoodooSMBus.kext
0:833  0:000  Added Kext=11\AirportBrcmFixup.kext
0:833  0:000  Added Kext=11\AppleBacklightSmoother.kext
0:834  0:000  Added Kext=11\BrightnessKeys.kext
0:834  0:000  Added Kext=11\HibernationFixup.kext
0:835  0:000  Added Kext=11\IntelMausi.kext
0:835  0:000  Added Kext=11\NVMeFix.kext
0:836  0:000  Added Kext=11\Sinetek-rtsx.kext
0:836  0:000  Added Kext=11\SMCBatteryManager.kext
0:836  0:000  Added Kext=11\SMCLightSensor.kext
0:837  0:000  Added Kext=11\SMCProcessor.kext
0:838  0:000  Added Kext=11\SMCSuperIO.kext
0:838  0:000  Added Kext=11\USBPorts.kext
0:839  0:000  Added Kext=11\VirtualSMC.kext
0:839  0:000  Added Kext=11\YogaSMC.kext
0:840  0:000  Added Kext=11\VoodooPS2Controller.kext
0:841  0:001  Added Kext=11\WhateverGreen.kex
0:993  0:000  AddKextsInArray from Other
0:993  0:000  AddKextsInArray from Off
0:993  0:000  AddKextsInArray from Unknown

There is no "AddKextsInArray from 11" so the kexts won't load.

I think the reason is because of the "config.plist/GUI/Custom/Big Sur/Type=OSX" -> I think this can't determine what is the OS version, while if I boot for example from Recovery it's working because no Type is specified, and the OS version is determined by Clover automatically. 2021-1-28_8-21-27_CLOVERX64.efi.log

serdeliuk commented 3 years ago

I have tested on my side with kests in other and work well, with this section in config.plist

                            <dict>
                                    <key>Disabled</key>
                                    <false/>
                                    <key>FullTitle</key>
                                    <string>BigSur11.1</string>
                                    <key>Hidden</key>
                                    <false/>
                                    <key>Ignore</key>
                                    <false/>
                                    <key>Path</key>
                                    <string>\4B02232C-76BD-425D-AA97-C9D2D164948E\System\Library\CoreServices\boot.efi</string>
                                    <key>Type</key>
                                    <string>OSX</string>
                                    <key>Volume</key>
                                    <string>FB7CDCFA-3B77-40DE-A461-422C390022FD</string>
                                    <key>InjectKexts</key>
                                    <true/>
                                    <key>NoCaches</key>
                                    <false/>
                            </dict>

UUIDS can be found in preboot.log generated with F2 searching for 'Preboot' string

1:342 0:000 - [10]: 'Preboot' 1:343 0:001 contentDetails name:BigBenSur 1:343 0:000 AddLoaderEntry for Volume Name=Preboot, idx=7 1:343 0:000 ApfsContainerUUID=32B30F49-7F79-469A-BC93-FE27F1564EF0 1:343 0:000 ApfsFileSystemUUID=FB7CDCFA-3B77-40DE-A461-422C390022FD 1:343 0:000 APFSTargetUUID=4B02232C-76BD-425D-AA97-C9D2D164948E 1:344 0:000 Check if volume Is Hibernated: 1:344 0:000 Check sleep image 'by signature': 1:344 0:000 using default sleep image name = \private\var\vm\sleepimage 1:344 0:000 sleepimage not found -> Not Found 1:344 0:000 hibernated: no - sign 1:344 0:000 IconName=bigsur,mac comma=6 size=10 1:344 0:000 first=os_bigsur 1:344 0:000 Second=os_mac 1:344 0:000 Loader entry created for 'PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0x0,0x0)\HD(5,GPT,8CCD0BA8-34D7-46DC-B201-1C071E6B2987,0x63FF38 00,0xA123160)\VenMedia(BE74FCF7-0B7C-49F3-9147-01F4042E6842,FADC7CFB773BDE40A461422C390022FD)\4B02232C-76BD-425D-AA97-C9D2D164948E\System\Libra ry\CoreServices\boot.efi'

kushwavez commented 3 years ago

@serdeliuk yes I have no problem with that either. The problem we reported is not with that. The problem is: kexts from kexts/11 won't load

serdeliuk commented 3 years ago

Sorry, did not realised that is about kexts versioning. Yes, tested and seems that kexts does not load indeed, from 11.1 in my case, let me check on my side with debug enabled will be faster...

LeeBinder commented 3 years ago

@serdeliuk of course, CLOVER/kexts/11 respectively 11.2 for my RC install. I refined my initial posting accordingly so it should be clear now that I know what I'm doing .. ;)

I also attached my Clover debug log to the first posting (and added the link to insanelymac for completion).

serdeliuk commented 3 years ago

So far it seems that if you add a custom entry clover is unable to find the os version and does not know if it is required to load or no different kexts than the ones from "Other" because does not have an OS version don't search in other places. As far as i can see there is no way at this point to add to the custom entry a new filed to set "by hand" the os version, i still digging, i will let you know if i find anything

jief666 commented 3 years ago

Try this : CloverX64-2021-01-30-17-49-47-b5e0562-dirty-jief.zip, that should solve the custom entry version detection problem, that led to kext loaded from Unknown instead of 11 (or any other).

jief666 commented 3 years ago

Please, tell me here if that works. Thanks.

serdeliuk commented 3 years ago

@jief666 thanks, this version identify correctly the OSVersion but does not boot, on my side my notebook entered in shutdown state after a while, also everything seems to have a lot of delay, did you added some kind of extra delay in debug loops? Attached preboot.log and debug.log 2021-1-30_17-1-11_BOOTX64.EFI.log preboot.log

GetOSVersion: 11.1 (20C69) Filtering KernelPatches:

kushwavez commented 3 years ago

Try this : CloverX64-2021-01-30-17-49-47-b5e0562-dirty-jief.zip, that should solve the custom entry version detection problem, that led to kext loaded from Unknown instead of 11 (or any other).

It's working (at least for me)! All of my kexts are loaded correctly from kexts/11 with a Custom entry. Thanks!

2021-1-30_17-58-53_CLOVERX64.efi.log

LeeBinder commented 3 years ago

@jief666 mighty fine, you rock - all fine here now: most kexts in Other, some in 10.13/14/15,11. I've booted all my macOS 10.13 - 11.2 in the past hour, worked/tinkered this and that in all of them -> 👍

What I'm wondering about is that you took the older 5128 source code as base, not the recent 5129:

screenshot0

@serdeliuk even though in theory it should not be necessary, it still can help to run hackintool's kext cache rebuild & perms repair util. At least for me it still tends to resolve oddities like those you describe.

kushwavez commented 3 years ago

It's just a test CLOVER.efi @jief666 made for us for testing purpose, so it doesn't matter, and the code is the same as on v5129. The corrected code will be added in the next release (I think). It's cosmetic.

LeeBinder commented 3 years ago

@vaczi001 boy am I relieved

back_to_the_future_instagram_reunion_marty_myfly_doc_brown_200306_gckf0zvnrf

serdeliuk commented 3 years ago

@LeeBinder, indeed, i have too a CleanNvram.efi special crafted for Clover (reboot when end) with a custom boot entry, sometimes helps too.

@jief666 if i disable boot -> debug works perfectly. But with boot->debug enabled take approx 2min to get to Clover menu and after i chose to boot then another 3min reach "EB|LOG:EXITBS:START" stay here approx 1min then shutdown. For me this is not an issue as i do not need custom crafted boot to hide preboot text.

jief666 commented 3 years ago

The version number is just cosmetic. The commit number shows that it's the last code. I'm closing the issue as it seems resolved. We can still continue to talk about it, if needed be.