Chameleon Sources

To make things a little easier on myself in preparation for the release of myHack 3.0+ I’ve pulled the latest chameleon from svn, applied some fixes specific to git, myHack and my ML patch, and pushed it to my git account. You will now be able to view/access the Chameleon source I use for myHack there. The link will be placed in the appropriate places on this site as well as in the footer for future reference.

https://github.com/Conti/Chameleon

Update to Chameleon Bug

Note: As of myHack 2.1 this bug has been resolved and is no longer an issue – although if you do not have your VESA graphics mode defined on problem systems the apple logo will not be centered, but rather, it will be in the top left of the screen and you will not be able to see the spinner wheel – the system will boot though.

After a few more hours of meklort toying around and me helping to test the builds this problem has been solved, well for the most part…

Chameleon build 1407+ boots as would be expected with -v boot flag, without flags
however there is a minor problem still. The apple logo will appear in top left corner of screen, the rest of the screen is blank (black) and no spinner is visible. If patient though it will boot still, rather than hanging. Having a VESA resolution defined in the Boot plist will avoid this undesirable behavior on effected systems, but at least it will still boot even without, so that’s good enough for free software as they say.

I will be releasing an update to the myHack app with a newer build of Chameleon as well as a few other small changes in the days to come.

Original Post:

So I woke up refreshed this morning and meklort was kind enough to tell me what to replace in boot.c to get builds 1214-1220 to boot. I narrowed down the cause to a single commit.

You can read more here: http://forge.voodooprojects.org/p/chameleon/issues/146/

So by modifying drivers.c and reverting this change I got build 1394 to work as expected but there is probably a better solution to this problem, I’m going to wait until I hear back from the Chameleon team before deciding if I release the next revision of myHack with my alteration of Chameleon 2.0 or with a solution that they come up with.

For now just define the VESA graphics mode in the Boot.plist as I described in my last post.

Chameleon Bug and myHack 2.0 RC4+

Note: As of myHack 2.1 this bug has been resolved and is no longer an issue – although if you do not have your VESA graphics mode defined on problem systems the apple logo will not be centered, but rather, it will be in the top left of the screen and you will not be able to see the spinner wheel – the system will boot though.

So I managed to reproduce and track down this bug that a few people reported to me in build 1332 of Chameleon that I used in myHack RC4+. The bug is as follows:

After boot menu, if booting without flags – instant reboot

After boot menu, if booting with -v boot flag it brings you to a black screen, with a white bar on top that flickers, but that is as far as it goes.

After boot menu, if booting with -f or -x boot flags it will boot.

While the exact cause of this isn’t yet clear to me I have narrowed it down considerably by downloading, compiling and testing many many revisions of the chameleon trunk starting with the one I knew worked that I used in myHack RC3-  (2.0 RC5 revision 1203) my results were as follows:

  • 1221 = broken (bug I mentioned above is reproduced, all future revisions including 2.0 final – r1394 – share this bug)
  • 1220 = can’t boot (other bug)
  • 1219 = can’t boot (other bug)
  • 1217 = can’t boot (other bug)
  • 1216 = build failed
  • 1214 = build failed
  • 1203 = works

 

So going through svn, so much has been changed between then and now it’s hard for me personally to figure out how to fix it, nothing obvious jumps out of me, but I only dabble a bit when it comes to Chameleon’s rather insane code structure.

I spent way more time on this than I should have (hours and hours), but I really wanted to drop the RC from myHack with a nice clean 2.0 Chameleon without the RC on it either, it doesn’t appear I will be able to do that until this bug is fixed – or at least I would prefer not to.

I did find a simple work around though – if you add a VESA graphics mode to your boot plist it will boot normally, in revision 1203 this isn’t needed, but everything after that (that works) apparently needs it on _some_ graphics cards – the card I was testing with is a 9800GTX+. It shouldn’t need it but I recalled from a similar issue I ran into a couple years ago that it might be the case, and indeed it was.

So if you are having this issue open up org.chameleon.Boot.plist and add:

    <key>Graphics Mode</key>
<string>1024x768x32</string>

for 4:3 displays – or for 16:9 something like:

    <key>Graphics Mode</key>
<string>1280x720x32</string>

etc…

NOTE: The VESA mode you define must be supported by your graphics card bios and your monitor, using ?video at the chameleon boot prompt will give you a list of the modes supported by your graphics card.

I’ve passed these findings along to cosmo1t and meklort and I’m sure they will look into the matter further, but the information I posted above will help in the meantime if you happen to run into this problem.

myHack Installer 1.1 Released

This version is now deprecated, consult the installer guide for a link to the latest version.

This is an important update of the myHack installer. It adds support for the OS X 10.6.3 Retail DVD & the OS X 10.6.4 Software Update.

Read full documentation here.

[Download not found]

Changelog:

v1.1:

  • – Added support for USB Installer creation from OS X 10.6.3 Retail DVD.*
  • – Updated SleepEnabler.kext to new build to add OS X 10.6.4 compatibility.**
  • – Replaced LegacyAppleRTC.kext with ElliottForceLegacyRTC.kext.***
  • – Refined install scripts and significantly reduced post-install script execution time.
  • – Reverted some of the changes to the v1.0.1 boot theme back to the v1.0 apperance.

* OSInstall MOD for both 10.6.0 and 10.6.3 Retail DVD’s is now available within myHack installer, the version of your OS X Installation Medium will be determined automatically and the appropriate files moved into place accordingly.

** The SleepEnabler.kext from v1.0 RC5 – v1.0.1 will cause a kernel panic after an update to OS X 10.6.4. This new build of SleepEnabler.kext will function properly in OS X 10.6.0-10.6.4. (Thanks to nawcom for updating it).

*** LegacyAppleRTC.kext does not function under a 64bit kernel, the ElliottForceLegacyRTC.kext functions under both 32bit and 64bit kernels.

v1.0.1:

  • – Updated Chameleon-2.0-RC4_PCEFI-10.5_AsereBLN_myHack-1.0 r111 to Chameleon-2.0-RC4_PCEFI-10.5_AsereBLN_myHack-1.0.1 r116
  • – Updated IONetworkingFamily.kext to new recompiled version*
  • – Removed EthernetBuiltIn flag from default com.apple.Boot.plist
  • – Improved boot theme**

* This new IONetworkingFamily.kext (compiled by aschar) removes the need for the EthernetBultIn flag and resolves a Time Machine bug encountered by RTL8111/8168B users.

** Users had complained that they felt the myHack logo during boot was too much ‘branding’ and like an advertisement for a product, so I have reverted the boot screen to the default gray apple logo to give it a more ‘vanilla’ feel and altered the main boot screen to be a little more organized, also reducing the size of the myHack logo and placing it in the bottom right hand corner – it is my hope that myHack users enjoy this boot theme as much as I do.

v1.0 FINAL:

  • -Updated Chameleon 2.0 RC4 to Chameleon-2.0-RC4_PCEFI-10.5_AsereBLN_myHack-1.0 r111
  • -Updated pfix v2.6 to pfix v3.0
  • -pfix now installed to /usr/sbin/ instead of /
  • -Refined and improved pre-installation, bootloader installation, and post-installation scripts.
  • -Added function to backup any existing /Extra directory prior to installation.
  • -fdisk will now be used internally instead of overwriting the stock OS X one in /usr/sbin/
  • -Replaced IOATAFamily.kext with a different one known to have fewer problems.
  • -Added function to install tar, gzip, bzip2, rsync and nano to /usr/bin/ if target is installation device.
  • -Modified default com.apple.Boot.plist for Graphics Enabler to include a default VESA resolution.
  • -New and improved boot theme.

v1.0 RC5.2:

  • -Updated pfix v2.4 to pfix v2.6
  • -Added function to to hide /boot file.
  • -Added function to GraphicsEnabler option which will now determine the PciRoot value automatically.*
  • Bugfix: Corrected minor bug in post-install script. (Force system cache rebuild with kextcache)
  • Bugfix: Corrected minor bug in pre-install script. (Added IONetworkingFamily.kext to cleanup script)

* Automatic PciRoot discovery function will only be run when installer is targeting the root partition of a running Snow Leopard installation. If PciRoot can not be determined a default PciRoot value of 1 will be used instead.

v1.0 RC5.1:

  • -Updated pfix v2.3 to pfix v2.4
  • -Removed VoodooHDA.kext (Caused kernel panics for too many users).
  • -Removed PlatformUUID.kext (no longer required).
  • -Improved post-installation scripts to significantly reduce execution time.

v1.0 RC5:

  • -Updated PC EFI 10.5 to Chameleon 2.0 RC4
  • -Updated pfix v2.1.1 to pfix v2.3
  • -Created new “GraphicsDisabler” feature.*
  • -Added voodooHDA.kext to provide limited audio support for a variety of audio hardware.
  • -Added custom IONetworkingFamily.kext to provide support for additional networking hardware.
  • Bugfix: New IOATAFamily.kext which now works correctly on a wider variety of hardware.**
  • Bugfix: New SleepEnabler.kext which is compatible with OS X 10.6.0-10.6.3.***
  • -Replaced OpenHaltRestart.kext with EvOreboot.kext.
  • -Revised bundled kernel extensions. ****
  • -Revised “Read Me” section of installer in hopes that people will no longer make a very critical mistake.
  • -Improved boot theme to give a fresh and more visually appealing appearance.
  • -Made a significant number of alterations to internal installer coding and installation scripts.

* This function will provide true VESA functionality to virtually ALL graphics hardware, including the hardware which failed to function in VESA mode with the old Framebufferdisabler.kext.

** This new IOATAFamily.kext includes new builds of AppleIntelPIIXATA.kext, IOATABlockStorage.kext & IOATAPIProtocolTransport.kext embedded as plug-ins inside of it, they are no longer required separately. It has been compiled from 10.6.2 source and also prevents a kernel panic that was encountered previously on some hardware. IMPORTANT NOTE: We have tested this with 10.6.3 beta and determined that it DOES NOT WORK and will in fact likely cause a kernel panic. If you require this extension due to a lack of SATA+AHCI do not upgrade to 10.6.3 until a solution is discovered.

*** This SleepEnabler.kext should be compatible with future versions of OS X as well. The previous Sleepenabler.kext included with earlier versions of myHack Installer causes a kernel panic if not removed prior to booting after a 10.6.2 update.

**** Removed the following kernel extensions: AHCIPortInjector.kext, AppleUpstreamUserClientDisabler.kext, AttansicL1eEthernet.kext, FramebufferDisabler.kext, IOAHCIBlockStorageInjector.kext, JMicronATA.kext, LegacyJMB36xSATA.kext, & SKGE.kext.

Replaced the following kernel extensions with newer versions: AppleIntelPIIXATA.kext, IOATAFamily.kext, OpenHaltRestart.kext, Sleepenabler.kext.

Renamed: LegacyAppleRTC_32bit_Only.kext to LegacyAppleRTC.kext (32bit limitation is well documented I don’t think it needs to be in the name anymore).

v1.0 RC4.1:

  • -Updated PC EFI 10.4.1 to PC EFI 10.5
  • -Updated pfix v1.2 to pfix v2.1.1
  • -Made minor changes to “Read Me” section of installer for additional clarity.

v1.0 RC4:

  • -Added “Chocolate Kernel”* which allows OS X 10.6 to be run on legacy Intel, AMD** & i5 processors.
  • -myHack Installer package now copies itself to the / of an installation device automatically.
  • -Added Snow Leopard port of lspci.
  • -Added native 64bit Snow Leopard build of IOATAFamily.kext for functional PATA (IDE) support.
  • -Updated pfix v1.1 to pfix v1.2.
  • -Updated PC EFI 10.3 to PC EFI 10.4.1.
  • -Updated default com.apple.Boot.plist to use EthernetBuiltIn=y.
  • -Refined and improved install scripts & the descriptions of each individual option.
  • -Important information regarding known issues embedded into installer “Read Me” section.

* For full release notes regarding the “Chocolate Kernel” please see the Downloads page.

** This kernel will run most AMD systems but it does not include on the fly CPUID patching so if you intend to use this on an AMD system you will need to obtain a third party tool to patch your binaries.

v1.0 RC3:

  • Bugfix: PC EFI 10.3 was not properly installing over the Chameleon boot file in previous versions.
  • Bugfix: OSInstall MBR MOD would sometimes not properly install when using RC2.
  • – OSInstall MBR MOD now checks for OSInstall.mpkg on target drive and is installed automatically.
  • – Graphics Enabler option added.
  • – Consolidated and simplified core options.

v1.0 RC2:

  • Bugfix: Added permissions enabling script to post-install. Details posted on the v1.0 RC2 release page.
  • – Integrated OSInstall.mpkg & OSInstall framework into a single option.
  • – Changed openhaltrestart.kext option to selected by default.
  • – Added pfix v1.1 to installer.
  • – Improved kext descriptions.

v1.0 RC1:

Includes:

  • Chameleon 2.0 RC3.
  • PC EFI 10.3.
  • – Sample com.apple.Boot.plist for basic operation.
  • – Snow Leopard inspired myHack Chameleon boot theme.
  • – All of the kexts listed on the Downloads page.
  • – A number of bugfixes and snow leopard specific enhancements to the Chameleon installation scripts.
  • – Detailed descriptions of each custom option.

myHack Installer 1.0.1 Released

This version is now deprecated, consult the installer guide for a link to the latest version.

This is a minor revision and important bugfix of the myHack installer.

Changelog:

v1.0.1:

  • – Updated Chameleon-2.0-RC4_PCEFI-10.5_AsereBLN_myHack-1.0 r111 to Chameleon-2.0-RC4_PCEFI-10.5_AsereBLN_myHack-1.0.1 r116
  • – Updated IONetworkingFamily.kext to new recompiled version*
  • – Removed EthernetBuiltIn flag from default com.apple.Boot.plist
  • – Improved boot theme**

* This new IONetworkingFamily.kext (compiled by aschar) removes the need for the EthernetBultIn flag and resolves a Time Machine bug encountered by RTL8111/8168B users.

** Users had complained that they felt the myHack logo during boot was too much ‘branding’ and like an advertisement for a product, so I have reverted the boot screen to the default gray apple logo to give it a more ‘vanilla’ feel and altered the main boot screen to be a little more organized, also reducing the size of the myHack logo and placing it in the bottom right hand corner – it is my hope that myHack users enjoy this boot theme as much as I do.

v1.0 FINAL:

  • -Updated Chameleon 2.0 RC4 to Chameleon-2.0-RC4_PCEFI-10.5_AsereBLN_myHack-1.0 r111
  • -Updated pfix v2.6 to pfix v3.0
  • -pfix now installed to /usr/sbin/ instead of /
  • -Refined and improved pre-installation, bootloader installation, and post-installation scripts.
  • -Added function to backup any existing /Extra directory prior to installation.
  • -fdisk will now be used internally instead of overwriting the stock OS X one in /usr/sbin/
  • -Replaced IOATAFamily.kext with a different one known to have fewer problems.
  • -Added function to install tar, gzip, bzip2, rsync and nano to /usr/bin/ if target is installation device.
  • -Modified default com.apple.Boot.plist for Graphics Enabler to include a default VESA resolution.
  • -New and improved boot theme.

v1.0 RC5.2:

  • -Updated pfix v2.4 to pfix v2.6
  • -Added function to to hide /boot file.
  • -Added function to GraphicsEnabler option which will now determine the PciRoot value automatically.*
  • Bugfix: Corrected minor bug in post-install script. (Force system cache rebuild with kextcache)
  • Bugfix: Corrected minor bug in pre-install script. (Added IONetworkingFamily.kext to cleanup script)

* Automatic PciRoot discovery function will only be run when installer is targeting the root partition of a running Snow Leopard installation. If PciRoot can not be determined a default PciRoot value of 1 will be used instead.

v1.0 RC5.1:

  • -Updated pfix v2.3 to pfix v2.4
  • -Removed VoodooHDA.kext (Caused kernel panics for too many users).
  • -Removed PlatformUUID.kext (no longer required).
  • -Improved post-installation scripts to significantly reduce execution time.

v1.0 RC5:

  • -Updated PC EFI 10.5 to Chameleon 2.0 RC4
  • -Updated pfix v2.1.1 to pfix v2.3
  • -Created new “GraphicsDisabler” feature.*
  • -Added voodooHDA.kext to provide limited audio support for a variety of audio hardware.
  • -Added custom IONetworkingFamily.kext to provide support for additional networking hardware.
  • Bugfix: New IOATAFamily.kext which now works correctly on a wider variety of hardware.**
  • Bugfix: New SleepEnabler.kext which is compatible with OS X 10.6.0-10.6.3.***
  • -Replaced OpenHaltRestart.kext with EvOreboot.kext.
  • -Revised bundled kernel extensions. ****
  • -Revised “Read Me” section of installer in hopes that people will no longer make a very critical mistake.
  • -Improved boot theme to give a fresh and more visually appealing appearance.
  • -Made a significant number of alterations to internal installer coding and installation scripts.

* This function will provide true VESA functionality to virtually ALL graphics hardware, including the hardware which failed to function in VESA mode with the old Framebufferdisabler.kext.

** This new IOATAFamily.kext includes new builds of AppleIntelPIIXATA.kext, IOATABlockStorage.kext & IOATAPIProtocolTransport.kext embedded as plug-ins inside of it, they are no longer required separately. It has been compiled from 10.6.2 source and also prevents a kernel panic that was encountered previously on some hardware. IMPORTANT NOTE: We have tested this with 10.6.3 beta and determined that it DOES NOT WORK and will in fact likely cause a kernel panic. If you require this extension due to a lack of SATA+AHCI do not upgrade to 10.6.3 until a solution is discovered.

*** This SleepEnabler.kext should be compatible with future versions of OS X as well. The previous Sleepenabler.kext included with earlier versions of myHack Installer causes a kernel panic if not removed prior to booting after a 10.6.2 update.

**** Removed the following kernel extensions: AHCIPortInjector.kext, AppleUpstreamUserClientDisabler.kext, AttansicL1eEthernet.kext, FramebufferDisabler.kext, IOAHCIBlockStorageInjector.kext, JMicronATA.kext, LegacyJMB36xSATA.kext, & SKGE.kext.

Replaced the following kernel extensions with newer versions: AppleIntelPIIXATA.kext, IOATAFamily.kext, OpenHaltRestart.kext, Sleepenabler.kext.

Renamed: LegacyAppleRTC_32bit_Only.kext to LegacyAppleRTC.kext (32bit limitation is well documented I don’t think it needs to be in the name anymore).

v1.0 RC4.1:

  • -Updated PC EFI 10.4.1 to PC EFI 10.5
  • -Updated pfix v1.2 to pfix v2.1.1
  • -Made minor changes to “Read Me” section of installer for additional clarity.

v1.0 RC4:

  • -Added “Chocolate Kernel”* which allows OS X 10.6 to be run on legacy Intel, AMD** & i5 processors.
  • -myHack Installer package now copies itself to the / of an installation device automatically.
  • -Added Snow Leopard port of lspci.
  • -Added native 64bit Snow Leopard build of IOATAFamily.kext for functional PATA (IDE) support.
  • -Updated pfix v1.1 to pfix v1.2.
  • -Updated PC EFI 10.3 to PC EFI 10.4.1.
  • -Updated default com.apple.Boot.plist to use EthernetBuiltIn=y.
  • -Refined and improved install scripts & the descriptions of each individual option.
  • -Important information regarding known issues embedded into installer “Read Me” section.

* For full release notes regarding the “Chocolate Kernel” please see the Downloads page.

** This kernel will run most AMD systems but it does not include on the fly CPUID patching so if you intend to use this on an AMD system you will need to obtain a third party tool to patch your binaries.

v1.0 RC3:

  • Bugfix: PC EFI 10.3 was not properly installing over the Chameleon boot file in previous versions.
  • Bugfix: OSInstall MBR MOD would sometimes not properly install when using RC2.
  • – OSInstall MBR MOD now checks for OSInstall.mpkg on target drive and is installed automatically.
  • – Graphics Enabler option added.
  • – Consolidated and simplified core options.

v1.0 RC2:

  • Bugfix: Added permissions enabling script to post-install. Details posted on the v1.0 RC2 release page.
  • – Integrated OSInstall.mpkg & OSInstall framework into a single option.
  • – Changed openhaltrestart.kext option to selected by default.
  • – Added pfix v1.1 to installer.
  • – Improved kext descriptions.

v1.0 RC1:

Includes:

  • Chameleon 2.0 RC3.
  • PC EFI 10.3.
  • – Sample com.apple.Boot.plist for basic operation.
  • – Snow Leopard inspired myHack Chameleon boot theme.
  • – All of the kexts listed on the Downloads page.
  • – A number of bugfixes and snow leopard specific enhancements to the Chameleon installation scripts.
  • – Detailed descriptions of each custom option.