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 - extract the contents of chimeraV41.pkg to a new folder
- copy
usr/standalone/i386/boot
(the bootloader file) tochimera_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 - 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\".\n"@/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.
:)