Jump to content

Chameleon 2.4svn Official PKG Installer


ErmaC
4,261 posts in this topic

Recommended Posts

Are the modifications that make Chameleon boot OS X ElCapitan a trade secret?  They don't appear to be checked into the source tree either on trunk or Enoch branch.   They're only in Enoch binary.

 

Edit: PM is on

Edited by Zenith432
Link to comment
Share on other sites

Are the modifications that make Chameleon boot OS X ElCapitan a trade secret?  They don't appear to be checked into the source tree either on trunk or Enoch branch.   They're only in Enoch binary.

 

Sir turn on your messaging system, please...

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

I am having trouble with FileNVRAM in 10.10.5. This was previously working in 10.9.5. I see some mention of it earlier in the thread, but no real information.

 

 

From my ASUS X99 Deluxe build I am pulling from the latest 1.1.4: https://public.xzenue.com/downloads/?dir=FileNVRAM/trunk

Anything above build 77 causes the boot loader to halt upon decompressing the kernel (this is with Chameleon 2700 & Enoch 2795).

 

With build 77, I can set my values in terminal and generate an nvram.plist (not called nvram.uuid#.plist). This is in Extra/modules, with FileNVRAM.kext in S/L/E. Is there a newer version of FileNVRAM.kext I need?

 

This is what the current FileNVRAM info.plist shows

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>BuildMachineOSBuild</key>
	<string>13F34</string>
	<key>CFBundleDevelopmentRegion</key>
	<string>English</string>
	<key>CFBundleExecutable</key>
	<string>FileNVRAM</string>
	<key>CFBundleIdentifier</key>
	<string>com.xZenue.kext.FileNVRAM</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>FileNVRAM</string>
	<key>CFBundlePackageType</key>
	<string>KEXT</string>
	<key>CFBundleShortVersionString</key>
	<string>6.9.3</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>98</string>
	<key>DTCompiler</key>
	<string>com.apple.compilers.llvm.clang.1_0</string>
	<key>DTPlatformBuild</key>
	<string>6A2008a</string>
	<key>DTPlatformVersion</key>
	<string>GM</string>
	<key>DTSDKBuild</key>
	<string>14A382</string>
	<key>DTSDKName</key>
	<string>macosx10.10</string>
	<key>DTXcode</key>
	<string>0611</string>
	<key>DTXcodeBuild</key>
	<string>6A2008a</string>
	<key>IOKitPersonalities</key>
	<dict>
		<key>FileNVRAM</key>
		<dict>
			<key>CFBundleIdentifier</key>
			<string>com.xZenue.kext.FileNVRAM</string>
			<key>IOClass</key>
			<string>AppleNVRAM</string>
			<key>IOMatchCategory</key>
			<string>AppleEFINVRAM</string>
			<key>IOProbeScore</key>
			<integer>1000</integer>
			<key>IOProviderClass</key>
			<string>AppleEFIRuntime</string>
			<key>IOResourceMatch</key>
			<string>efi-runtime</string>
		</dict>
	</dict>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2014 xZenue LLC. All rights reserved.</string>
	<key>OSBundleLibraries</key>
	<dict>
		<key>com.apple.iokit.IOStorageFamily</key>
		<string>1.0b1</string>
		<key>com.apple.kpi.bsd</key>
		<string>8.0b1</string>
		<key>com.apple.kpi.iokit</key>
		<string>7.0</string>
		<key>com.apple.kpi.libkern</key>
		<string>8.0d0</string>
		<key>com.apple.kpi.mach</key>
		<string>8.0d0</string>
		<key>com.apple.kpi.unsupported</key>
		<string>8.0b1</string>
	</dict>
	<key>OSBundleRequired</key>
	<string>Root</string>
</dict>
</plist>

sudo nvram -x -p shows working and stable values, but iMessageDebug vacillates between returning BoardSerialNumber: (null) or adding having the proper MLB, but with an = at the end of it. The ROM almost always is correct.

 

At no point can I sign into iMessage.

 

 

If you have iMessage working in 10.10.5 with Chameleon, please let me know exactly what you did to get correct and persistent MLB/ROM values.

Link to comment
Share on other sites

Ermac thank you, for use in (2804 Version)
/chameleon/branches/ErmaC/Enoch/i386/libsaio/ntfs.c
line 158 and 159
// Size_t mftOffset;
to or
long long mftOffset;.
Finally we will be able to avoid the error
"Ntfs_fixup: magic does not match! = 454c4946."
with logical ntfs partition.
the variable "mftOffset" is of type (unsigned long) with a maximum value of 4,294,967,295 (value stored on 4 bytes). For that I find the offset of the MFT of a logical partition that is byte 9373920256 must be used (long long or unsigned long long) (value stored in 8 bytes).
In fact the change can be reduced to modify the prototype of the variable "mftOffset" to type (long long), which should cover all the offset possibility of MFT on an NTFS logical or extended partition.

Link to comment
Share on other sites

This is for the record.  I doubt any1 is listening...

 

I believe the problem with commit 2602 was that some bioses don't support int 0x15/func 0x2401 for enabling A20, and were returning an error (CF set).  The function didn't check for this error.

I've reinstated the bugfix from commit 2602 in commit 2807 - but a little different.  The code for enableA20 via PS/2 controller that is known to work is used.  The enabling of A20 must be done before malloc_init() - because this function references memory >= 1MB.

The code in working enableA20() calls biosfn delay(), which is used in this instance before BSS section is initialized.  I believe this is ok, as whatever random data in bb struct is unused registers and does not interfere.

 

Additionally, fixed some bugs with va_list, and bug in random generator in fake_efi introducted in commit 2697.

 

Yep I know... But Bronya try to fix the problem w/o "lost" the 2602 commit...
That's why I'm asking...
I'm unable to test it on my hardware, because seems the problem of alloc memory is on not recently platform...

ErmaC

  • Like 2
Link to comment
Share on other sites

This is for the record.  I doubt any1 is listening...

 

I believe the problem with commit 2602 was that some bioses don't support int 0x15/func 0x2401 for enabling A20, and were returning an error (CF set).  The function didn't check for this error.

I've reinstated the bugfix from commit 2602 in commit 2807 - but a little different.  The code for enableA20 via PS/2 controller that is known to work is used.  The enabling of A20 must be done before malloc_init() - because this function references memory >= 1MB.

The code in working enableA20() calls biosfn delay(), which is used in this instance before BSS section is initialized.  I believe this is ok, as whatever random data in bb struct is unused registers and does not interfere.

 

Additionally, fixed some bugs with va_list, and bug in random generator in fake_efi introducted in commit 2697.

 

Thx Zenith to look into those issue, and thx for the detailed info about the problem.

 

I sync Enoch branch with your latest commit...

More commit will be done today or tomorrow, and for the "KernelPatcher" code (I need to look deeply for "copyright") but looks like there are no problem to publish it...

Other story is for FileNVRAM... I/we can't.

 

ErmaC

  • Like 2
Link to comment
Share on other sites

Great.

 

If you're making commit may I suggest breaking up initialize_runtime() into 2 parts and in boot() do

void boot(int biosdev)
{
    // Enable A20 gate before accessing memory above 1Mb.
    // Note: malloc_init(), called via initialize_runtime() writes
    //   memory >= 1Mb, so A20 must be enabled before calling it. - zenith432
    zeroBSS();
    enableA20();
    malloc_init(0, 0, 0, malloc_error);
    common_boot(biosdev);
}
As I said above, I believe calls to delay() inside enableA20() work today even without BSS being initialized, but it's not 'good form' to rely on this. If you think it's ok as is then leave it.
  • Like 2
Link to comment
Share on other sites

As I said above, I believe calls to delay() inside enableA20() work today even without BSS being initialized, but it's not 'good form' to rely on this. If you think it's ok as is then leave it.

 

Ok I will commit too.

 

ErmaC

  • Like 1
Link to comment
Share on other sites

Hello.

 

I've got a problem with Enoch bootloader (tried various versions). At the moment the biggest issue is that Enoch properly detects my sound card, but when i get to OSX desktop it shows that no sound codec is enabled. Changing HDEFLayoutID also does no effect.

 

The second issue is that at boot time manually entered kernel flags don't matter (only the ones in boot.plist). Example: i enter "kernel_rc3 npci=0x2000 nvda_drv=1 -f -v" but bootloader ignores these flags (no verbose mode and PC reboots). 

 

Here's my bdmesg info:

Enoch (2796)
Logging started: 2016/05/12, 20:29:00
[ CPU INFO ]
	Looking to disable C1E if is already enabled by the BIOS:

	Attempting to scan GPT boot volumes [biosdev=80h]:
Attempting to read GPT
Read GPT
Reading GPT partition 1, type EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Reading GPT partition 2, type 48465300-0000-11AA-AA11-00306543ECAC
Reading GPT partition 3, type 426F6F74-0000-11AA-AA11-00306543ECAC
	Attempting to scan GPT boot volumes [biosdev=81h]:
Attempting to read GPT
Read GPT
Reading GPT partition 1, type 83BD6B9D-7F41-11DC-BE0B-001560B84F0F
Reading GPT partition 2, type 0FC63DAF-8483-4772-8E79-3D69D8477DE4
Reading GPT partition 4, type 0FC63DAF-8483-4772-8E79-3D69D8477DE4
Reading GPT partition 6, type 0FC63DAF-8483-4772-8E79-3D69D8477DE4
	Attempting to scan FDISK boot volumes [biosdev=81h]:
	Attempting to scan APM boot volumes [biosdev=81h]:
Scanning device 80...
Added: kext-dev-mode=1
Boot UUID of 'OSX-HDD'  (GPT HFS+): EFAEFBC8-EA6C-3B80-A7A2-CB39749713AA
No Kernel.plist replacement found.
Using a non default kernel (kernel_rc3) without specifying 'Kernel Cache' path, KernelCache will not be used
Loading kernel from: 'OSX-HDD' (GPT HFS+)
Booting on OS X 10.10.5 (14F1713)
	ACPI Table not found: DSDT.aml
No DSDT found, using 0 as uid value.
Using PCI-Root-UID value: 0
[ AUDIO DEVICE INFO ]
	Class code: [0403]
	Model name: Unknown HD Audio device, vendor 10de, model 0fbc [10de:0fbc] (rev a1)
	Subsystem: [1458:3681]
	PciRoot(0x0)/Pci(0x2,0x0)/Pci(0x0,0x1)
	Found unknown nVidia  Codec (10de0060), rev(0001)

[ ETHERNET DEVICE INFO ]
	Class code: [0200]
	EthernetBuiltIn = Yes
	Location number: 1
	Setting up lan keys
	Realteck RTL8111/8168 PCI-E Gigabit Ethernet [10ec:8168]
	PciRoot(0x0)/Pci(0x4,0x0)/Pci(0x0,0x0)

[ AUDIO DEVICE INFO ]
	Class code: [0403]
	Model name: Unknown HD Audio device, vendor 1022, model 780d [1022:780d] (rev 01)
	Subsystem: [1462:d721]
	PciRoot(0x0)/Pci(0x14,0x2)
	Found Realtek ALC887 (10ec0887), rev(0003)

System UUID: incorrect or not present. Fixing [00112233-4455-6677-8899-AABBCCDDEEFF]
SMBIOS orig was = f04d0
SMBIOS new is = cef000

SMBIOS rev.: 2.4, DMI rev.: 2.4

Handle: 0x0000, DMI type 0, 24 bytes
BIOS Information
	Vendor: Apple Inc.
	Version: MP51.88Z.007F.B03.1010071432
	Release Date: 08/03/2010
	BIOS Revision: 0.1

Handle: 0x0001, DMI type 1, 27 bytes
System Information
	Manufacturer: Apple Inc.
	Product Name: MacPro5,1
	Version: 1.0
	Serial Number: ** PRIVATE **
	UUID: ** PRIVATE **
	Wake-up Type: Power Switch
	SKU Number: Default SKU#
	Family: MacPro

Handle: 0x0002, DMI type 2, 16 bytes
Base Board Information
	Manufacturer: Apple Inc.
	Product Name: Mac-F221BEC8
	Version: 3.0
	Serial Number: ** PRIVATE **
	Asset Tag: Default Asset Tag#
	Location In Chassis: To be filled by O.E.M.
	Type: Motherboard

Handle: 0x0003, DMI type 3, 21 bytes
Chassis Information
	Manufacturer: Apple Inc.
	Type: Unknown
	Version: 3.0
	Serial Number: ** PRIVATE **
	Asset Tag: Default Asset Tag#

Handle: 0x0021, DMI type 11, 5 bytes
OEM Strings
	String 1: To Be Filled By O.E.M.

Handle: 0x0034, DMI type 17, 27 bytes
Memory Device
	Error Information Handle: No Error
	Size: 4096 MB
	Form Factor: DIMM
	Locator: DIMM 1
	Bank Locator: CHANNEL A
	Memory Type: DDR3
	Speed: 1600 MHz
	Manufacturer: A1_Manufacturer1
	Serial Number: ** PRIVATE **
	Asset Tag: A1_AssetTagNum1
	Part Number: BLS4G3D1609DS1S00.

Handle: 0x0035, DMI type 17, 27 bytes
Memory Device
	Error Information Handle: No Error
	Size: 4096 MB
	Form Factor: DIMM
	Locator: DIMM 1
	Bank Locator: CHANNEL B
	Memory Type: DDR3
	Speed: 1600 MHz
	Manufacturer: A1_Manufacturer3
	Serial Number: ** PRIVATE **
	Asset Tag: A1_AssetTagNum3
	Part Number: BLS4G3D1609DS1S00.

Handle: 0x003A, DMI type 4, 38 bytes
Processor Information
	Socket Designation: P0
	Type: Central Processor
	Family: 0x48
	Manufacturer: AuthenticAMD
	ID: 0x610F01
	Version: AMD A8-5600K APU with Radeon(tm) HD Graphics   
	External Clock: 184 MHz
	Max Speed: 3593 MHz
	Current Speed: 3600 MHz
	Upgrade: Socket FM2
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified
	Core Count: 4
	Core Enabled: 4
	Thread Count: 4

Handle: 0x003B, DMI type 131, 6 bytes
Apple specific Processor Type
	Cpu-type = 0x0402

Handle: 0x003C, DMI type 132, 6 bytes
Apple specific Processor Interconnect Speed
	QPI = 0 MT/s

Handle 0x003d, DMI type 127, 4  bytes
End of Table

Adding device-properties string to DT
Not an Intel platform: Restart Fix disabled !!!
MADT table successfully patched
* Processing XSDT: 
* Creating new RSDT from XSDT table
Not an Intel platform: Restart Fix disabled !!!
ACPI Revision 2 successfully patched
Attempting to loading drivers from "Extra" repository:
Attempting to loading drivers from standard repositories:
	- Third party extensions search path: /Library/Extensions
	- Apple extensions search path: /System/Library/Extensions
Starting Darwin/x86_64 [Darwin Kernel Version 14.5.0: среда,  4 ноября 2015 г. 21:26:27 (MSK); ###Bronya###:xnu-2782.40.9/BUILD/obj/RELEASE_X86_64]
Boot Args: kernel_rc3 npci=0x2000 fsb=200 Mhz nvda_drv=1 kext-dev-mode=1 rootless=0 -f -v  kext-dev-mode=1

And my boot.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>EthernetBuiltIn</key>
	<string>Yes</string>
	<key>Graphics Mode</key>
	<string>1920x1080x32</string>
	<key>HDAEnabler</key>
	<string>Yes</string>
	<key>HDEFLayoutID</key>
	<string>03000000</string>
	<key>Kernel Flags</key>
	<string>kernel_rc3 npci=0x2000 fsb=200 Mhz nvda_drv=1 kext-dev-mode=1 rootless=0 -f -v</string>
</dict>
</plist>

Link to comment
Share on other sites

I can't see no "kernel_rc3" flag in the source nor one called Mhz. I'm sure that does not exist in the XNU source too..

Try to replace directly the kernel, naming it as the original.

  • Like 1
Link to comment
Share on other sites

No miracles. some times you need a patched dsdt under HPET (check it with kextstat), but also probably you need an iRQ reallocation patch. Off course you also need a well patched AppleHDA.

Link to comment
Share on other sites

Hi ErmaC,

 

Enoch 2812 (download section) didn't work here as pics, same as svn trunk 2807.

All work fine with Enoch 2795 (download section).

FYI.

 

boot with -v -f

attachicon.gifIMG_20160516_085323.jpg

Why don't you manually point Enoch to the right kernel?

For example, in my case it was this BOOT: kernel_rc3 -f -v (replace kernel_rc3 with your kernel location)

 

And then you can copy your custom kernel to /kernel 

  • Like 1
Link to comment
Share on other sites

This is probably due to the fix of checkOSVersion() in r2806. Before, it was sometimes mis-identifying Yosemite as ElCapitan or vice versa. Now, it identifies correct OS version, which may expose bug in selection of kernel somewhere else. I'll check it out when I have time.

Enoch 2812 (download section) didn't work here as pics, same as svn trunk 2807.

All work fine with Enoch 2795 (download section).

FYI.

  • Like 1
Link to comment
Share on other sites

Why don't you manually point Enoch to the right kernel?

For example, in my case it was this BOOT: kernel_rc3 -f -v (replace kernel_rc3 with your kernel location)

 

And then you can copy your custom kernel to /kernel 

 

Thanks for your advice, I know this, just report the problem.

 

This is probably due to the fix of checkOSVersion() in r2806. Before, it was sometimes mis-identifying Yosemite as ElCapitan or vice versa. Now, it identifies correct OS version, which may expose bug in selection of kernel somewhere else. I'll check it out when I have time.

 

Thanks for your quick reply.

I will test the new Revision and let you know the results, if updated.

Have a nice day.

  • Like 1
Link to comment
Share on other sites

Booting with r2812 I'm still having issues with CsrActiveConfig. I have it set in my boot.plist as follows,

	<key>CsrActiveConfig</key>
	<string>103</string>

csrutil status results in, System Integrity Protection status: disabled. But for example KCPM Utility shows the following

Warning: 
System Integrity Protection >> B1: Allow Unrestricted Filesystem is currently DISABLED.

You cannot install kernel extensions into /System/Library/Extensions/.
Link to comment
Share on other sites

×
×
  • Create New...