I really like Apple software, in particular I really really like OS X. It looks incredible and there are some really amazing applications available for it which greatly assist me in my day-to-day life. The greatest thing about OS X for me as a developer is that it has a UNIX base, and as a result it has a Terminal, with SSH, and all the other commands that I'm used to on my Linux servers. It just makes everything so much easier when I can deal with all that stuff natively instead of having to install things like PuTTY and Pageant, along with VirtualBox just to get a basic Linux-like environment for testing.
But enough with my confessions of love for OS X. Let's get to the point: I don't particularly like Apple desktop hardware. It's overpriced and can't be easily upgraded which are both deal breakers for me. As a result I build my PCs with OS X compatible parts and then install OS X on it anyway, which isn't that difficult of a process these days. This way, I get OS X on a reasonably priced system with way more power than you'd ever get on Apple hardware.
Recently OS X 10.10 Yosemite was launched, and upgrading to it was an absolutely huge hassle for me, it's taken me 3 days to get my system fully working again. This post is designed to inform people of the differences between OS X 10.9 and 10.10 from a Hackintosh perspective, because there are some differences which need to be taken into account especially if you like to do things yourself and not just blindly follow an upgrade guide, or if you have a setup different to the majority of people (for example, I use vanilla Chameleon, not the Chimera fork which TonyMacX86 recommends). This won't be an easy to follow tutorial for newbs, there are plenty of those already, take a look at TonyMacX86 or InsanelyMac.
The first and most important thing you need to understand is the new kernel extension (kext) signing system. All kexts must now be signed in order to be loaded by OS X 10.10, this is a slight problem since FakeSMC.kext, which is vital for the operation of OS X on a non-Apple computer is not signed and therefore will not be loaded by default. If you boot with the -v kernel flag you will likely receive an error such as "Still waiting for root device" over and over until you forcibly restart the computer. The fix to this is as follows:
- Add kext-dev-mode=1 to your boot flags in /Extra/org.chameleon.Boot.plist as shown in my file below, this enables the developer mode for kernel extensions and allows unsigned kexts to be loaded by the system:
- On your next boot, you need the system to rebuild the kernel cache by adding the -f kernel flag. You could add this to org.chameleon.Boot.plist and then remove it after the first boot has completed, but the easier thing to do is just wait for the Chameleon/Chimera bootloader to appear, then type -f and then hit enter on your OS X system to boot it. It will take a bit longer than usual due to rebuilding the cache but the boot time will speed up again on all future boots so don't worry.
The second issue is that the kernel has moved from its usual location of /mach_kernel to /System/Library/Kernels/kernel, as a result you may get the error "Can't find mach_kernel" immediately after booting up. There is an easy fix for this:
- Open your org.chameleon.Boot.plist, find the following lines and erase them, then save the file:
- Reboot, if the issue is still not fixed, do the following:
- Open up org.chameleon.Boot.plist and add the following, then save the file:
Finally, you should check your system for the following two files and delete them if you find them:
They conflict with OS X 10.10 and can cause kernel panics, you don't need them.
Let me know if you're having any issues and I'll try to help you out!