Article is written by Tamás KOSÁRSZKY.
How is it made happen?
Thanks to David Elliott, the necessary modifications have already been available for a long time. Since his r122 changeset against the boot-132 project contains almost everything what we need to grow over 64k. Here’s a quote from i386/libsaio/bios.s where dfe tells the story:
“With this change, plus the earlier change to respect DS (e.g. use huge pointers), the binary can grow much larger, currently up to exactly 63.5k which is the maximum that the first-stage bootsectors can handle. To get more than that more changes are needed. In that case we would have to play with Mach-O segments to ensure real-mode code and data got stuffed well within the first 63.5k. Furthermore, we’d have to adjust the boot sectors to allow them to span segments. Since this change alone only gains us about 4k more than where we’re at now (which is not anything to scoff at) it won’t be very long before we need to start using Mach-O segments to force the linker to locate certain bits of code and data within the first 63.5k and modify the loaders to be able to load more than 63.5k.”
Ok, so what else do we need?
To complete the puzzle we had to follow the path as dfe suggested above.
These are the init, bios wrapper and real mode-protection mode switching functions what they should go into the first 64k. A big thanks goes to Turbo who found a clean way to enforce these functions to have them in their proper places.
The other parts are the stage 1 loaders, they also need some changes to able to load more than 127 sectors from the hdd or the cd. We’re already done with this, it means cdboot and boot1h can deal with such large stage 2 booters.
Can i get any benefit from all of this?
Yes, since we have a lot of space now we can merge all existing features into a single boot file. We’re already in the process to take the best pieces from all ‘worlds’ and stay tuned for a new Chameleon version release pretty soon!
Share this!


Envying · 13. November 2008, 01:01 · #
Just have a question, how many HD can Chameleon recognize? I have 1 PATA, 1 PATA DVD, 2 SATA, after I enable my esata, I can see one of my SATA disappeared from the booting list… Does that mean 4 PATA or SATA devices are the limit?
Thanks in advance for any clarification.
cparm · 15. November 2008, 08:44 · #
will this next version of chameleon, have the DSDT override written by mackerintel (http://forum.insanelymac.com/index.php?showtopic=132757&st=0)
xwin · 21. November 2008, 06:31 · #
Love your work, when is the next release commin gout?
cmos · 27. November 2008, 00:03 · #
Im glad you have a great team of developers on your project cant wait to see more.Always strive to think diffrent
PC-Ente · 8. December 2008, 00:42 · #
please let us selabrate Chrismas with a new Chameleon Version :-)
zef · 10. December 2008, 20:28 · #
I really hope that we can release the new version before Christmas, we’re working on it!
avinash_4_ever · 11. December 2008, 03:34 · #
hi zef thanks for all the things yove done for mac fans (pc ofcourse). i would like to discuss one problem, i have
intel d 2.8
asus p5b mainboard
nvidia 7600gs
sata 169 gb hdd
ps/2 key and mice
ive tried many flavours of mac os x86
the iatkos v5i, and ideneb v1.5 and kalyway 10.5.4
they all install on the system (of course with some carefull planning of packages) but when i try to boot from the os x partion i get boot:0 error and when leave the dvd in the drive and reboot the dvd loads as usual after any key to boot…. i boots from hdd , strange problem
and on all flavours iam using chameleon boot loader only
i have 4 partitions of which are ntfs and one hfs+
i run xp as native os
what can be done to fix this problem so that i can boot os x directly from hdd without the dvd
awaiting your response eagerly
/……..
thank you (happy holidays if you plan to have one!!)
zef · 11. December 2008, 04:33 · #
avinash_4_ever:
you need to use primary partitions for your HFS+ filesystem to able to boot with boot0. Alternatively you can add chain0 to XP’s boot.ini, and it can parse logical partitions as well.
I’m also using XP as my primary OS and booting OS X this chain0 way.
Hope this helps you :)
avinash_4_ever · 11. December 2008, 14:01 · #
thanks zef 4 replying , if iam right i need to download the chain0 file save it in root of c: drive and add the line
c:\chain0=“macosx”
ive tried that but i get the same error .
if iam starting from scratch then before installing osx on partition should i select as primary partition using acronis disk suite format it with fat32 and then reformat it with osx journeled during X installation?
if its confusing to understand pls let me know
what i understood was :
create primary fat32 partition
boot with X and reformat it as osx journeled and then install os x as asual (will it work?
thanks again zef
take care
atka · 12. December 2008, 04:56 · #
Man waiting for 10.5.6 and the new chameleon I can’t wait for either of them. :)
Dr. Hurt · 12. December 2008, 19:45 · #
I can’t wait till the next version of Chameleon. I wonder what new features it’ll have. Perhaps a great feature would be GUI control center app for it in OS X to control time out, DSDT, Extra folder, active partition, default partition…etc
That would be so nice.
Anyway, keep up the good work everyone, and thank you for your wonderful work.
mackerintel · 13. December 2008, 16:59 · #
@DR. HURT: DSDT, SMBIOS, Extra, GUID and many other features are already done. GUI control would be a completely separate project even if it would be hosted on the same server. AFAIK nobody yet started such a project
mentholmoose · 13. December 2008, 17:44 · #
Any chance you could implement support for bluetooth keyboards in the bootloader, so people can use them with dual-boots?
mackerintel · 13. December 2008, 17:57 · #
@Mentholmoose:
If someone implements it the patch would probably be accepted but do you know how much work it needs? While PCI is already implemented it would need a complete implementation of USB, then implementation of bluetooth controller and of a bluetooth stack with encryption mechanisms. So unless someone really gets excited with this idea and does this job (e.g. you) the answer is no
Triple675 · 17. December 2008, 18:28 · #
Hey Guys!
Just wondering about the timeline. I need to transfer my install to a new HD and I was wondering if the new version will be released in the coming days or weeks? If it’s weeks then I’ll use Munky’s EFI partition method once again.
Thanks!
Dr. Hurt · 18. December 2008, 13:08 · #
@Triple675:
Zef said that they are working on it. They hope to finish it before Christmas. You should not wait for it because as always, it could be delayed because they are always trying to the best they could. Time lines will only cause stress, rush, and mistakes.
Keep up the good work everyone.
BuildSmart · 22. December 2008, 14:11 · #
Still waiting for the source release so I can finish the new MagicBoot CD (with post installers) and then put together the packages so others can make a custom one .
Xboxdude · 22. December 2008, 18:52 · #
Looking forward to this upcoming release – UUID support aswell as the SMBIOS mods should be awesome!
zef · 25. December 2008, 09:53 · #
BuildSmart:
Sure, it will be released when it gets ready. Since we have a lot more space, we “can’t stop” adding new features.
Xboxdude:
How do you mean UUID support? The SMBIOS is already built-in.
Xboxdude · 25. December 2008, 12:24 · #
Hi Zef.
Its based on this post (post #55 and #53/54 too):
http://forum.insanelymac.com/index.php?showtopic=137112&st=54#
I’m assuming we need to wait for ‘big chameleon’ to get SMBIOS patching/UUID/DSDT and /Extra support as posted.
Currently I’m using SuperHai’s SMBIOSResolver to fix the Error 35 problem (including Time Machine) and it works perfectly – the Chameleon method should be much more elegant though and means one less non-standard kext to load.
Cheers
XD
mackerintel · 25. December 2008, 19:31 · #
@xboxguide: read attentively posts #52 and #54. This method doesn’t work. But you can try the method described in the post #53 by roisoft
Dr. Hurt · 26. December 2008, 20:54 · #
Will the next version fix the GMA950 in desktops (id=2772)? The new integrated framebuffer kext unloads after 2-3 minutes with NATIT and/or EFI strings!! Old FB causes graphics artifacts. The reason I ask is that I heard “Dense” say that it will contain PCI probing to fix GMA950 on some systems.
DR. HURT · 28. December 2008, 20:21 · #
Finally, here is the code needed to fix GMA950 desktop edition. Feel free to modify it as you like. I hope you include it in your next release – if technically possible!! It depends on modifying the DSDT.aml to point to the GMA950.
Method (_WAK, 1, NotSerialized) // just after the end of this method
……………………….
……………………….
……………………….
Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, Buffer (0×10)
{
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0×18, 0×13, 0×1C, 0×44,
/* 0008 */ 0xB0, 0xC9, 0xFE, 0×69, 0×5E, 0xAF, 0×94, 0×9B
}))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0×03
}, Arg4)
Return (One)
}
If (LEqual (Arg2, One))
{
Return (One)
}
}
}
Store (Buffer (One)
{
0×00
}, Arg4)
Return (Zero)
}
……………………………
……………………………
……………………………
Device (PCI0) //look for the location using ioreg
{
Name (_HID, EisaId (“PNP0A03”))
Name (_ADR, Zero)
Name (_UID, One)
Name (_BBN, Zero)
Device (PEGP)
{
Name (_ADR, 0×00020000)
Device (GFX0)
{
Name (_ADR, Zero)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0×1A)
{
“device_type”,
Buffer (0×08)
{
“display”
},
“model”,
Buffer (0×07)
{
“GMA950”
},
“built-in”,
Buffer (one)
{
0×01
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}
………………………
……………………..
……………………..
Device (PEX1) // this fix TM, use the ioreg for proper location
{
Name (_ADR, 0×001C0001)
Method (_STA, 0, NotSerialized)
{
Return (0×0F)
}
Device (LAN)
{
Name (_ADR, Zero)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0×04)
{
“built-in”,
Buffer (0×02)
{
0×01
},
“device_type”,
Buffer (0×09)
{
“ethernet”
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
………………………….
…………………………
Device (HDEF) //change AZAL to HDEF and use the ioreg for the proper pinconfig
{
Name (_ADR, 0×001B0000)
Method (_PRW, 0, NotSerialized)
{
Return (Package (0×02)
{
0×05,
0×05
})
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0×08)
{
“codec-id”,
Buffer (0×04)
{
0×62, 0×06, 0xEC, 0×10
},
“layout-id”,
Buffer (0×04)
{
0×0C, 0×00, 0×00, 0×00
},
“device-type”,
Buffer (0×10)
{
“Realtek ALC662”
},
“PinConfigurations”,
Buffer (0×18)
{
/* 0000 */ 0×10, 0×40, 0×11, 0×01, 0×40, 0×98, 0xa1, 0×01,
/* 0008 */ 0×50, 0×30, 0×01, 0×01, 0×60, 0×40, 0×21, 0×02,
/* 0010 */ 0xa0, 0×61, 0×4b, 0×01
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
…………………
…………………
………………..
I hope I made any sense!!
http://forum.insanelymac.com/index.php?showtopic=143340
OCM · 29. December 2008, 20:16 · #
Any new progress? Just wondering, no rushes :P Keep up the great work
DR. HURT · 30. December 2008, 09:26 · #
Never mind!
I just made a new DSDT.aml with a code clean up to make it more compatible and posted it to insanelymac. Those with GMA950 can use it to get full graphics. It worked with gigabyte and asus motherboards. Thanks.
Hi, I'm a Hac · 1. January 2009, 20:25 · #
I have been using a ATI Sapphire Radeon HD 2600 Pro in my Hac for some time. I have had varying levels of success at getting the card to work. Mostly it was extremely difficult to get Quartz Extreme to work, which it turns out was due to getting the device ID placed into the kext file. Even after this I still have artifacts such as when I am using the navigation window in Photoshop. It leaves a smaller version of the image when I zoom out, and does not go away unless you “scrub” the image area by moving the cursor around in the navigation area.
I know that all of you are working very hard to create the next version, and I realize I am likely bringing my issue to the table a little late in the game. I feel that it is something that others would like to see fixed, and would surely appreciate it myself.
Happy New Year!
Hi, I'm a Hac · 1. January 2009, 20:57 · #
I have just realized that LastEXILE (InsanelyMAC user) has posted new drivers that I will test as soon as I can. Currently the rapidshare account has reached it’s download limit, so I have asked him to repost the link.
I will follow up to let you know if this fixes the problem, and maybe you can include this fix if it works.
MacNutty · 4. January 2009, 13:22 · #
Can’t Chameleon team make a graphical boot loader similar in real Mac, the one with graphical boot volume chooser. Can it be possible? The graphical boot loader will really bring our hackintosh more closer to real Macs.
Drakulix · 5. January 2009, 16:15 · #
Or a white screen on booting (like EFI) if Quiet Boot is activated.
rockstarjoe · 6. January 2009, 23:18 · #
Thanks for all of your hard work! I’m really looking forward to the new release.
DR. HURT · 9. January 2009, 10:43 · #
+1 for the white screen (like EFI).
Also, when is the next version going to be released. I can’t wait.
No rush though. I’m just anxious.
DR. HURT · 9. January 2009, 20:58 · #
SSDT override. I guess it’s a new fork of the bootloader. I just thought I’d give you a heads up. I see great potential here.
http://forum.insanelymac.com/index.php?showtopic=145792&st=0
caine · 12. January 2009, 00:55 · #
@zef
What about nvram saving support in stage 2 boot? It could be helpful for saving keyboard layout, set boot options, choosing boot volume (at least within same hdd), maybe it could resolve some uuid problems etc..
All you need (as I think:)) is to handle efiRuntimeServices->SetVariable and efiRuntimeServices->GetVariable in fake_efi.c and read/store data to some file on disk.
It would be nice if you add this feature to next release.
Fakrae · 12. January 2009, 07:40 · #
And it would be nice, if you could release some kind of semi-release, since I for example only need to load DSDTs and .kexts from the EFIpartition, but since I dualboot Vista on the same HDD, munkys EFI-boot doesn’t recognize Vista and won’t let me boot it!
cparm · 25. January 2009, 05:01 · #
hi, chameleon team,
what’s about your bootloader update and the new features since the first announcement , are you waiting for the snow leopard release ??
zef · 29. January 2009, 12:54 · #
Caine:
We have similar ideas about how could we provide that feature. But we have many other things to fix first :)
Fakrae:
I can say the same, our intention is to release a usable, tested version.
cparm:
Hey, we’re not waiting for the next leopard release but working on the next Chameleon release ;)
bigdog · 31. January 2009, 00:15 · #
I am a somewhat noob as I am about to build my first Hackintosh. I was hoping you guys were ready just to minimize the many mistakes I am sure I am about to make. I am going to attempt munky’s method as it seems it is best solution all around but still wanted to thank you guys for all your hard work. Cant wait to see the new version when it comes out. I know you guys are taking the time to make sure it is as feature rich and as bug free as humanly possible. Which is the way it should be done! Thanks Again for all the hard work.
WooTerBurg · 2. February 2009, 12:33 · #
Hey, how ‘bout doin’ it like the pros do? Set a code freeze date, meet it, release what you got, then let us know what you’re still working on that will be in the next release? I think we could ALL benefit from what you got so far.
That would be great, just like you!
Thank U, from all of US!