Jump to content

Clover General discussion


ErmaC
29,866 posts in this topic

Recommended Posts

Wow

EDIT

Just added to Enoch too, thanks

 

 

// sherlocks: 10.12.DP1
        else if (KernelLapicError
                 && (bytes[i+0] == 0x65
                     && bytes[i+1] == 0x8B
                     && bytes[i+2] == 0x0C
                     && bytes[i+3] == 0x25
                     && bytes[i+4] == 0x1C
                     && bytes[i+5] == 0x00
                     && bytes[i+6] == 0x00
                     && bytes[i+7] == 0x00
                     && bytes[i+1409] == 0x65
                     && bytes[i+1410] == 0x8B
                     && bytes[i+1411] == 0x0C
                     && bytes[i+1412] == 0x25
                     && bytes[i+1413] == 0x1C
                     && bytes[i+1414] == 0x00
                     && bytes[i+1415] == 0x00
                     && bytes[i+1416] == 0x00))
        {
            patchLocation = i+1398;
            DBG("\t\tFound Sierra Lapic panic at 0x%08x\n", (unsigned int)patchLocation);
            break;
        }

 

 

  • Like 1
Link to comment
Share on other sites

I'm making modification to Pandora, Clover Enoch at same time :smoke:

 

Clover is nearly to boot a "restored" installer, but black screen with "createinstallmedia". Enoch can boot both, but I cannot reach the installer GUI... I have to finish the job...

I can confirm that the lapic panic is gone in Enoch, so can assume it will for Clover too. But not yet booted.

Link to comment
Share on other sites

I'm making modification to Pandora, Clover Enoch at same time :smoke:

 

Clover is nearly to boot a "restored" installer, but black screen with "createinstallmedia". Enoch can boot both, but I cannot reachthe installer GUI... I have to finish the job...

I can confirm that the lapic panic is gone in Enoch, so can assume it will for Clover too. But not yet booted.

Okay. Anyway i made lapic code is no problem like el capitan.

 

Also Im trying to install sierra too.

 

Thanks

 

나의 LG-F410S 의 Tapatalk에서 보냄

Link to comment
Share on other sites

I tested both versions CreateInstallMedia and Restore BaseSystem.dmg and copy over all needed Files. With Restore it stucks at iCloud Message even if you boot into single User Mode and load FakeSMC manually with kextload using CreateInstallMedia doesn´t make any difference at least it stucks at iCloud Message. Also it doesn´t make any difference if you use Clover or OZ both get stuck with the exactly same Message...

 

@pmcnano mentioned that he doesn´t succeed with the installer on a Quo Mainboard (OZ driven i guess) and used a cloned drive created with an original MAC. After installing required Kexts he was able to boot up which is evidence enough that KextInjection does not work anymore. I´ll guess we have to find a way to load FakeSMC early enough to bypass SMC related issues. 

Link to comment
Share on other sites

im getting early reboot in any scenario...

 

You need KernelLapic?  If you're reading along, you should realize that the lapic patch in Clover needs updating...

Link to comment
Share on other sites

Run OSInstall.mpkg on the desired volume (erase it firstly). Than I had to manually update the SystemVersion.plist (otherwise it keep the current version where are you running from).

It's a stupid method but for now works. And both Clover and Enoch (#3850) can run it with extensions in SLE.


Clover need a new patch to run extensions from the EFI folder:

////////////////////////////////////
//
// KernelBooterExtensionsPatch to load extra kexts besides kernelcache
//
//
UINT8   KBESnowSearch_i386[]   = { 0xE8, 0xED, 0xF9, 0xFF, 0xFF, 0xEB, 0x08, 0x89, 0x1C, 0x24 };
UINT8   KBESnowReplace_i386[]  = { 0xE8, 0xED, 0xF9, 0xFF, 0xFF, 0x90, 0x90, 0x89, 0x1C, 0x24 };
//E8 5A FB FF FF EB 08 48 89 DF
UINT8   KBESnowSearch_X64[]    = { 0xE8, 0x5A, 0xFB, 0xFF, 0xFF, 0xEB, 0x08, 0x48, 0x89, 0xDF };
UINT8   KBESnowReplace_X64[]   = { 0xE8, 0x5A, 0xFB, 0xFF, 0xFF, 0x90, 0x90, 0x48, 0x89, 0xDF };


UINT8   KBELionSearch_i386[]   = { 0xE8, 0xAA, 0xFB, 0xFF, 0xFF, 0xEB, 0x08, 0x89, 0x34, 0x24 };
UINT8   KBELionReplace_i386[]  = { 0xE8, 0xAA, 0xFB, 0xFF, 0xFF, 0x90, 0x90, 0x89, 0x34, 0x24 };

UINT8   KBELionSearch_X64[]    = { 0xE8, 0x0C, 0xFD, 0xFF, 0xFF, 0xEB, 0x08, 0x48, 0x89, 0xDF };
UINT8   KBELionReplace_X64[]   = { 0xE8, 0x0C, 0xFD, 0xFF, 0xFF, 0x90, 0x90, 0x48, 0x89, 0xDF };

UINT8   KBEMLSearch[]  = { 0xC6, 0xE8, 0x30, 0x00, 0x00, 0x00, 0xEB, 0x08, 0x48, 0x89, 0xDF };
UINT8   KBEMLReplace[] = { 0xC6, 0xE8, 0x30, 0x00, 0x00, 0x00, 0x90, 0x90, 0x48, 0x89, 0xDF };

//0xE8, 0x27, 0x00, 0x00, 0x00, 0xEB, 0x08, 0x48, 0x89, 0xDF }; @1ecfa4
//UINT8   KBEYosSearch[]  = {0xE8, 0x27, 0x00, 0x00, 0x00, 0xEB, 0x08, 0x48, 0x89, 0xDF };
//UINT8   KBEYosReplace[]  = {0xE8, 0x27, 0x00, 0x00, 0x00, 0x90, 0x90, 0x48, 0x89, 0xDF };

UINT8 KBEYosSearch[]  = { 0xE8, 0x25, 0x00, 0x00, 0x00, 0xEB, 0x05, 0xE8, 0xCE, 0x02, 0x00, 0x00 };
UINT8 KBEYosReplace[] = { 0xE8, 0x25, 0x00, 0x00, 0x00, 0x90, 0x90, 0xE8, 0xCE, 0x02, 0x00, 0x00 };

// as of El Capitan DP6
UINT8 KBEECSearch[]  = { 0xC3, 0x48, 0x85, 0xDB, 0x74, 0x70, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
UINT8 KBEECReplace[] = { 0xC3, 0x48, 0x85, 0xDB, 0xEB, 0x12, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };

@Sherlock can you take a look?... With the lapic one you was really fast...

  • Like 3
Link to comment
Share on other sites

Run OSInstall.mpkg on the desired volume (erase it firstly). Than I had to manually update the SystemVersion.plist (otherwise it keep the current version where are you running from).

It's a stupid method but for now works. And both Clover and Enoch (#3850) can run it with extensions in SLE.

 

Clover need a new patch to run extensions from the EFI folder:

////////////////////////////////////
//
// KernelBooterExtensionsPatch to load extra kexts besides kernelcache
//
//
UINT8   KBESnowSearch_i386[]   = { 0xE8, 0xED, 0xF9, 0xFF, 0xFF, 0xEB, 0x08, 0x89, 0x1C, 0x24 };
UINT8   KBESnowReplace_i386[]  = { 0xE8, 0xED, 0xF9, 0xFF, 0xFF, 0x90, 0x90, 0x89, 0x1C, 0x24 };
//E8 5A FB FF FF EB 08 48 89 DF
UINT8   KBESnowSearch_X64[]    = { 0xE8, 0x5A, 0xFB, 0xFF, 0xFF, 0xEB, 0x08, 0x48, 0x89, 0xDF };
UINT8   KBESnowReplace_X64[]   = { 0xE8, 0x5A, 0xFB, 0xFF, 0xFF, 0x90, 0x90, 0x48, 0x89, 0xDF };


UINT8   KBELionSearch_i386[]   = { 0xE8, 0xAA, 0xFB, 0xFF, 0xFF, 0xEB, 0x08, 0x89, 0x34, 0x24 };
UINT8   KBELionReplace_i386[]  = { 0xE8, 0xAA, 0xFB, 0xFF, 0xFF, 0x90, 0x90, 0x89, 0x34, 0x24 };

UINT8   KBELionSearch_X64[]    = { 0xE8, 0x0C, 0xFD, 0xFF, 0xFF, 0xEB, 0x08, 0x48, 0x89, 0xDF };
UINT8   KBELionReplace_X64[]   = { 0xE8, 0x0C, 0xFD, 0xFF, 0xFF, 0x90, 0x90, 0x48, 0x89, 0xDF };

UINT8   KBEMLSearch[]  = { 0xC6, 0xE8, 0x30, 0x00, 0x00, 0x00, 0xEB, 0x08, 0x48, 0x89, 0xDF };
UINT8   KBEMLReplace[] = { 0xC6, 0xE8, 0x30, 0x00, 0x00, 0x00, 0x90, 0x90, 0x48, 0x89, 0xDF };

//0xE8, 0x27, 0x00, 0x00, 0x00, 0xEB, 0x08, 0x48, 0x89, 0xDF }; @1ecfa4
//UINT8   KBEYosSearch[]  = {0xE8, 0x27, 0x00, 0x00, 0x00, 0xEB, 0x08, 0x48, 0x89, 0xDF };
//UINT8   KBEYosReplace[]  = {0xE8, 0x27, 0x00, 0x00, 0x00, 0x90, 0x90, 0x48, 0x89, 0xDF };

UINT8 KBEYosSearch[]  = { 0xE8, 0x25, 0x00, 0x00, 0x00, 0xEB, 0x05, 0xE8, 0xCE, 0x02, 0x00, 0x00 };
UINT8 KBEYosReplace[] = { 0xE8, 0x25, 0x00, 0x00, 0x00, 0x90, 0x90, 0xE8, 0xCE, 0x02, 0x00, 0x00 };

// as of El Capitan DP6
UINT8 KBEECSearch[]  = { 0xC3, 0x48, 0x85, 0xDB, 0x74, 0x70, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
UINT8 KBEECReplace[] = { 0xC3, 0x48, 0x85, 0xDB, 0xEB, 0x12, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
@Sherlock can you take a look?... With the lapic one you was really fast...
Is patch for kernel patch?

 

 

나의 LG-F410S 의 Tapatalk에서 보냄

Link to comment
Share on other sites

Yes is for the kernel in bootstrap.cpp:

 

KLDBootstrap::readStartupExtensions(void)

{

    kernel_section_t * prelinkInfoSect = NULL// do not free

 

    OSKextLog(/* kext */ NULL,

        kOSKextLogProgressLevel |

        kOSKextLogGeneralFlag | kOSKextLogDirectoryScanFlag |

        kOSKextLogKextBookkeepingFlag,

        "Reading startup extensions.");

    

   /* If the prelink info segment has a nonzero size, we are prelinked

    * and won't have any individual kexts or mkexts to read.

    * Otherwise, we need to read kexts or the mkext from what the booter

    * has handed us.

    */

    prelinkInfoSect = getsectbyname(kPrelinkInfoSegment, kPrelinkInfoSection);

    if (prelinkInfoSect->size) {

        readPrelinkedExtensions(prelinkInfoSect);

    } else {

        readBooterExtensions();

    }

 

    loadKernelComponentKexts();

    loadKernelExternalComponents();

    readBuiltinPersonalities();

    OSKext::sendAllKextPersonalitiesToCatalog();

 

    return;

}

 

need a new patch location for a function that allow the booter to link kexts. Otherwise cannot load kexts from EFI/CLOVER/kexts, only from /S/L/E or /L/E

  • Like 2
Link to comment
Share on other sites

Yes is for the kernel in bootstrap.cpp:

 

KLDBootstrap::readStartupExtensions(void)

 

need a new patch location for a function that allow the booter to link kexts. Otherwise cannot load kexts from EFI/CLOVER/kexts, only from /S/L/E or /L/E

Good information. Wait i will see this address and jmp(disable) this function.

 

나의 LG-F410S 의 Tapatalk에서 보냄

Link to comment
Share on other sites

×
×
  • Create New...