- Patch DSDT
When running non-modified retail version of Mac OS X on ageneric PC, a special boot loader is needed in order to trick thevanilla Apple operating system to think it’s running on a genuineMac. One ofthese boot loaders is called Chameleon. But Chameleoninstallation requires some tweaking in order to do the magic. It’snot enough just to install Chameleon on the system disk but youalso need some hardware-specific configuration in order to enjoy afully working Hackintosh system.
The configuration consists of multiple files. You could installthese files directly to the system disk you’re booting from or theEFI file partition if using hard disk with GPT partition layout.But it’s also possible to bundle all the needed stuff except bootconfiguration inside a single disk image file which Chameleon loadson startup and reads the files inside the image. This way you onlyneed to install this preboot image file and boot configuration fileand your system disk remains less polluted. I find this approachmuch more appealing as it allows me to keep the system as clean aspossible.
Chameleon Wizard for Mac lies within System Tools, more precisely General. From the developer: Chameleon Wizard helps to install, update and download latests revs of this bootloader. This chameleon usb flash drive will boot with Yosemite, Mavericks and Mountain Lion USB installers on Most Laptops: Sandy Bridge, Ivy Bridge, Haswell.
In this guide we’re going to create a Chameleon preboot imagefrom the scratch in a generic way. It is assumed that the machineand motherboard in particular in use has good compatibility withvanilla Mac OS X Snow Leopard. In practice this means Intel Core 2processor with Intel chipset on the motherboard. You’ll also need aworking Mac OS X 10.5 or 10.6 installation running on a genuine Macor Hackintosh with root shell access. The whole process is beingdone in the shell using command-line tools. Also if you’re going topatch your DSDT, you’re probably goingto need a way to boot Linux on the machine if you don’t have Mac OSX already installed. Ubuntu Live CD would do it justfine.
Create the preboot disk image and mount it. We’re using the file
~/Desktop/Hackintosh/Preboot.dmgin this guide.
Write down the device name for the preboot disk. In the guidewe’re using
Fix the preboot mountpoint so that file can be owned by
Mark the file system so that fseventsd doesn’t keep any logsthere.
Chameleon needs to load some kernel extensions prior to bootingthe Mac OS X kernel in order to fix some issues running the Appleoperating system on non-Apple hardware. Also Mac OS X may notinclude drivers for all of your hardware so you need to add any 3rdparty drivers that your hardware needs to function. You can readthis articleto find more about kernel extensions.
Create directory to hold the kernel extensions. You must notchange the path as Chameleon expects to find the kernel extensionsunder
Extra/Extensionsdirectory under the root of thepreboot volume.
Download the following mendatory kernel extensions saving each
- System Management Controller emulator. Mac OS X won’t boot on aHackintosh without this.
- Fixes shutdown/restart issues.
Softonic. You may want to include the following additional generic kernelextensions.
- Fixes CMOS corruption that exists with many motherboards if nopatched DSDT is installed. See the sectionbelow about DSDT patching.
- Disables Apple’s
AppleIntelCPUPowerManagement.kext. You need this ifDSDT is not patched to support native CPU power management. Seethe section below about DSDTpatching.
- Disables Apple’s
- You need this driver if you have PS/2 keyboard and mouse.
- URL: http://osx86.sojugarden.com/downloads/
Download any 3rd party driver kernel extensions for yourhardware and place them under
/Volumes/Preboot/Extra/Extensionstoo. Good places tofind additional kernel extensios are kexts.comand myHack. For areal-world example, you can read my posting Technical details of my Hackintosh installation.
Fix permissions and ownership of the kernel extensions. Kernelextensions won’t load if the files are not owned by
Create/update extensions cache
DSDT,is an ACPI table that is stored in the BIOS. In order to workcorrectly, some functionality in Mac OS X depends on features ofthe DSDT that can be found on Macs. The DSDT in your generic PC’sBIOS might be incorrect or buggy when used with Mac OS X. Chameleonsupports overriding the DSDT provided by your hardware with aversion loaded prior to loading the operating system. Thus you cancreate a patched DSDT for your hardware based on your original DSDTthat is also compatible with Mac OS X and make your Hackintoshbehave well without modifying hardware or BIOS.
The plan for DSDT patching is straightforward.
First you need to extract the DSDT binary code in AML format(ACPI Machine Language) wired to your BIOS.
Then you decompile the AML binary to ASL (ACPI Source Language),which is source code to the AML binary in ASCII format.
Edit the AML source code to patch in any desired fixes.
Compile the patched AML source to get an updated DSDT AML binaryfile.
You need to include the resulting DSDT AML binary file in theChameleon preboot environment so Chameleon can find and load it andoverride the built-in DSDT with the patched one on systemstartup.
For decompilation and compilation of DSDT you need Intel ASLcompiler/decompiler.For Debian/Ubuntu, the tool is available in the package
iasl. Macversionis also available. The
iasl binary is stored in the
Tools directory of the linked download.
Actual changes to the DSDT are always dependant on thecombination of particular hardware and BIOS version so I’ll gothrough these steps here in a generic way.
Extracting the DSDT AMLbinary
In Linux, the DSDT extraction is a breeze as the blob availableunder the
/proc file system.Just run
and you have a copy of your DSDT AML binary in the file
In Mac OS X you can extract the DSDT AML binary to the file
~/Desktop/Hackintosh/dsdt-original.aml by running thefollowing command:
Note that if running Mac OS X, be sure that the system doesn’thave a patched currently DSDT applied or you won’t be able toextract the original DSDT in the BIOS!
Decompiling DSDT AMLbinary to ASL source
Use the following
iasl command to decompile theDSDT AML binary
~/Desktop/Hackintosh/dsdt-original.amland save it as ASL source file
Editing the DSDT ASL source
Now you can edit the file
~/Desktop/Hackintosh/dsdt.dsl and fix anyhardware-specific problems with the DSDT. I’ve documented theneeded DSDT patches for one of my systems in the posting Technicaldetails of my Hackintosh installation. Many of these patchesare quite generic.
Compiling ASL source toDSDT AML binary
After applying the desired set of patches, compile the ASLsource back to a DSDT AML binary file
~/Desktop/Hackintosh/dsdt.aml with the followingcommand:
Configuring Chameleon preboot image to load the DSDT AMLbinary
Let’s say you have the modified DSDT AML binary saved as thefile
~/Desktop/Hackintosh/dsdt.aml. In order forChameleon to find and load the patched DSDT, the file needs to beinstalled as
Extra/dsdt.aml under the preboot imageroot. So copy it like this:
System Management BIOS or SMBIOS stores some details about yourhardware,.In Mac OS X you can view the current SMBIOS information with
System Profiler.app. Chameleon allows customization ofthe SMBIOS values. You can do this by creating the file
Extra/smbios.plist under the preboot image root. Youcould use this feature to make your Hackintosh mimic some existingMac model or you could provide your own values. It’s all optional,though. But If you want to do that, then read thesearticles,,for more details and save the resulting file as
Here is a sample
smbios.plist which gives thesystem a custom serial number.
Chameleon Bootloader Mac Os
By default Chameleon tries to find DSDT and SMBIOS data from thesystem disk. In order to instruct Chameleon to use the prebootimage, the file
RAMDisk.plist needs to be added to theroot directory of the preboot file system. So save the this as
Chameleon Bootloader Mac Download
Cleanup preboot file system
Eject the preboot disk
The preboot image
~/Desktop/Hackintosh/Preboot.dmgis now ready to be deployed in the
Extra directory ofa Chameleon boot disk.
Chameleon Bootloader Mac Pro
-  OSx86 at Wikipedia / http://en.wikipedia.org/wiki/OSx86
-  Chameleon / http://chameleon.osx86.hu
-  Download Ubuntu / http://www.ubuntu.com/getubuntu/download
-  What is kext, where is kext, how to install kext / http://www.ihackintosh.com/2009/02/what-is-kextwhere-is-kext-how-to-install-kext/
-  FakeSMC 2.5 / http://netkas.org/?p=338
-  Fakesmc version 2.5 - Kexts.com / http://www.kexts.com/view/161-fakesmc_version_2.5.html
-  OpenHaltRestart / http://www.psystar.com/opensource/openhaltrestart
-  CMOS reset fix (via kext) - Kexts.com / http://www.kexts.com/view/151-cmos_reset_fix_(via_kext).html
-  NullCPUPowerManagement (32-/64-bit) - Kexts.com / http://www.kexts.com/view/16-nullcpupowermanagement_(32—64-bit).html
-  myHack / Downloads / http://osx86.sojugarden.com/downloads/
-  The Hackintosh Kext Database / http://www.kexts.com
-  kextload(8) Mac OS X Manual Page / http://developer.apple.com/Mac/library/documentation/Darwin/Reference/ManPages/man8/kextload.8.html
-  DSDT at osx86project.org wiki / http://wiki.osx86project.org/wiki/index.php/DSDT
-  Linux/ACPI - DSDT: Overview / http://acpi.sourceforge.net/dsdt/
-  ACPI Component Architecture / http://www.acpica.org/downloads/
-  Debian package iasl / http://packages.debian.org/search?keywords=iasl
-  DSDT Patcher / iasl - Kexts.com / http://www.kexts.com/view/94-dsdt_patcher_-_iasl.html
-  System Management BIOS at Wikipedia / http://en.wikipedia.org/wiki/System_Management_BIOS
-  DMTF - System Managemen BIOS (SMBIOS) / http://www.dmtf.org/standards/smbios
-  Prasys' Blog: [GUIDE]Creating your own SMBIOS.plist / http://prasys.co.cc/2009/09/guidecreating-your-own-smbios-plist/
-  InfiniteMac Forum: SL com.apple.boot.plist / SMBIOS.plist /http://www.infinitemac.com/f57/sl-com-apple-boot-plist-smbios-plist-t4121/
-  Techedze: Editing your SMBios.plist / http://www.techedze.com/Thread-editing-your-smbios-plist