D-an-W Posted October 10, 2015 Share Posted October 10, 2015 I just modified what Chris1111 posted a while ago when there was an issue with edk build previously. Link to comment Share on other sites More sharing options...
chris1111 Posted October 10, 2015 Share Posted October 10, 2015 I just modified what Chris1111 posted a while ago when there was an issue with edk build previously. Better Restart from scratch CloverGrowerPro Link to comment Share on other sites More sharing options...
D-an-W Posted October 10, 2015 Share Posted October 10, 2015 Just doing that now, do I have to run CGP once before editing the conf file? I tried adding the line on first run but the build failed. Link to comment Share on other sites More sharing options...
chris1111 Posted October 10, 2015 Share Posted October 10, 2015 Just doing that now, do I have to run CGP once before editing the conf file? I tried adding the line on first run but the build failed. Install Command line tools Start Grower thats it choose SVN Link to comment Share on other sites More sharing options...
oSxFr33k Posted October 10, 2015 Share Posted October 10, 2015 My compilation looks otherwise Screen Shot 2015-10-10 at 8.50.16.png I am not using CGP. My way #!/bin/bash ./ebuild.sh --ia32 ./ebuild.sh -mc -D DISABLE_USB_SUPPORT ./ebuild.sh cd CloverPackage ./makepkg ./makeiso cd .. echo "done!" What is the reason to update EDK2? You want to obtain new bugs? Disable USB support question. So CGP compiled without any switches has USB support? Would you be willing to share that copy of Clover. I wanted to test it on my system to see if it helps with a USB panic I am getting on boot. Thanks Link to comment Share on other sites More sharing options...
arsradu Posted October 11, 2015 Share Posted October 11, 2015 Can someone try building "new" BaseTools on El Capitan with a "clean" BaseTools i.e no patches. edit: And updated EDK2!! Yep. And doesn't seem to work. Same issue. Link to comment Share on other sites More sharing options...
WinstonAce Posted October 11, 2015 Share Posted October 11, 2015 Same here Link to comment Share on other sites More sharing options...
chris1111 Posted October 11, 2015 Share Posted October 11, 2015 Yep. And doesn't seem to work. Same issue. Screen Shot 2015-10-11 at 8.08.29 AM.png your Package is little bit strange No choice driver64UEFI and Driver 64 /driver 32 Link to comment Share on other sites More sharing options...
arsradu Posted October 11, 2015 Share Posted October 11, 2015 your Package is little bit strange No choice driver64UEFI and Driver 64 /driver 32 that's why I said it's the same issue. That was the issue. Link to comment Share on other sites More sharing options...
cecekpawon Posted October 11, 2015 Share Posted October 11, 2015 Is really need to do this eachtime after clover svn update? cd "${dEdk2}" && source ./edksetup.sh "BaseTools" &>/dev/null This is what i did to let clover auto select bootable device & hide others: <key>GUI</key> <dict> ... <key>Scan</key> <dict> <key>Entries</key> <true/> <key>Legacy</key> <false/> <key>Tool</key> <false/> </dict> ... </dict> Link to comment Share on other sites More sharing options...
chris1111 Posted October 11, 2015 Share Posted October 11, 2015 that's why I said it's the same issue. That was the issue. I dont have big problems with CloverGrowerPro inside El Capitan The only thing I find is Clover Updater as not create I do this manually and everything is ok One thing is certain is that El Capo contains several bug I am return to Yosemite to create all Package and stuff, I not using El Capo for now I am not satisfy 2 Link to comment Share on other sites More sharing options...
D-an-W Posted October 11, 2015 Share Posted October 11, 2015 I can't get it to work at all using the method you provided Chris, arsradu has the same problem as me. It doesn't seem to like the spaces in the SVN target path. Link to comment Share on other sites More sharing options...
chris1111 Posted October 11, 2015 Share Posted October 11, 2015 I can't get it to work at all using the method you provided Chris, arsradu has the same problem as me. It doesn't seem to like the spaces in the SVN target path. This is wath I have 1 Link to comment Share on other sites More sharing options...
loganMac Posted October 11, 2015 Share Posted October 11, 2015 Try installing NTFS.efi into /EFI/CLOVER/drivers64 or /EFI/CLOVER/drivers64UEFI. This will enable Clover to read the actual NTFS volume name eg "Windows10" instead of ""Legacy HD1". You can then hide entries as explained in the Clover wiki: Eg you can use the following in GUI/config.plist to hide all legacy entries except the custom Windows 10 legacy menu entry for the volume "WIN10"... <key>GUI</key> <dict> <key>Scan</key> <dict> <key>Entries</key> <true/> <key>Legacy</key> <false/> <key>Tool</key> <false/> </dict> <key>Custom</key> <dict> <key>Entries</key> <array> <dict> <key>Disabled</key> <false/> <key>FullTitle</key> <string>UEFI Internal</string> <key>Hidden</key> <true/> <key>Ignore</key> <false/> <key>InjectKexts</key> <false/> <key>NoCaches</key> <false/> <key>Type</key> <string>Other</string> </dict> </array> <key>Legacy</key> <array> <dict> <key>Disabled</key> <false/> <key>Hidden</key> <false/> <key>Ignore</key> <false/> <key>Title</key> <string>Windows 10</string> <key>Type</key> <string>Windows</string> <key>Volume</key> <string>WIN10</string> </dict> </array> </dict> <dict> You are the man. I put NTFS.efi into /EFI/CLOVER/drivers64. Now, it shows Mac OSx, Win10, and Win7. 1 Link to comment Share on other sites More sharing options...
TheRacerMaster Posted October 11, 2015 Share Posted October 11, 2015 I think I've gotten kext injection to work the way I want it to. With some (very hacky and rushed) edits, Clover now loads kexts from the Other folder first (in OEM if present) and then afterwards, the OS-specific version (e.g. 10.11, also in OEM if present). Again, this is very hacky and probably buggy, check before using it. It seems to work from the (very limited) tests I've done. Oops, there were some errors in the diff, here's the fixed one: diff --git a/rEFIt_UEFI/Platform/Platform.h b/rEFIt_UEFI/Platform/Platform.h index a031f93..a03fb8a 100644 --- a/rEFIt_UEFI/Platform/Platform.h +++ b/rEFIt_UEFI/Platform/Platform.h @@ -1646,11 +1646,20 @@ SetFSInjection ( ); CHAR16* -GetExtraKextsDir ( +GetOtherKextsDir (); + +CHAR16* +GetOSVersionKextsDir ( CHAR8 *OSVersion ); EFI_STATUS +InjectKextsFromDir ( + EFI_STATUS Status, + CHAR16 *SrcDir + ); + +EFI_STATUS LoadKexts ( IN LOADER_ENTRY *Entry ); diff --git a/rEFIt_UEFI/Platform/Settings.c b/rEFIt_UEFI/Platform/Settings.c index c95f472..c56bdda 100644 --- a/rEFIt_UEFI/Platform/Settings.c +++ b/rEFIt_UEFI/Platform/Settings.c @@ -5486,14 +5486,32 @@ SaveSettings () return EFI_SUCCESS; } +CHAR16 +*GetOtherKextsDir () +{ + CHAR16 *SrcDir = NULL; + + SrcDir = PoolPrint (L"%s\\kexts\\Other", OEMPath); + if (!FileExists (SelfVolume->RootDir, SrcDir)) { + FreePool (SrcDir); + SrcDir = PoolPrint (L"\\EFI\\CLOVER\\kexts\\Other"); + if (!FileExists (SelfVolume->RootDir, SrcDir)) { + FreePool (SrcDir); + SrcDir = NULL; + } + } + + return SrcDir; +} + //dmazar CHAR16 -*GetExtraKextsDir ( +*GetOSVersionKextsDir ( CHAR8 *OSVersion ) { CHAR16 *SrcDir = NULL; - CHAR8 FixedVersion[6] = "Other"; + CHAR8 FixedVersion[6]; CHAR8 *DotPtr; if (OSVersion != NULL) { @@ -5516,25 +5534,10 @@ CHAR16 SrcDir = PoolPrint (L"%s\\kexts\\%a", OEMPath, FixedVersion); if (!FileExists (SelfVolume->RootDir, SrcDir)) { FreePool (SrcDir); - SrcDir = PoolPrint (L"%s\\kexts\\Other", OEMPath); - - if (!FileExists (SelfVolume->RootDir, SrcDir)) { - FreePool (SrcDir); - SrcDir = NULL; - } - } - - if (SrcDir == NULL) { - // if not found, check EFI\CLOVER\kexts\... SrcDir = PoolPrint (L"\\EFI\\CLOVER\\kexts\\%a", FixedVersion); if (!FileExists (SelfVolume->RootDir, SrcDir)) { FreePool (SrcDir); - // SrcDir = PoolPrint (L"\\EFI\\CLOVER\\kexts\\Other", gSettings.OEMProduct); - SrcDir = PoolPrint (L"\\EFI\\CLOVER\\kexts\\Other"); - if (!FileExists (SelfVolume->RootDir, SrcDir)) { - FreePool (SrcDir); - SrcDir = NULL; - } + SrcDir = NULL; } } @@ -5542,6 +5545,21 @@ CHAR16 } EFI_STATUS +InjectKextsFromDir ( + EFI_STATUS Status, + CHAR16 *SrcDir + ) +{ + + if (EFI_ERROR (Status)) { + MsgLog (" - ERROR: Kext injection failed!\n"); + return EFI_NOT_STARTED; + } + + return Status; +} + +EFI_STATUS SetFSInjection ( IN LOADER_ENTRY *Entry ) @@ -5555,7 +5573,7 @@ SetFSInjection ( FSI_STRING_LIST *Blacklist = 0; FSI_STRING_LIST *ForceLoadKexts; - MsgLog ("FSInjection: "); + MsgLog ("Beginning FSInjection\n"); Volume = Entry->Volume; @@ -5574,18 +5592,18 @@ SetFSInjection ( Status = gBS->LocateProtocol(&gFSInjectProtocolGuid, NULL, (void **)&FSInject); if (EFI_ERROR (Status)) { //Print (L"- No FSINJECTION_PROTOCOL, Status = %r\n", Status); - MsgLog ("not started - gFSInjectProtocolGuid not found\n"); + MsgLog (" - ERROR: gFSInjectProtocolGuid not found!\n"); return EFI_NOT_STARTED; } // check if blocking of caches is needed if (OSFLAG_ISSET(Entry->Flags, OSFLAG_NOCACHES)) { - MsgLog ("blocking caches"); + MsgLog ("Blocking kext caches\n"); // BlockCaches = TRUE; // add caches to blacklist Blacklist = FSInject->CreateStringList (); if (Blacklist == NULL) { - MsgLog (": Error not enough memory!\n"); + MsgLog (" - ERROR: Not enough memory!\n"); return EFI_NOT_STARTED; } @@ -5599,55 +5617,45 @@ SetFSInjection ( if (gSettings.BlockKexts[0] != L'\0') { FSInject->AddStringToList(Blacklist, PoolPrint (L"\\System\\Library\\Extensions\\%s", gSettings.BlockKexts)); } - - MsgLog (", "); } // check if kext injection is needed // (will be done only if caches are blocked or if boot.efi refuses to load kernelcache) SrcDir = NULL; if (OSFLAG_ISSET(Entry->Flags, OSFLAG_WITHKEXTS)) { - SrcDir = GetExtraKextsDir(Entry->OSVersion); - if (SrcDir != NULL) { - // we have found it - injection will be done - MsgLog ("using kexts path: '%s'", SrcDir); -// InjectionNeeded = TRUE; - } else { - MsgLog ("skipping kext injection (kexts folder not found)"); - } - } else { - MsgLog ("skipping kext injection (not requested)"); - } - - // prepare list of kext that will be forced to load - ForceLoadKexts = FSInject->CreateStringList (); - if (ForceLoadKexts == NULL) { - MsgLog (" - Error: not enough memory!\n"); - return EFI_NOT_STARTED; - } - - KextPatcherRegisterKexts (FSInject, ForceLoadKexts, Entry); + Status = FSInject->Install ( + Volume->DeviceHandle, + L"\\System\\Library\\Extensions", + SelfVolume->DeviceHandle, + GetOtherKextsDir (), + Blacklist, + ForceLoadKexts + ); + InjectKextsFromDir(Status, GetOtherKextsDir()); - Status = FSInject->Install ( + Status = FSInject->Install ( Volume->DeviceHandle, L"\\System\\Library\\Extensions", SelfVolume->DeviceHandle, - SrcDir, + GetOSVersionKextsDir (Entry->OSVersion), Blacklist, ForceLoadKexts ); - - if (SrcDir != NULL) { - FreePool (SrcDir); + InjectKextsFromDir(Status, GetOSVersionKextsDir(Entry->OSVersion)); + } else { + MsgLog ("skipping kext injection (not requested)\n"); } - if (EFI_ERROR (Status)) { - MsgLog (" - Error: could not install injection!\n"); + // prepare list of kext that will be forced to load + ForceLoadKexts = FSInject->CreateStringList (); + if (ForceLoadKexts == NULL) { + MsgLog (" - Error: not enough memory!\n"); return EFI_NOT_STARTED; } - + + KextPatcherRegisterKexts (FSInject, ForceLoadKexts, Entry); + // reinit Volume->RootDir? it seems it's not needed. - MsgLog ("\n"); return Status; } diff --git a/rEFIt_UEFI/Platform/kext_inject.c b/rEFIt_UEFI/Platform/kext_inject.c index 53b71b9..d73e73d 100644 --- a/rEFIt_UEFI/Platform/kext_inject.c +++ b/rEFIt_UEFI/Platform/kext_inject.c @@ -303,7 +303,26 @@ EFI_STATUS LoadKexts(IN LOADER_ENTRY *Entry) } // Volume = Entry->Volume; - SrcDir = GetExtraKextsDir(Entry->OSVersion); + SrcDir = GetOtherKextsDir(); + if (SrcDir != NULL) { + MsgLog("Preparing kexts injection for arch=%s from %s\n", (archCpuType==CPU_TYPE_X86_64)?L"x86_64":(archCpuType==CPU_TYPE_I386)?L"i386":L"", SrcDir); + // look through contents of the directory + DirIterOpen(SelfVolume->RootDir, SrcDir, &KextIter); + while (DirIterNext(&KextIter, 1, L"*.kext", &KextFile)) { + if (KextFile->FileName[0] == '.' || StrStr(KextFile->FileName, L".kext") == NULL) + continue; // skip this + + UnicodeSPrint(FileName, 512, L"%s\\%s", SrcDir, KextFile->FileName); + MsgLog(" Extra kext: %s\n", FileName); + AddKext(Entry, SelfVolume->RootDir, FileName, archCpuType); + + UnicodeSPrint(PlugIns, 512, L"%s\\%s", FileName, L"Contents\\PlugIns"); + LoadPlugInKexts(Entry, SelfVolume->RootDir, PlugIns, archCpuType, FALSE); + } + DirIterClose(&KextIter); + } + + SrcDir = GetOSVersionKextsDir(Entry->OSVersion); if (SrcDir != NULL) { MsgLog("Preparing kexts injection for arch=%s from %s\n", (archCpuType==CPU_TYPE_X86_64)?L"x86_64":(archCpuType==CPU_TYPE_I386)?L"i386":L"", SrcDir); // look through contents of the directory Also, here's a new package of r3280 built with ./ebuild.sh --only-sata0 -x64 with this patch. 3 Link to comment Share on other sites More sharing options...
Iwanche Posted October 12, 2015 Share Posted October 12, 2015 I have problem with efi partiton, i don't have efi partition. I have folder efi in hdd, and i don't use toleda audio script, because i can't moun efi partition. What's wrong? Link to comment Share on other sites More sharing options...
arsradu Posted October 12, 2015 Share Posted October 12, 2015 I have problem with efi partiton, i don't have efi partition. I have folder efi in hdd, and i don't use toleda audio script, because i can't moun efi partition. What's wrong? Did you try using Clover Configurator or EFI Mounter to mount your EFI partition? By default it's hidden. So yes, you won't be able to see it in Finder. Link to comment Share on other sites More sharing options...
Iwanche Posted October 12, 2015 Share Posted October 12, 2015 Did you try using Clover Configurator or EFI Mounter to mount your EFI partition? By default it's hidden. So yes, you won't be able to see it in Finder. I know that. I try configurator and efi mounter, but no efi partition, just folder on hdd. I don't know how? I try debug in disk utility, but no efi partition.. This is how i install clover bootloader: Link to comment Share on other sites More sharing options...
arsradu Posted October 12, 2015 Share Posted October 12, 2015 I know that. I try configurator and efi mounter, but no efi partition, just folder on hdd. I don't know how? I try debug in disk utility, but no efi partition.. This is how i install clover bootloader: Legacy or UEFI booting? What are you trying to achieve? Also, please, open up a terminal and post the output of this command: diskutil list Or take a screenshot of that. Link to comment Share on other sites More sharing options...
Iwanche Posted October 12, 2015 Share Posted October 12, 2015 Legacy or UEFI booting? What are you trying to achieve? Also, please, open up a terminal and post the output of this command: diskutil list Or take a screenshot of that. When i put this command in terminal, no efi partition. Legacy booting. I try to work sound, toleda audio script, but i can't because efi partition, not mount. Link to comment Share on other sites More sharing options...
arsradu Posted October 12, 2015 Share Posted October 12, 2015 When i put this command in terminal, no efi partition. Legacy booting. I try to work sound, toleda audio script, but i can't because efi partition, not mount. There is nothing to mount. You don't have an EFI partition to mount! Is your drive formatted as GUID? Link to comment Share on other sites More sharing options...
Iwanche Posted October 12, 2015 Share Posted October 12, 2015 There is nothing to mount. You don't have an EFI partition to mount! Is your drive formatted as GUID? Yeah, i don't have an EFI partition to mount.. Yes, formatted as GUID.. Link to comment Share on other sites More sharing options...
arsradu Posted October 12, 2015 Share Posted October 12, 2015 Yeah, i don't have an EFI partition to mount.. Yes, formatted as GUID.. Also formatted partition as Mac OS Extended (journaled)? This is odd. Link to comment Share on other sites More sharing options...
Iwanche Posted October 12, 2015 Share Posted October 12, 2015 Also formatted partition as Mac OS Extended (journaled)? This is odd. Yes.. Of course.. I really don't know, what's wrong.. And everything works, kext for ethernet,fakesmc,null, except the sound, even thought i had realtekALC.kext for sound, that worked in yosemite. Link to comment Share on other sites More sharing options...
arsradu Posted October 12, 2015 Share Posted October 12, 2015 Yes.. Of course.. I really don't know, what's wrong.. And everything works, kext for ethernet,fakesmc,null, except the sound, even thought i had realtekALC.kext for sound, that worked in yosemite. Could you please, post a screenshot or output of diskutil list command? Also, a boot.log or preboot.log might help. What's wrong is that it didn't create an EFI partition upon formatting your hard drive. Or....you removed it accidentally afterwards. Either way, with no EFI partition, there is nothing to mount, so you can't fix your sound (at least not using Clover patching). Link to comment Share on other sites More sharing options...
Recommended Posts