Jump to content

Chameleon 2.4svn Official PKG Installer


ErmaC
4,261 posts in this topic

Recommended Posts

Thank you. My system drives 10.11 Installer with QE/CI. 

I wondered why there was vendor-id override on 0x0112 ...

No wonder...

I wrote this code but I'm unable to test it... so error is part of human "nature"... the cause is: I don't have such hardware to test it...

Thank you for the diff!

 

Any other patch is more than welcome!

 

ErmaC

  • Like 1
Link to comment
Share on other sites

Let me chime in on this one as well. I was reading this: "This patch will fix i5-2500K issue, too." and thought... huh? Which issue?

 

You know. I am actually typing this on a hack with a Gigabyte motherboard with an Intel i5-2500K and I can't remember having seen any issue. Not at all.

 

What am I missing here?

Link to comment
Share on other sites

Let me chime in on this one as well. I was reading this: "This patch will fix i5-2500K issue, too." and thought... huh? Which issue? You know. I am actually typing this on a hack with a Gigabyte motherboard with an Intel i5-2500K and I can't remember having seen any issue. Not at all. What am I missing here?

oh... does your HD3000 work perfectly since before..!?

I heard that the latest chameleon could not enable i5-2500K, but could do Clover.

Then, I noticed both i3-2125 and i5-2500k has HD3000 witch device-id is 0x112.

If you got some error with boot_2774_TEST.zip, my patch may still have some issue... is it works...?

Link to comment
Share on other sites

NVRAM access is not dependant on the OS version... are you using AptioFix? If so, please share bdmesg and memory map to ensure no memory is relocated.

PS. would anyone know from the top of their head if one can read the NvramMailbox address from NVRAM during BDS? Or is it written later? Can't check atm. :)

 

EDIT: I had multiple topics open and thus didn't realize it was about Chameleon/Enoch. Sorry for that... Check out meklort's FileNVRAM then!

Link to comment
Share on other sites

Hi, for me latest chameleon is working! Thanks

 

But i am a bit confused - El Captian OS X 10.11 (15A284) - that the new kernel patcher (enabled) patches TWO times - El Captain AND Yosemite kernel pattern.

 

...searching for booter extensions pattern:

        Found El Capitan pattern, patched!
        Found Yosemite pattern, patched!
        2 substitution(s) made.

... 

here my bdmesg:

oading Kernel Cache from: 'Mac_OSX' (GPT HFS+)
Booting on OS X 10.11 (15A284)

System Integrity Protection status: disabled (Custom Configuration).
CsrActiveConfig = 0x67 (1100111)

Configuration:
Kext Signing: disabled
Filesystem Protections: disabled
Task for PID: disabled
Debugging Restrictions: enabled
Apple Internal: enabled
DTrace Restrictions: disabled
NVRAM Protections: disabled

Decompressing Kernel Cache:
	- Decompressing Kernel Using lzvn

[ KERNEL PATCHER START ]

		Will patch for 15.0.0 kernel version.

		KernelBooter_kexts state:  enabled!
		KernelPm           state: disabled!
		KernelLapicError   state: disabled!
		KernelLapicVersion state: disabled!
		KernelHaswell      state: disabled!
		KernelcpuFamily    state: disabled!
		KernelSSE3         state: disabled!
	- Searching for booter extensions pattern:
		Found El Capitan pattern, patched!
		Found Yosemite pattern, patched!
		2 substitution(s) made.
Kernel has successfully patched.

  • Like 1
Link to comment
Share on other sites

 

Hi, for me latest chameleon is working! Thanks

 

But i am a bit confused - El Captian OS X 10.11 (15A284) - that the new kernel patcher (enabled) patches TWO times - El Captain AND Yosemite kernel pattern.

 

...searching for booter extensions pattern:

        Found El Capitan pattern, patched!

        Found Yosemite pattern, patched!

        2 substitution(s) made.

... 

here my bdmesg:

oading Kernel Cache from: 'Mac_OSX' (GPT HFS+)
Booting on OS X 10.11 (15A284)

System Integrity Protection status: disabled (Custom Configuration).
CsrActiveConfig = 0x67 (1100111)

Configuration:
Kext Signing: disabled
Filesystem Protections: disabled
Task for PID: disabled
Debugging Restrictions: enabled
Apple Internal: enabled
DTrace Restrictions: disabled
NVRAM Protections: disabled

Decompressing Kernel Cache:
	- Decompressing Kernel Using lzvn

[ KERNEL PATCHER START ]

		Will patch for 15.0.0 kernel version.

		KernelBooter_kexts state:  enabled!
		KernelPm           state: disabled!
		KernelLapicError   state: disabled!
		KernelLapicVersion state: disabled!
		KernelHaswell      state: disabled!
		KernelcpuFamily    state: disabled!
		KernelSSE3         state: disabled!
	- Searching for booter extensions pattern:
		Found El Capitan pattern, patched!
		Found Yosemite pattern, patched!
		2 substitution(s) made.
Kernel has successfully patched.

Simply because is the same pattern found in yosemite (before el capitan comes out). is to know which is found (or not found). Usefull for future version of the kernel

@Micky1979, I may have found something. Need to double check this. What is the board-id of you notebook and desktop PC?

Lappy = MacBookPro9,2 (Ivy)

Desktop = iMac14,2 (HasWell)

 

How do you define the 2  flags from kernel.plist

KernelcpuFamily = is it the replacement of KernelPatcher.dylib?
KernelSSE3      = ?

The internal kernel patcher is a total  replacement of KernelPatcher.dylib, (in case you have it installed the internal one will be skipped).

 

"KernelcpuFamily" patch the XNU kernel for unsupported CPU, for example patch these functions:

 

static uint32_t
cpuid_set_cpufamily(i386_cpu_info_t *info_p)
{
	uint32_t cpufamily = CPUFAMILY_UNKNOWN;

	switch (info_p->cpuid_family) {
	case 6:
		switch (info_p->cpuid_model) {
		case 15:
			cpufamily = CPUFAMILY_INTEL_MEROM;
			break;
		case 23:
			cpufamily = CPUFAMILY_INTEL_PENRYN;
			break;
		case CPUID_MODEL_NEHALEM:
		case CPUID_MODEL_FIELDS:
		case CPUID_MODEL_DALES:
		case CPUID_MODEL_NEHALEM_EX:
			cpufamily = CPUFAMILY_INTEL_NEHALEM;
			break;
		case CPUID_MODEL_DALES_32NM:
		case CPUID_MODEL_WESTMERE:
		case CPUID_MODEL_WESTMERE_EX:
			cpufamily = CPUFAMILY_INTEL_WESTMERE;
			break;
		case CPUID_MODEL_SANDYBRIDGE:
		case CPUID_MODEL_JAKETOWN:
			cpufamily = CPUFAMILY_INTEL_SANDYBRIDGE;
			break;
		case CPUID_MODEL_IVYBRIDGE:
		case CPUID_MODEL_IVYBRIDGE_EP:
			cpufamily = CPUFAMILY_INTEL_IVYBRIDGE;
			break;
		case CPUID_MODEL_HASWELL:
		case CPUID_MODEL_HASWELL_EP:
		case CPUID_MODEL_HASWELL_ULT:
		case CPUID_MODEL_CRYSTALWELL:
			cpufamily = CPUFAMILY_INTEL_HASWELL;
			break;
		case CPUID_MODEL_BROADWELL:
		case CPUID_MODEL_BRYSTALWELL:
			cpufamily = CPUFAMILY_INTEL_BROADWELL;
			break;
		}
		break;
	}

	info_p->cpuid_cpufamily = cpufamily;
	DBG("cpuid_set_cpufamily(%p) returning 0x%x\n", info_p, cpufamily);
	return cpufamily;
}
void
cpuid_set_info(void)
{
	i386_cpu_info_t		*info_p = &cpuid_cpu_info;
	boolean_t		enable_x86_64h = TRUE;

	cpuid_set_generic_info(info_p);

	/* verify we are running on a supported CPU */
	if ((strncmp(CPUID_VID_INTEL, info_p->cpuid_vendor,
		     min(strlen(CPUID_STRING_UNKNOWN) + 1,
			 sizeof(info_p->cpuid_vendor)))) ||
	   (cpuid_set_cpufamily(info_p) == CPUFAMILY_UNKNOWN))
		panic("Unsupported CPU");

	info_p->cpuid_cpu_type = CPU_TYPE_X86;

	if (!PE_parse_boot_argn("-enable_x86_64h", &enable_x86_64h, sizeof(enable_x86_64h))) {
		boolean_t		disable_x86_64h = FALSE;

		if (PE_parse_boot_argn("-disable_x86_64h", &disable_x86_64h, sizeof(disable_x86_64h))) {
			enable_x86_64h = FALSE;
		}
	}

	if (enable_x86_64h &&
	    ((info_p->cpuid_features & CPUID_X86_64_H_FEATURE_SUBSET) == CPUID_X86_64_H_FEATURE_SUBSET) &&
	    ((info_p->cpuid_extfeatures & CPUID_X86_64_H_EXTFEATURE_SUBSET) == CPUID_X86_64_H_EXTFEATURE_SUBSET) &&
	    ((info_p->cpuid_leaf7_features & CPUID_X86_64_H_LEAF7_FEATURE_SUBSET) == CPUID_X86_64_H_LEAF7_FEATURE_SUBSET)) {
		info_p->cpuid_cpu_subtype = CPU_SUBTYPE_X86_64_H;
	} else {
		info_p->cpuid_cpu_subtype = CPU_SUBTYPE_X86_ARCH1;
	}

	/* Must be invoked after set_generic_info */
	cpuid_set_cache_info(info_p);

	/*
	 * Find the number of enabled cores and threads
	 * (which determines whether SMT/Hyperthreading is active).
	 */
	switch (info_p->cpuid_cpufamily) {
	case CPUFAMILY_INTEL_MEROM:
	case CPUFAMILY_INTEL_PENRYN:
		info_p->core_count   = info_p->cpuid_cores_per_package;
		info_p->thread_count = info_p->cpuid_logical_per_package;
		break;
	case CPUFAMILY_INTEL_WESTMERE: {
		uint64_t msr = rdmsr64(MSR_CORE_THREAD_COUNT);
		info_p->core_count   = bitfield32((uint32_t)msr, 19, 16);
		info_p->thread_count = bitfield32((uint32_t)msr, 15,  0);
		break;
		}
	default: {
		uint64_t msr = rdmsr64(MSR_CORE_THREAD_COUNT);
		info_p->core_count   = bitfield32((uint32_t)msr, 31, 16);
		info_p->thread_count = bitfield32((uint32_t)msr, 15,  0);
		break;
		}
	}
	if (info_p->core_count == 0) {
		info_p->core_count   = info_p->cpuid_cores_per_package;
		info_p->thread_count = info_p->cpuid_logical_per_package;
	}
	DBG("cpuid_set_info():\n");
	DBG("  core_count   : %d\n", info_p->core_count);
	DBG("  thread_count : %d\n", info_p->thread_count);
	DBG("       cpu_type: 0x%08x\n", info_p->cpuid_cpu_type);
	DBG("    cpu_subtype: 0x%08x\n", info_p->cpuid_cpu_subtype);

	info_p->cpuid_model_string = ""; /* deprecated */
}

 

..and other functions too..

 

KernelSSE3 add some missing sse3 instructions. If your CPU is recent, or is able to run Lion and newer OSes, don't enable it.

 

info: KernelPatcher.dylib should/will be update for Yoesemite/El Capitan

Can you make the code and binaries available in a non-OS X specific format for those of running Linux?

ErmaC has removed the i386 folder as "downlodable".. (you mean this?)

Maybe because the reason is that Enoch is in "Beta" state for now... (ErmaC will read this...and aswer ....)

Link to comment
Share on other sites

@Mickey1979

"info: KernelPatcher.dylib should/will be update for Yoesemite/El Capitan"

Will it have backward compatibility to work in SL-Yose?

 

Update 1: You mean if i dont install KernelPatcher.dylib in /Extra/modules, the bootloader has its own patcher to patch it on-the -fly?

Update 2: its already working in SL-Yose? Link?

Edited by ellaosx
Link to comment
Share on other sites

@Mickey1979

Update 1: You mean if i dont install KernelPatcher.dylib in /Extra/modules, the bootloader has its own patcher to patch it on-the -fly?

Update 2: its already working in SL-Yose? Link?

Update 1 Answer:  Yes (was not clear??), you need /Extra/kernel.plist (options available installing with the package under "Patches")

Update 2 Answer:  Yes :P .. and on El Capitan too  ---> link

Link to comment
Share on other sites

ErmaC has removed the i386 folder as "downlodable".. (you mean this?)

Maybe because the reason is that Enoch is in "Beta" state for now... (ErmaC will read this...and aswer ....)

No, I'm talking about releasing files like boot0 or ShellX64.efi in a ZIP file or something, not a Mac OS X-specific file format like Installer packages.

Link to comment
Share on other sites

No, I'm talking about releasing files like boot0 or ShellX64.efi in a ZIP file or something, not a Mac OS X-specific file format like Installer packages.

The i386 folder I'm talking about contain all bootloader binaries to manually install the bootloader, so yes, is what you need  ;)

Link to comment
Share on other sites

No, I'm talking about releasing files like boot0 or ShellX64.efi in a ZIP file or something, not a Mac OS X-specific file format like Installer packages.

Ehm. Pardon me but this is Chameleon. Not the Clover (like) boot loaders i.e. there's no need for .efi files.
  • Like 2
Link to comment
Share on other sites

×
×
  • Create New...