Matgen84 Posted October 18, 2017 Share Posted October 18, 2017 Sad but true Slice, even more strange. Here the log from our friends Matgen84: arch was correctly detect while loading 'Other' folder, but gone afterwhile. 46:146 0:000 OSVesion: 10.13.1, ShortOSVersion=10.13, uni-vers=10.13, 46:146 0:000 Preparing kexts injection for arch=x86_64 from EFI\CLOVER\kexts\Other ... 46:146 0:000 Preparing kexts injection for arch= from EFI\CLOVER\kexts\10.13 @cecekpawon: thanks again for your help I try yesterday evening cyberev's 4248 compiled version: I can boot normally. After 3-4 times recreated ~src folder on my system, I noticed that the folder is less than 600Mo. For the fifth test, only 480Mo. I don't know why and what have to do, ? If somebody give me a solution. Link to comment Share on other sites More sharing options...
rock.n.rollyn Posted October 18, 2017 Share Posted October 18, 2017 Take ioreg after boot with clover r3763. And please upload ioreg file. 나의 LG-F800S 의 Tapatalk에서 보냄 Here it is: John’s Clover_3763.ioreg.zip I hope I did the right thing. Link to comment Share on other sites More sharing options...
Sherlocks Posted October 18, 2017 Share Posted October 18, 2017 Here it is: John’s Clover_3763.ioreg.zip I hope I did the right thing. okay try this in GUI with latest clover fakeid intel gfx 0x01628086 ig-platform-id 0x01620005 then report that works or not with clover bootlog to me. after check this, i will correct source for hd 4000 desktop. 1 Link to comment Share on other sites More sharing options...
Matgen84 Posted October 18, 2017 Share Posted October 18, 2017 Hi Same issue with commits r42452: kextd stall ApppleAPCICPU, etc and "arch=" "thinning failed"--->no injection---->no boot under 10.13 See preboot preboot.log.zip Link to comment Share on other sites More sharing options...
Badruzeus Posted October 18, 2017 Share Posted October 18, 2017 Hi Same issue with commits r42452: kextd stall ApppleAPCICPU, etc and "arch=" "thinning failed"--->no injection---->no boot under 10.13 See preboot And how if using... EFI_r4252_XCode8.2.zip Link to comment Share on other sites More sharing options...
Slice Posted October 18, 2017 Share Posted October 18, 2017 Slice, I svn diff, and terminal give me nothing. I build r4251 with ./ebuild.sh, still give me log like this on Dell Precision M3800. preboot.log.zip You said Official Clover cannot have "Preparing for kext injection...", what that mean sorry? Am I doing something wrong? Or miss something? syscl Let think about 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); archCpuType==CPU_TYPE_X86_64 => "x86_64" archCpuType==CPU_TYPE_I386 => "i386" It came from #if defined(MDE_CPU_X64) cpu_type_t archCpuType=CPU_TYPE_X86_64; #else cpu_type_t archCpuType=CPU_TYPE_I386; #endif How it can be other value? 1 Link to comment Share on other sites More sharing options...
danif Posted October 18, 2017 Share Posted October 18, 2017 Hi, is there something changed in r4250? I have tried to build r4250 and give me "Thinning failed". I have to force archCpuType=CPU_TYPE_X86_64 to make it boot, otherwise the archCpuType is corrupted? Here's the log from r4251(same with r4250 when I reverted). preboot.log.zip Two days ago, I had the same problem, if I tried to compile myself with BuildClover (10.12.6 xcode8) I had that error, if I tried booting with file from SF, there was no problem (same rev)... I downgraded-compiled, downgraded-compiled ... until I found the last rev I could compile without this error ( it was 4232 I think).. Now I cannot confirm because since I updated to Xcode9, buildClover 4.5.5 -> 4.5.6 and clover to rev4247 I was able to compile sucessfully As you are not using buildClover, and already commited > 4247 then maybe problem is xcode, are you using xcode 8? Link to comment Share on other sites More sharing options...
vector sigma Posted October 18, 2017 Share Posted October 18, 2017 Let think about 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); archCpuType==CPU_TYPE_X86_64 => "x86_64" archCpuType==CPU_TYPE_I386 => "i386" It came from #if defined(MDE_CPU_X64) cpu_type_t archCpuType=CPU_TYPE_X86_64; #else cpu_type_t archCpuType=CPU_TYPE_I386; #endif How it can be other value? Why not just: (archCpuType==CPU_TYPE_X86_64)? L"x86_64" : L"i386" Edit Ok, there's a 3° possibility to be L"", so archCpuType is not set (CPU_TYPE_X86_64). maybe the mach_header is changed or running on a modded kernel? Make it test with: 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"none", SrcDir); Edit Since Sir Matgen84 receives "ApppleAPCICPU" on kextd ... looks the kernel to have problems to me, just on the mach_header and cannot get the cpu_type_t. Please post it. Link to comment Share on other sites More sharing options...
vector sigma Posted October 18, 2017 Share Posted October 18, 2017 Hi guys, for (i = 0; i < 5; i++) { kern[patchLocation+i] = 0x90; } but starting from 0 did not risk to patch also the header? ..Bro this is bad! Link to comment Share on other sites More sharing options...
Guest ricoc90 Posted October 18, 2017 Share Posted October 18, 2017 Edit Since Sir Matgen84 receives "ApppleAPCICPU" on kextd ... looks the kernel to have problems to me, just on the mach_header and cannot get the cpu_type_t. Please post it. Nah, he gets the AppleAPCICPU kextd stall because FakeSMC isn't being injected (thinning failed) Link to comment Share on other sites More sharing options...
vector sigma Posted October 18, 2017 Share Posted October 18, 2017 (edited) Nah, he gets the AppleAPCICPU kextd stall because FakeSMC isn't being injected (thinning failed) Why thin a 64 bit executable like AppleALC.kext then? I mean, no need to do that, is ready to be loaded by the mach-o parser. Anyway patch the kernel from byte 0 is bad. looking better to his lo, kexts aren't prelinked, so thinning is not working (file not found or bad parser). Just suppositions. Edited October 18, 2017 by vector sigma Link to comment Share on other sites More sharing options...
Guest ricoc90 Posted October 18, 2017 Share Posted October 18, 2017 Why thin a 64 bit executable then? I mean, no need to do that, is ready to be loaded by the mach-o parser. or I guess I'm not a coder, but I'd say because archCpuType is empty, as seen in his preboot.log: Preparing kexts injection for arch= from EFI\CLOVER\kexts\10.13 See: https://github.com/Clover-EFI-Bootloader/clover/blob/master/rEFIt_UEFI/Platform/kext_inject.c#L24 Link to comment Share on other sites More sharing options...
vector sigma Posted October 18, 2017 Share Posted October 18, 2017 I'm not a coder, but I'd say because archCpuType is empty, as seen in his preboot.log: Preparing kexts injection for arch= from EFI\CLOVER\kexts\10.13 See: https://github.com/Clover-EFI-Bootloader/clover/blob/master/rEFIt_UEFI/Platform/kext_inject.c#L24 But this can happen only if this does not work: struct mach_header { uint32_t magic; /* mach magic number identifier */ cpu_type_t cputype; /* cpu specifier */ cpu_subtype_t cpusubtype; /* machine specifier */ uint32_t filetype; /* type of file */ uint32_t ncmds; /* number of load commands */ uint32_t sizeofcmds; /* the size of all the load commands */ uint32_t flags; /* flags */ }; archCpuType is determined by cpu_type_t... and is bad (not a 32 bit cpu, nor a 64, nor both) somehow Link to comment Share on other sites More sharing options...
syscl Posted October 18, 2017 Share Posted October 18, 2017 @Slice, from @cekepawon report, there's something funny, thinning fail occurs when the first time inject Shiki.kext in both my case and @Matgen84's case(still not sure). Another possible: memory issues around string between UnisysVers and ShortOSVersions? Will try once back to home. syscl Link to comment Share on other sites More sharing options...
syscl Posted October 19, 2017 Share Posted October 19, 2017 For those who experienced archCpuType missing issue, please try this one. r4252-p1.zip I narrowed down the issue and now the issue should have gone(work on M3800). @Slice, why we need this piece of code? This is the place that cause the archCpuType issue CHAR16 UniSysVers[6]; CHAR8 ShortOSVersion[6]; INTN i; for (i = 0; i < 6; i++) { ShortOSVersion[i] = Entry->OSVersion[i]; if (ShortOSVersion[i] == '\0') { break; } if (((i > 2) && (ShortOSVersion[i] == '.')) || i == 5) { ShortOSVersion[i] = '\0'; ShortOSVersion[i + 1] = '\0'; break; } } AsciiStrToUnicodeStrS(ShortOSVersion, UniSysVers, 6); If GetOSVersionKextsDir return null, then we should not declare local variable ShortOSVersion. I used my version that the issue has gone. syscl Link to comment Share on other sites More sharing options...
Slice Posted October 19, 2017 Share Posted October 19, 2017 For those who experienced archCpuType missing issue, please try this one. r4252-p1.zip I narrowed down the issue and now the issue should have gone(work on M3800). @Slice, why we need this piece of code? This is the place that cause the archCpuType issue CHAR16 UniSysVers[6]; CHAR8 ShortOSVersion[6]; INTN i; for (i = 0; i < 6; i++) { ShortOSVersion[i] = Entry->OSVersion[i]; if (ShortOSVersion[i] == '\0') { break; } if (((i > 2) && (ShortOSVersion[i] == '.')) || i == 5) { ShortOSVersion[i] = '\0'; ShortOSVersion[i + 1] = '\0'; break; } } AsciiStrToUnicodeStrS(ShortOSVersion, UniSysVers, 6); If GetOSVersionKextsDir return null, then we should not declare local variable ShortOSVersion. I used my version that the issue has gone. syscl OSVersion="10.12.6" while folder named "10.12". If GetOSVersionKextsDir return null then condition if(null) if ((SrcDir = GetOSVersionKextsDir(ShortOSVersion))) { MsgLog("Preparing kexts injection for arch=%s from %s\n", (archCpuType==CPU_TYPE_X86_64)?L"x86_64": @Slice, from @cekepawon report, there's something funny, thinning fail occurs when the first time inject Shiki.kext in both my case and @Matgen84's case(still not sure). Another possible: memory issues around string between UnisysVers and ShortOSVersions? Will try once back to home. syscl I may propose some memory leak or wrong pointer. Link to comment Share on other sites More sharing options...
syscl Posted October 19, 2017 Share Posted October 19, 2017 @Slice I think GetOSVersionKextsDir has already taken care of 10.xx.xx: AsciiStrnCpyS(FixedVersion, 16, OSVersion, 5); Here's the patch for r4252 Index: rEFIt_UEFI/Platform/kext_inject.c =================================================================== --- rEFIt_UEFI/Platform/kext_inject.c (revision 4252) +++ rEFIt_UEFI/Platform/kext_inject.c (working copy) @@ -311,23 +311,6 @@ // syscl - allow specific load inject kext // Clover/Kexts/Other is for general injection thus we need to scan both Other and OSVersion folder - CHAR16 UniSysVers[6]; - CHAR8 ShortOSVersion[6]; - INTN i; - for (i = 0; i < 6; i++) { - ShortOSVersion[i] = Entry->OSVersion[i]; - if (ShortOSVersion[i] == '\0') { - break; - } - if (((i > 2) && (ShortOSVersion[i] == '.')) || i == 5) { - ShortOSVersion[i] = '\0'; - ShortOSVersion[i + 1] = '\0'; - break; - } - } - AsciiStrToUnicodeStrS(ShortOSVersion, UniSysVers, 6); - DBG("OSVesion: %a, ShortOSVersion=%a, uni-vers=%s,\n", Entry->OSVersion, ShortOSVersion, UniSysVers); - if ((SrcDir = GetOtherKextsDir())) { 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); CurrentKext = InjectKextList; @@ -366,8 +349,10 @@ FreePool(SrcDir); } - if ((SrcDir = GetOSVersionKextsDir(ShortOSVersion))) { + if ((SrcDir = GetOSVersionKextsDir(Entry->OSVersion))) { 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); + CHAR16 UniSysVers[6]; + AsciiStrToUnicodeStrS(Entry->OSVersion, UniSysVers, 6); CurrentKext = InjectKextList; while (CurrentKext) { DBG("current kext name %s Match %s, while sysver: %s\n", CurrentKext->FileName, CurrentKext->MatchOS, UniSysVers); Please give this a try and see if this work on your computer as well(I mean not corrupt previous kext inject function as well) r4252-p1.zip syscl Link to comment Share on other sites More sharing options...
Slice Posted October 19, 2017 Share Posted October 19, 2017 @Slice I think GetOSVersionKextsDir has already taken care of 10.xx.xx: AsciiStrnCpyS(FixedVersion, 16, OSVersion, 5); Here's the patch for r4252 Index: rEFIt_UEFI/Platform/kext_inject.c =================================================================== --- rEFIt_UEFI/Platform/kext_inject.c (revision 4252) +++ rEFIt_UEFI/Platform/kext_inject.c (working copy) @@ -311,23 +311,6 @@ // syscl - allow specific load inject kext // Clover/Kexts/Other is for general injection thus we need to scan both Other and OSVersion folder - CHAR16 UniSysVers[6]; - CHAR8 ShortOSVersion[6]; - INTN i; - for (i = 0; i < 6; i++) { - ShortOSVersion[i] = Entry->OSVersion[i]; - if (ShortOSVersion[i] == '\0') { - break; - } - if (((i > 2) && (ShortOSVersion[i] == '.')) || i == 5) { - ShortOSVersion[i] = '\0'; - ShortOSVersion[i + 1] = '\0'; - break; - } - } - AsciiStrToUnicodeStrS(ShortOSVersion, UniSysVers, 6); - DBG("OSVesion: %a, ShortOSVersion=%a, uni-vers=%s,\n", Entry->OSVersion, ShortOSVersion, UniSysVers); - if ((SrcDir = GetOtherKextsDir())) { 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); CurrentKext = InjectKextList; @@ -366,8 +349,10 @@ FreePool(SrcDir); } - if ((SrcDir = GetOSVersionKextsDir(ShortOSVersion))) { + if ((SrcDir = GetOSVersionKextsDir(Entry->OSVersion))) { 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); + CHAR16 UniSysVers[6]; + AsciiStrToUnicodeStrS(Entry->OSVersion, UniSysVers, 6); CurrentKext = InjectKextList; while (CurrentKext) { DBG("current kext name %s Match %s, while sysver: %s\n", CurrentKext->FileName, CurrentKext->MatchOS, UniSysVers); Please give this a try and see if this work on your computer as well(I mean not corrupt previous kext inject function as well) r4252-p1.zip syscl I tested in QEMU. As you see only Other folder taken into account. 1 Link to comment Share on other sites More sharing options...
cecekpawon Posted October 19, 2017 Share Posted October 19, 2017 Also noticed here, there are no default archCpuType for 10.7: if (Arch != NULL && StrnCmp(Arch,L"x86_64",StrLen(L"x86_64")) == 0) { archCpuType = CPU_TYPE_X86_64; } else if (Arch != NULL && StrnCmp(Arch,L"i386",StrLen(L"i386")) == 0) { archCpuType = CPU_TYPE_I386; } else if (Entry->OSVersion != NULL) { UINT64 os_version = AsciiOSVersionToUint64(Entry->OSVersion); if (os_version >= AsciiOSVersionToUint64("10.8")) { archCpuType = CPU_TYPE_X86_64; // For OSVersion >= 10.8, only x86_64 exists } else if (os_version < AsciiOSVersionToUint64("10.7")) { archCpuType = CPU_TYPE_I386; // For OSVersion < 10.7, use default of i386 } } 1 Link to comment Share on other sites More sharing options...
syscl Posted October 19, 2017 Share Posted October 19, 2017 I tested in QEMU. Снимок экрана 2017-10-19 в 6.46.20.png Снимок экрана 2017-10-19 в 6.46.08.png Снимок экрана 2017-10-19 в 6.45.03.png As you see only Other folder taken into account. Oh, I see, seems this is 10.7.x, so GetOSVersionKextsDir use "/EFI/Clover/kexts10.7." as folder. Please give me a few minutes... syscl Link to comment Share on other sites More sharing options...
syscl Posted October 19, 2017 Share Posted October 19, 2017 @Slice Please try this one. r4252-p2.zip Thank you, syscl 1 Link to comment Share on other sites More sharing options...
Matgen84 Posted October 19, 2017 Share Posted October 19, 2017 @Slice Please try this one. r4252-p2.zip Thank you, syscl In addition to the problems (arch, kextd ...) I saw "Unsupported CPU on receptor" when booting. I don't know if it's important: seems to be first time under my Core i7 system. Thank you Link to comment Share on other sites More sharing options...
syscl Posted October 19, 2017 Share Posted October 19, 2017 In addition to the problems (arch, kextd ...) I saw "Unsupported CPU on receptor" when booting. I don't know if it's important: seems to be first time under my Core i7 system. Thank you So r4252-p2 not work on your system? Could you provide the preboot.log by pressing the F2 when boot? Thank you in advance, syscl 1 Link to comment Share on other sites More sharing options...
Matgen84 Posted October 19, 2017 Share Posted October 19, 2017 So r4252-p2 not work on your system? Could you provide the preboot.log by pressing the F2 when boot? Thank you in advance, syscl I have not yet tried r4252-p2. The message appears in commits r4248-4251 and before, on my system. Edit: Now, I try your version. See preboot.log All work, I can boot normally. But there is always ""Unsupported CPU for receptor" messages. I don't know if it will continue to work when I compile commits on my system. I re-create several times ~src folder with Build_clover.command 4.5.6: so far without success Thanks preboot.log.zip Link to comment Share on other sites More sharing options...
syscl Posted October 19, 2017 Share Posted October 19, 2017 I have not yet tried r4252-p2. The message appears in commits r4248-4251 and before, on my system. Now, I try your version ans post preboot.log Thanks I don't have the permission to download the preboot.log.. why?? By the way, can r4252-p2 boot (because I cannot see your boot log)? syscl Link to comment Share on other sites More sharing options...
Recommended Posts