EmulatingOSX
From 24C3 Public Wiki
Project | |
---|---|
Name | Emulating an x86 Mac OS X |
Coordinator | Alexander Graf |
Location | Aquaville |
Contact |
A lot of projects try to get Mac OS X running on non-Apple hardware by modifying the kernel and/or adding kernel extensions to emulate the Binary Protection supplier. While this is nice for home use and arbitrary hacking, Apple explicitly forbids the use of Mac OS X on non-Apple hardware.
Contents |
Ambition
While the EULA clearly states, that running Mac OS X only once and only on Apple hardware is allowed, this does not exclude running it legally in a virtual machine on Apple hardware. This is basically the same approach that Mac-on-Linux took, just this time with the Intel based version of Mac OS X. Of course, as all the hardware Mac OS X runs on is virtual, the very same approach enables potential users to run it on non-Apple hardware as well.
Approach
All of the current Open Source Virtualization Projects I know of use Qemu as a basis of hardware emulation. This means, if Mac OS X runs on Qemu, it's no big deal getting it to run in KVM, VirtualBox or XEN.
So I took the modified Darwin bootloader created by David Elliot (thank you!) and implemented a simple multiboot loader in Qemu. Now the real fun part came in emulating current hardware, as Mac OS X expects an ICH-7 chipset (Qemu emulates a PIIX3), at least a Core Duo CPU (Qemu emulates an ancient Opteron) and the Binary Protection chip.
I will get into detail on the implementations on request. Please feel free to contact me if you want me to write about this.
Status
I modified Qemu well enough to boot and run Mac OS X with disabled AppleIntelCPUPowerManagement.kext for at least a limited time. It is not 100% stable and eats up 100% CPU all the time. In its basic aspects it works though and everything from here is polishing.
As I had some free time, I ported this to KVM. It runs a lot better than in Qemu, does have less bugs and is faster.
Get it
Are you eager enough to try out Alpha software? Good. Take a look at the Project Site. You will find the sources there and can learn how to build them on my Workshop.