Let me tell my self the truth: I want Mac OS X guest support on VirtualBox.Foreword: This was originally written in 2007 for VirtualBox 1.5.x
update: VirtualBox 3.2 supports Mac OS X guests out-of-the-box, without the hacks described here.
The problem needs to be devided into 2 aspects: political & technical.
Apple only allows their OS to run on Mac hardware. The only workaround I see here is to run VirtualBox on Mac hardware to virtualize Mac OS X. Or some big company (Innotek?/VMware?) needs convince Apple to license their OS in different way...
Since I'm not a politician, and not a lawyer, I'll let others to figure this out.
According to Alexander Graf: (http://alex.csgraf.de/self/?part/projec ... 20OSX/qemu
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, but this time with the Intel based version of Mac OS X.
Of course, as all the hardware Mac OS X runs on with this solution is virtual, the very same approach enables potential users to run it on non-Apple hardware as well, which is illegal though.
Technical problem: (for users)
It gets interesting... but there are some hacker's versions of Mac OS X flying around the 'net. This version doesn't require EFI and other Apple hardware, but works with normal PC hardware instead. One of the images is Deadmoo's OS X for VMware. (Tiger v10.4)
This vmdk works on VirtualBox with only one modification to the boot command: platform=x86pc
(this disables ACPI, because Mac OS X dislikes VirtualBox's ACPI implementation due to incompleteness).
To make change permanent just configure Mac OS X bootloader:
On VMware WS 6 it works (slowly) without any workarounds, but on VBox it is much faster.
Requirements: Intel SSE3 and VT capable CPU. (VT must be enabled in VBox). Theoretically this should work on AMD too, but not tested.
Verdict: it WORKS ! (with a workaround and not stable, but it WORKS !)
Tested on VBox 1.5.x on Intel Core 2 Quad Q6600 on Windows XP 32 host.
NOTE: It is not easy to make it work, so normal mortals should not even try.
WARNING: Currently only Deadmoo runs. iAtkos, Leo4All, Kalyway, and all other images will NOT run.
First I would like to see VirtualBox improve to the way, where it will run Mac OS X without problems, then hope until someone convinces Apple. Perhaps, from a political point of view it would be smarter to work with Darwin first.
Update: In may 2009 a new, hacked bootloader arrived, known as "boot-132". If anyone has experience using it, please let us know.
***For Developers only !!! (users must skip this)
Qemu team developed initial "Intel Mac" hardware target patches for Qemu, that may be ported over here, if anyone is interested (and has the knowledge).
On 8.Jan.2008, Alexander Graf from Novell sent several patches to Qemu to enable real Mac OS X emulation, so the number of stupid workarounds will decrease dramatically.
Quoting from his email:
the following patchset enables qemu to run Mac OS X with disabled
AppleIntelCPUPowerManagement.kext, by emulating hardware that resembles
an Intel Mac close enough. The following patches are included:
This is based on the DMI support by Ryan Harper. As it is currently
unclear, if this approach is taken or if the Bochsbios is going to be
patched, I would recommend to not apply this patch for now. I still
submit it for completeness and because I have touched parts of it.
This adds an HPET emulator device. It is not feature-complete but should
suffice for this purpose.
This adds a dummy LPC device the HPET is located on.
Apples binary protection sits in the fan control, which is the AppleSMC
chip. This emulates the devices and takes the protective key from the
Mac OS X as is has a condition to only run on family 13 Intel CPUs, so
this adds a definition for a CoreDuo CPU and an MSR as well as a CPUID
instruction that is required by Mac OS X
The oldest supported IDE controller in Mac OS X is the ICH6. This is an
incomplete implementation for that controller, that suffices for running
Mac OS X and worked with libata for me as well.
To leave the default behavior unchanged, this adds a "mac" machine
definition that automatically chooses the right hardware for an emulated
To boot Mac OS X a mach bootloader has to be run. David Elliot modified
the original i386 Mac OS X BIOS based bootloader to emulate the EFI
entries and support multiboot, an easy but straight-forward kernel
loading interface founded by grub. To boot multiboot-compliant kernels
directly, this adds support for multiboot loading to the -kernel option.
Several ACPI entries were missing from the bios and the new controllers
need to be initialized properly.
This patch is against the bochsbios. Should this rather be sent to the
For details, instructions and the bootloader please seehttp://alex.csgraf.de/self/?qemu/
10. VirtualBox will also need to emulate a better Ethernet controller, such as RTL8139 (or at least default to Intel E1000 for Mac guests), because Mac OS X doesn't have AMD PCnet built-in drivers (alternatively the driver can be installed via "Maxxsus 1.0 network patch" as GuestAdditions. The "Maxxsus 1.0 network patch" is essentially AMD PCnet network driver for Mac OS X).
So this device also should be ported from Qemu.
With those patches ported from Qemu to VirtualBox it won't require hacker's Mac OS X anymore... it will work with standard Mac OS X from Apple. Normal users will be able to install Mac OS X.
Current development progress of VBox: (compared to v1.5.x, as it was the first version where I was able to run Mac OS X)
2: ACPI HPET: http://www.virtualbox.org/changeset/25928
3+4 : LPC and SMC devices: http://www.virtualbox.org/changeset/25952
6: ICH6: v2.2 (?)
7: Hardware choices per Guest OS already part of VBox architecture.
8: EFI: v3.1
Some experiments by others:http://sites.google.com/a/puredarwin.or ... virtualboxhttp://www.insanelymac.com/forum/index. ... pic=207334
"Black Trinitron" recommends to add this to VBox VM XML: (he uses iDeneb_v1.3_10.5.5.iso)
<ExtraDataItem name="VBoxInternal2/SupportExtHwProfile" value="on"/>
*The procedure above did not work for me.