Jump to content

OS X El Capitan DP's builds!


924 posts in this topic

Recommended Posts

Hum… just a question :

 

Is direct upgrade with the app is only available for "truely UEFI" systems ? I mean, I have a Dell D830 with legacy bios and Clover installed in ESP of my GUID partition scheme SSD and I don't see any boot options like "Boot OS X Install from HDD", just the usual "Boot Yosemite". So nothing is happening and it keeps booting Yosemite as usual.

 

I replaced custom entries scan by Auto=Yes but no way, there's no Install partition to boot from :wacko:. I also made sure I had HFSPlus.efi in Drivers64 folder.

 

And I do have an "OS X Install Data" folder at the root of my SSD. So it's like Clover can't see the boot.efi within which I guess is the one that launch the upgrade process. Correct ? Did I miss something ?

Link to comment
Share on other sites

I sign my kexts so thats not an issue for me, i don't use injection and i still use v2999

I also sign my kext and just load them from L/E and no I'm not talking about signing my kext with Gatebreak

Link to comment
Share on other sites

So it's like Clover can't see the boot.efi within which I guess is the one that launch the upgrade process. Correct ? Did I miss something ?

Clover saw that boot.efi just fine on my machine when I installed from app.

Link to comment
Share on other sites

Clover saw that boot.efi just fine on my machine when I installed from app.

 

Ì can see in your sig that you're using Clover on a "true UEFI" mobo and I assume that Clover loads Drivers64UEFI which is not the case with legacy bios like mine. That's why I asked if it's someway related… or not :D.

Link to comment
Share on other sites

Hum… just a question :

 

Is direct upgrade with the app is only available for "truely UEFI" systems ?

 

No, it also works for legacy BIOS systems like my XPS M1530 - see "spoiler" pics in post#807.

 

You should see an entry,  "Boot OS X Install from xxxx" at the Clover Main Menu (where xxxx is the partition name where "Install OS X El Capitan GM Candidate.app" resides and was launched from).

 

Edit

Assuming you haven't already deleted the "OS X Install Data" folder containing boot.efi in the root of your OSX partition, I can only imagine something in your config.plist is hiding the entry...to diagnose the problem, check your Clover boot log/run bdmesg in terminal after booting to OSX.

  • Like 1
Link to comment
Share on other sites

Thanks for the reply fusion71au.

 

That's what I expected too but there's no such entry. Is there anything particular to add in Driversxxx folders of Clover except HFSPlus.efi ?

 

As I said, I tried with scan Auto=Yes and also booting from a USB stick with Clover on and there's just nothing else than my usual entries + hidden ones (pressing F3 or booting with the stick which has no custom entries at all). :wallbash:

 

Anyway, this not a big deal since I can still boot from a OS X 10.11 GM USB stick to perform the upgrade but I wanted to give a try to the "App way". On the other hand, I really want to know what's wrong with my setup <_<

Link to comment
Share on other sites

I also sign my kext and just load them from L/E and no I'm not talking about signing my kext with Gatebreak

People like you, who sign their kexts, either with a proper developer certificate or with Gatebreak, are still the exception to the rule. Most people do not sign the kexts, and thus they cannot use the prelinkedkernel. Something has to be done, or it won't work. Period.

  • Like 2
Link to comment
Share on other sites

because if a thing does not happen to you, this does not mean that is not true. Just read the previous pages to show you the opposite.

BTW that comes from Clover:

////////////////////////////////////
//
// 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 };

Read this:

//
// We can not rely on OSVersion global variable for OS version detection,
// since in some cases it is not correct (install of ML from Lion, for example).
// So, we'll use "brute-force" method - just try to patch.
// Actually, we'll at least check that if we can find only one instance of code that
// we are planning to patch.
//

then read this:

if (is64BitKernel) {
    NumLion_X64 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearch_X64, sizeof(KBELionSearch_X64));
    NumSnow_X64 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearch_X64, sizeof(KBESnowSearch_X64));
    NumML  = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLSearch, sizeof(KBEMLSearch));
    NumYos = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEYosSearch, sizeof(KBEYosSearch));
  } else {
    NumLion_i386 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearch_i386, sizeof(KBELionSearch_i386));
    NumSnow_i386 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearch_i386, sizeof(KBESnowSearch_i386));
  }
  
  if (NumSnow_X64 + NumSnow_i386 + NumLion_X64 + NumLion_i386 + NumML + NumYos > 1) {
    // more then one pattern found - we do not know what to do with it
    // and we'll skipp it
	  AsciiPrint("\nERROR patching kernel for injected kexts:\nmultiple patterns found (LionX64: %d, Lioni386: %d, ML: %d) - skipping patching!\n",
               NumLion_X64, NumLion_i386, NumML);
	  gBS->Stall(10000000);
	  return;
  }
  
  if (NumML == 1) {
    Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMLSearch, sizeof(KBEMLSearch), KBEMLReplace, 1);
    DBG_RT(Entry, "==> kernel OS X64: %d replaces done.\n", Num);
  }
  else if (NumYos == 1) {
	  Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosSearch, sizeof(KBEYosSearch), KBEYosReplace, 1) +
		SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECSearch, sizeof(KBEECSearch), KBEECReplace, 1);
    DBG_RT(Entry, "==> kernel Yosemite/El Capitan: %d replaces done.\n", Num);
  }
  else if (NumLion_i386 == 1) {
	  Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBELionSearch_i386, sizeof(KBELionSearch_i386), KBELionReplace_i386, 1);
    DBG_RT(Entry, "==> Lion i386: %d replaces done.\n", Num);
  }
  else if (NumLion_X64 == 1) {
	  Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBELionSearch_X64, sizeof(KBELionSearch_X64), KBELionReplace_X64, 1);
    DBG_RT(Entry, "==> Lion X64: %d replaces done.\n", Num);
  }
  else if (NumSnow_X64 == 1) {
	  Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESnowSearch_X64, sizeof(KBESnowSearch_X64), KBESnowReplace_X64, 1);
	  DBG_RT(Entry, "==> Snow X64: %d replaces done.\n", Num);
  }
  else if (NumSnow_i386 == 1) {
	  Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESnowSearch_i386, sizeof(KBESnowSearch_i386), KBESnowReplace_i386, 1);
    DBG_RT(Entry, "==> Snow i386: %d replaces done.\n", Num);
  }
  else {
    DBG_RT(Entry, "==> ERROR: NOT patched - unknown kernel.\n");
  }

Last part of code seem to me like to guess what will be the right OS to boot (and patch)

 

so if you read again this:

//

// We can not rely on OSVersion global variable for OS version detection,

// since in some cases it is not correct (install of ML from Lion, for example).

// So, we'll use "brute-force" method - just try to patch.

// Actually, we'll at least check that if we can find only one instance of code that

// we are planning to patch.

 

//

 

// more then one pattern found - we do not know what to do with it

// and we'll skipp it

oops  El Capitan kernel...have two occurences that the above code can find...

 

Than tell me if you can find any plist inside the temporary folders created by the app where clover can find the os version..

 

"createinstallmedia installer" instead declare the right version in:

 

/Volumes/Install OS X El Capitan GM Candidate/.IABootFilesSystemVersion.plist

and in

/Volumes/Install OS X El Capitan GM Candidate/System/Library/CoreServices/SystemVersion.plist

 

 

thats why its better to detect the kernel version instead of some file that isnt always correct.

  • Like 1
Link to comment
Share on other sites

for the first time OS X automatically recovered my gmail account (from iCloud i think).

This feature is new?? or it was always there and never worked for me???  :hysterical:

 

Gm installed ex novo, not updating beta

Link to comment
Share on other sites

Does sleep for you guys work with AMD graphics? Please add info about injection and framebuffer.

 

For me on PowerColor 7950 PCS+ with RadeonFramebuffer I get a black screen on wake. With Aji framebuffer it's the same.

Randomly yes, AMD 7770 without framebuffer

Link to comment
Share on other sites

I had PB1 still running. 

 

Now I updated my Clover to r3262, edited my config.plist with the new values required for El Capitan GM and everything installed as expected. I just had to rerun toleda's script for AppleHDA. 

 

I am very grateful towards all the people that make these things work so flawlessly.  :yes:

  • Like 1
Link to comment
Share on other sites

thats why its better to detect the kernel version instead of some file that isnt always correct.

Yea, ErmaC has already done some similar code to do other in Enoch...maybe we can use that, just need a list of all versions since Lion (were the discuss Installer method comes out).

Anyway Clover do a good job, I was just elaborate a possible cause for a boot failure by someone. Also is intresting for me because last night a new Enoch comes out where I added the support to boot the Recovery HD and the Vanilla Installer (ATM only the one created with createinstallermedia method). Now I'm elaborating code to boot the installer made directly by the app possibly using the kernelcach/prelinked that comings with that.

A possible scenario is that you can create the El Capitan Installer from Lion with the Install OSX El Capitan.app located in secondary partition, then targeting another partition:

in this case you have temporary files in two differents partitions and I have to use that to really boot in Vanilla way! Otherwise support in not complete :P

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...