Here is a section that has been initiated to let viewers know of the technical details and jargon used in installing Mac on a PC. This page is an appendix to the tutorial on how to install Mac OSX 10.6.6 on PC hardware, specifically with the hardware we have purchased. This page will define terms, indicate software associated with terms, and provide mini tutorials on how to execute essential procedures that may be needed to install Mac OSX on various PC hardware.
Kernel: This is essentially a bridge between applications and the actual data processing done at the hardware level. It is operating system specific, a method in which software interacts with the the hardware. Mac OS X is based on Darwin, which uses a hybrid kernel called XNU, which was created combining the 4.3BSD kernel and the Mach kernel which is located in the root of your hard drive (/) and is named “mach_kernel” by default. If you have a vanilla based system then replacing the kernel is most likely not necessary, however if you have an AMD or SSE3 incapable processor then a patched kernel will likely be required.
Kext (AKA Kernel extensions): These are drivers, ‘files’ with a “.kext” extension that are part of Mac’s operating system to allow support of extra hardware. They are generally installed to the system directory: /System/Library/Extensions/.kext In the case of OSx86, kext ‘files’ can be modified and replace apple’s original drivers that are optimized for use on PC hardware. In reality, .kext file extention is not a file type so to speak, but instead a directory of files and subfolders which together create a working kernel extension. You can right click on any .kext file and “show package contents” to see for yourself. These directories are programmed with specific Device ID’s, but can be manipulated to be compatible with other devices. A great tool for identifying hardware device ID’s is “DPCIManager.” Some kext packages use the “device-id” of devices attached to the PCI bus to decide whether to initiate and whether to tweak their behavior depending on the specific device. This method allows few native apple kext drivers to be tricked into believing that you have hardware that is used by Apple and thus enjoying support from Apple’s drivers. Use the following 9 main steps to patch a kext for your device with its device ID if your device is old hardware or hardware that lacks a custom kext already developed in the internet. Common hardware like popular sound and video cards already have pre-made kext that can easily be downloaded from the internet with a light bit of searching, or one can make use of Multibeast – the ultimate post installation OSx86 utility.
For Custom Device ID Hacks:
Step 1: Find the Device ID via DPCIManager
Step 2: Start Terminal. Found in ~/Applications/Utilities
Step 3: Login as root.
enter administrator password
Step 4: Enter the Target Directory of kext. For example here we are entering the contents of a sub-directory PlugIns of a kext within.
/System/Library/Extensions/[kext name].kext/Contents/PlugIns/[Kext name].kext/Contents
Step 5: Change Permissions. This is a typical patch to a PlugIn in which you edit the contents of the Info.plist file.
chmod 644 Info.plist
Step 6: Edit your patch file. With this, you can edit the patch file, but changes only take effect when you save the file.
Step 7: Insert your Device ID. This is the tricky part. Depending on how you need to edit your specific kext, scroll down until you see <key>Device Name</key> in the text file. The Device Name here should be a human-readable device description, like “Intel ICH6 Audio” or “Realtek 81xx Ethernet”. The kext you are manipulating, or the tutorial you are following should indicate which Device Name to look for. You will see a part below this that resembles in description <string>0xABCD0EFF</string>. This is the PNP ID string. Multiple IDs can appear between the <string> and </string> separated by a space. Enter yours in between <string>[here]</string>. Generally speaking, listing your PNP ID first in this region is the way to go.
Step 8: Save changes. If you are confident, press Ctrl + O to save changes.
Step 9: Open terminal and execute these commands in order to respectively clean your extension cache and then setup file permissions. Reboot your computer.
chown -R 0:0 /System/Library/Extensions/[Kext name].kext
chmod -R 755 /System/Library/Extensions/[Kext name].kext
kextcache -k /System/Library/Extensions
Installing Pre-hacked Kext with software (Easy Method)
First when you have found your desired .kext, save it to a known, safe directory on your hard-drive. Use Multibeast to install Kext Helper b7 (or install any other easy kext installation apps, there are many, even OSx86 tools will do the trick) and just drag the desire kext over the Kext Helper b7 application icon on the dock, type in your administrative password when prompted and presto, it installs. Reboot the computer and asses the success of your drivers.
Good resources to find custom kext:
Insanelymac (use the search feature to brows forums)
Vanilla Install: A vanilla compatible system is a PC capable of running Mac OS X with minimal modifications for example, there is no need for a patched kernel and the system is tolerable natively with Apple software updates. Traditionally, vanilla compatible systems are ones that have core duo processors or later generation of intel CPU chipset I.E iCore processors, Xenon, iCore mobile, etc. The installation method in a vanilla compatible system is much easier than other methods due to the fact is is able to install directly from a retail install DVD from Apple. All that is needed is a custom boot loader such as iBoot to read the DVD and some BIOS configurations to have a vanilla install.
[Reference Tag 1]
Distro Discs: These are essentially patched pirated distributions of OS X DVDs. Tampering with Apple’s retail disk is illegal which definately violates apple’s intellectual property and therefore these DVDs are generally found on illegal pirating torrent sites or webpages. iPC, Leo4All, Kalyway, and Hazard are few of the popular “distro” titles. The benefit of these DVDs verses a vanilla retail installation is that they come with many ready install kext options available and a pre-patched kernel to work with AMD and non-traditionally supported Intel chips. Though, they may work with older PC hardware, it is much more difficult and tedious to install OS X with these retail disks.
ACPI: This is short for Advanced Configuration and Power Interface, a power management specification developed by Intel, Microsoft, and Toshiba. ACPI enables the operating system to control the amount of power given to each device attached to the computer. With ACPI, the operating system can turn off peripheral devices, such as a CD-ROM players, when they’re not in use.
DSDT: The Differentiated System Description Table is the main table in the ACPI part of a computer’s BIOS. The Advanced Configuration and Power Interface (ACPI) defines a large number of tables that provide the interface between an ACPI-compliant operating system like OS X and system firmware. These allow instructions of system hardware in a platform-independent manner in ACPI Machine Language (AML, the extension of a DSDT file). The problem is that OS X has an incomplete ACPI implementation which supports only a subset of DSDT. Modifying the DSDT allows the user to better support their tertiary hardware. For example, fixing Time Machine and the UUID 35 error is possible after modifying the DSDT. To patch your DSDT, you must either use a new table file that someone else has provided, or extract and modify your own. Once a DSDT has been modified, the boot loader has to be configured to use the new DSDT file instead of the BIOS. On a few motherboards it is also possible to replace the BIOS with an updated BIOS with a patched DSDT. There are databases available for pre-patched DSDT files like tonymac’s DSDT database.
EFI String: The Extensible Firmware Interface (EFI) is a set of interfaces that defines how software will interface with future firmware. EFI is an alternative to patching kernel extension files (.kext) to make OSX recognize your device. Another alternative is patching DSDT in bios or a patched dsdt.aml which is loaded by the bootloader. The idea is to simple add an EFI-String (hex string) of your device to /Library/Preferences/SystemConfiguration/com.apple.boot.plist and the device will be recognized when the computer boots. Generally EFI strings are used to enable full support of video cards. The easiest method in inserting a custom EFI string to the apple.boot.plist is using OSx86 tools, making use of the “Add EFI String/ Boot Flag” feature. There, you can find pre made hex strings ready to insert, and/or a text area to enter your own.
BIOS: The BIOS software is built into the motherboard of the system and it is the first code run by a PC when powered on (AKA boot firmware). The primary function of the BIOS is to eventually load and start an operating system. When the PC starts up, the first job for the BIOS is to initialize and identify system devices such as the video display card, keyboard and mouse, hard disk, CD/DVD drive and other hardware. The BIOS then locates software held on a peripheral device such as a hard disk or a CD, and loads and executes that software, giving it control of the PC thereby enabling it to be detected by the operating system. Usually to access configuration to the BIOS, one can trigger it by a hot key designated by the motherboard while the computer boots.
[Reference Tag 1]
AHCI: The Advanced Host Controller Interface (AHCI) specification describes the register-level interface for a host controller for Serial ATA. The specification includes a description of the hardware/software interface between system software and the host controller hardware. AHCI gives software developers and hardware designers a standard method for detecting, configuring, and programming SATA/AHCI adapters. AHCI is separate from the SATA 3Gb/s standard, although it exposes SATA’s advanced capabilities (such as hot swapping and native command queuing) such that host systems can utilize them. For Mac OS X to run on PC, AHCI needs to be enabled via BIOS settings.
Bootloader: The boot loader typically loads the main operating system for the computer. There are many different boot loaders available specifically designed for the hackintosh project to enable booting into the retail DVD and the OS when installed to the internal target disk. Chameleon boot loader is a popular one with the hackintosh community and the same of which iBoot by tonymacx86 is based off of. iBoot specifically enables a simple disc swap-out for the Mac OS X Retail DVD, and a vanilla installation. Added features for most motherboards include audio, network, and graphics enabled by default out of the box, without altering the Vanilla install.