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 http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/) but didn't cover Yosemite so far.

Andrei Ostanin also wrote a nice post on how to run Mac OSX Mavericks on KVM (see http://blog.ostanin.org/2014/02/11/playing-with-mac-os-x-on-kvm/).

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.

download Pacifist from http://charlessoft.com/cgi-bin/pacifist_download.cgi?type=dmg

copy Pacifist to Applications folder

download Chimera from http://www.tonymacx86.com/downloads.php?do=file&id=258&act=down&actionhash=guest

unpack Chimera-4.1.0.zip

open Chimera 4.1.0.pkg with Pacifist

with Pacifist extract the contents of chimeraV41.pkg to a new folder

copy usr/standalone/i386/boot (the bootloader file) to chimera_4.1_boot

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

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:

wget http://wiki.qemu-project.org/download/qemu-2.3.0.tar.bz2 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\".

"@/SourceCache/...IOPlatformExpert.cpp:1590 ...

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.

:)