Run Mac OS X Yosemite on KVM

Update 30.04.2015: I was able to run Yosemite after switching to QEMU 2.3 and Chimera 4.1. See below.

In the last post we set up a VM running Mac OSX Yosemite the help of VirtualBox. Now what if we would like to run a prepared VM on a Linux machine running KVM instead of VirtualBox?

Gabriel L. Somlo already did great work for running Mac OSX on KVM (see but didn't cover Yosemite so far.
Andrei Ostanin also wrote a nice post on how to run Mac OSX Mavericks on KVM (see
I had success with Gabriel's description for running Mavericks and tried the same approach with Yosemite: It didn't work in the same way.

I found out that the Chameleon bootloader was not able to load the kernel from /mach_kernel. The cause for this was that the kernel in Yosemite now lives at /System/Library/Kernels/kernel. So I needed a newer bootloader version.
There are different forks of Chameleon which support Yosemite. I tried Chimera as it seemed to be the most advanced variant.

According to Gabriel's requirements, we need a Linux machine with kernel 3.15+ and QEMU 2.1+. I used the new Ubuntu 14.10 Utopic Unicorn server variant which also features the OpenStack Juno release.

  • convert our VDI image from VirtualBox to RAW fomat:
VBoxManage clonehd --format RAW Yosemite.vdi Yosemite.raw  
  • copy RAW image to Linux machine
  • convert RAW image to QCOW2 format:
qemu-img convert -f raw Yosemite.raw -O qcow2 mac_hdd_10.10.img  
  • copy chimera_4.1_boot bootloader file to Linux machine
  • learn how to get the OSK string at Andrei's blog post.

It appears that QEMU 2.1 in Ubuntu 14.10 is a little bit too old. OSX started to boot but only showed a black screen after the kernel output.
So I installed QEMU 2.3 manually. Version 2.2 works too. It might be enough to upgrade to Ubuntu 15.04 Vivid Vervet which also contains QEMU 2.2.

  • install QEMU 2.3:
tar xvzf qemu-2.3.0.tar.bz2  
cd qemu-2.3.0  
./configure --prefix=/home/$(whoami)/qemu_2.3 --target-list=x86_64-softmmu
make clean  
make -j8  
make install  
  • ignore MSR readout on host by VM (as described by Gabriel):
echo 1 > /sys/module/kvm/parameters/ignore_msrs  
  • start KVM:
~/qemu_2.3/bin/qemu-system-x86_64 -enable-kvm -m 2048 -cpu core2duo \
      -machine q35 -smp 4,cores=2 \
      -usb -device usb-kbd -device usb-mouse \
      -device isa-applesmc,osk="insert-real-64-char-OSK-string-here" \
      -kernel ./chimera_4.1_boot \
      -smbios type=2 \
      -device ide-drive,bus=ide.2,drive=MacHDD \
      -drive id=MacHDD,if=none,file=./mac_hdd_10.10.img \
      -netdev user,id=hub0port0 \
      -device e1000-82545em,netdev=hub0port0,id=mac_vnet0 \
      -monitor stdio \
      -device ide-drive,bus=ide.0,drive=MacDVD \
      -drive id=MacDVD,if=none,snapshot=on,file=./Yosemite.iso

Now the VM boots and the Chimera bootloader appears. You can type in -v for booting in verbose mode.

Booting from the Yosemite install DVD didn't work for me:

panic(cpu 0 caller 0xfff...): "Unable to find driver for this platform: \" ACPI\".\n"@/SourceCache/...IOPlatformExpert.cpp:1590  

ceph on zfs diagram

Booting from the harddisk works but appears to be a little bit slow. There are also some visual glitches. It was also possible to upgrade to 10.10.3.

ceph on zfs diagram