Rachel's Yard

| A New Continuation
Tags QEMU

Standard Disclaimer: I'm not responsible for any damages. Please use this guide as a way to discover QEMU. Please don't commercialize the result. Your warranty is now void.


Table of Contents

Preface

The following instructions were tested on a Mid-2014 Macbook Pro, and:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
System Information
Operating System Ubuntu 16.04 LTS 4.4.0-21-generic x86_64
Model Supermicro Super Server
Motherboard Supermicro X10SDV-16C+-TLN4F
Processor Intel(R) Xeon(R) CPU D-1587 @ 1.70GHz @ 2.30 GHz
1 Processor, 16 Cores, 32 Threads
Processor ID GenuineIntel Family 6 Model 86 Stepping 4
L1 Instruction Cache 32.0 KB x 16
L1 Data Cache 32.0 KB x 16
L2 Cache 256 KB x 16
L3 Cache 24.0 MB
Memory 126 GB
BIOS American Megatrends Inc. 1.1a
Compiler Clang 3.3 (tags/RELEASE_33/final)

If you are running on Debian 8 Host, replace pc-q35-2.4,accel=kvm,usb=off,vmport=off with pc-q35-2.1,accel=kvm,usb=off in all commands


You will need:

  1. A Real Mac
  2. El Capitan Installer.app
  3. Pacifist
  4. Virtio-net for OSX, put it under your temporary folder
  5. Assuming that you have a temporary directory at /tmp/osx

Obtain OSK

Yes, the super secret OSK key.

On your real Mac:

  1. Create a file smc_read.c

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    /*
    * smc_read.c: Written for Mac OS X 10.5. Compile as follows:
    *
    * gcc -Wall -o smc_read smc_read.c -framework IOKit
    */

    #include <stdio.h>
    #include <IOKit/IOKitLib.h>

    typedef struct {
    uint32_t key;
    uint8_t __d0[22];
    uint32_t datasize;
    uint8_t __d1[10];
    uint8_t cmd;
    uint32_t __d2;
    uint8_t data[32];
    } AppleSMCBuffer_t;

    int
    main(void)
    {
    io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault,
    IOServiceMatching("AppleSMC"));
    if (!service)
    return -1;

    io_connect_t port = (io_connect_t)0;
    kern_return_t kr = IOServiceOpen(service, mach_task_self(), 0, &port);
    IOObjectRelease(service);
    if (kr != kIOReturnSuccess)
    return kr;

    AppleSMCBuffer_t inputStruct = { 'OSK0', {0}, 32, {0}, 5, }, outputStruct;
    size_t outputStructCnt = sizeof(outputStruct);

    kr = IOConnectCallStructMethod((mach_port_t)port, (uint32_t)2,
    (const void*)&inputStruct, sizeof(inputStruct),
    (void*)&outputStruct, &outputStructCnt);
    if (kr != kIOReturnSuccess)
    return kr;

    int i = 0;
    for (i = 0; i < 32; i++)
    printf("%c", outputStruct.data[i]);

    inputStruct.key = 'OSK1';
    kr = IOConnectCallStructMethod((mach_port_t)port, (uint32_t)2,
    (const void*)&inputStruct, sizeof(inputStruct),
    (void*)&outputStruct, &outputStructCnt);
    if (kr == kIOReturnSuccess)
    for (i = 0; i < 32; i++)
    printf("%c", outputStruct.data[i]);

    printf("\n");

    return IOServiceClose(port);
    }

  2. Compile: gcc -Wall -o smc_read smc_read.c -framework IOKit

  3. Run: ./smc_read

You will need this string for later.

KVM module parameters

You need to set the host to ignore MSRS, or your OS X will bootloop.

Create a file /etc/modprobe.d/qemu-system-x86.conf with content:

1
2
3
options kvm_intel nested=1
options kvm_intel emulate_invalid_guest_state=0
options kvm ignore_msrs=1

nested=1 denotes enable nested virtualization emulate_invalid_guest_state=0 I don't know what it exactly does, but it fixes a lot of other mysterous issues for me.

OVMF (UEFI Approach)

For this approach, you will need additional files under your temporary folder:

  1. Clover. As the time of writing, I'm using r3625
  2. Clover Configurator
  3. q35-acpi-dsdt.aml
  4. HFSPlus.efi

OVMF Firmware

OVMF is an awesom project, aimed to provide EFI firmware for the QEMU environment. But firstly, we need to obtain such firmware.

First, we will need to grab the source code: https://github.com/tianocore/edk2. Do this on your Linux Host. Clone the source code under a temporary folder, for example, /tmp/src

You will need these dependencies: apt-get install build-essential git uuid-dev iasl nasm

Assuming that you have the source cloned under /tmp/src. We only want one resolution for the firmware. In this example, I will only use 1680x1050x32 as the resolution.

Modify /tmp/src/edk2/OvmfPkg/QemuVideoDxe/Initialize.c, and search for QemuVideoBochsModes. You will see a list of resolutions. We only keep { 1680, 1050, 32 } as our resolution.

Then:

1
2
3
4
5
6
cd /tmp/src
make -C edk2/BaseTools
cd /tmp/src/edk2/
export EDK_TOOLS_PATH=/tmp/src/edk2/BaseTools
. edksetup.sh
OvmfPkg/build.sh -a X64 -t GCC49

Copy /tmp/src/edk2/Build/OvmfX64/DEBUG_GCC46/FV/OVMF_CODE.fd and /tmp/src/edk2/Build/OvmfX64/DEBUG_GCC46/FV/OVMF_VARS.fd back to your temporary folder on Mac. OVMF_CODE.fd is the EFI firmware itself, and OVMF_VARS.fd will be our NVRAM.

Create Installer USB

Many tutorials online asks you to create an actual USB disk. No, you don't need to do that. mkfile will happily create a file-based "disk" for you.

  1. Create a 8GB file with a name clover_usb. This will create the image under your temporary folder.

    1
    mkfile -n 8g /tmp/osx/clover_usb

  2. Mount the file as a disk. After this command you should see where the image is mounted. In this example, it was mounted on /dev/disk2.

    1
    hdiutil attach -imagekey diskimage-class=CRawDiskImage -nomount /tmp/osx/clover_usb

  3. Partitition your "USB". First we will create a GPT partition map: gpt create /dev/disk2. Then use Disk Utility to Erase your "USB", with a name Untitled

  4. Create installer "USB" from Installer.app

    1
    sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/Untitled --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app --nointeraction

  5. Now install Clover to the "USB".

    1. Select Install for UEFI booting only
    2. Select a theme for Clover. I like the BootCamp theme
    3. Under Drivers64UEFI, select DataHubDxe-64 AND OsxAptioFix2Drv [1]
  6. Copy q35-acpi-dsdt.aml to /Volumes/ESP/EFI/CLOVER/ACPI/origin/

    1
    cp /tmp/osx/q35-acpi-dsdt.aml /Volumes/ESP/EFI/CLOVER/ACPI/origin/

  7. Copy HFSPlus.efi to /Volumes/ESP/EFI/CLOVER/drivers64UEFI/

    1
    cp /tmp/osx/HFSPlus.efi /Volumes/ESP/EFI/CLOVER/drivers64UEFI/

  8. Now run Clover Configurator and edit: EFI/EFI/CLOVER/config.plist [2]

    1. Under Cpu, select QEMU
    2. Under Devices, unselect all under USB, unselect ResetHDA
    3. Under Gui, select 1680x1050 as the resolution
    4. Under Kernel and Kext Patches, unselect Apple RTC
    5. Under Rt Variables, clear MLB field
    6. Under SMBIOS,
      1. You will decide what model of your Mac in here. Refer to this to generate correct SMBIOS. Please note that if you are choosing MacPro, do not select MacPro higher than 3,1., or AppleTyMCEDriver.kext will kernel panic because QEMU doesn't show that you have ECC RAM, and MacPro higher than 3,1 all requires ECC RAM [3]
  9. Then edit /Volumes/ESP/EFI/CLOVER/config.plist manually: [2]

    1. Under ACPI, replace everything between <dict> and </dict> with:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      <key>DSDT</key>
      <dict>
      <key>Debug</key>
      <false/>
      <key>DropOEM_DSM</key>
      <false/>
      <key>Fixes</key>
      <dict>
      <key>AddPNLF_1000000</key>
      <true/>
      <key>DeleteUnused_400000</key>
      <true/>
      <key>FIX_ACST_4000000</key>
      <true/>
      <key>FIX_ADP1_800000</key>
      <true/>
      <key>FIX_RTC_20000</key>
      <true/>
      <key>FIX_S3D_2000000</key>
      <true/>
      <key>FiX_TMR_40000</key>
      <true/>
      <key>FixRegions_10000000</key>
      <true/>
      <key>FixSBUS_0080</key>
      <true/>
      </dict>
      <key>Name</key>
      <string>q35-acpi-dsdt.aml</string>
      <key>ReuseFFFF</key>
      <false/>
      </dict>
      <key>SSDT</key>
      <dict>
      <key>DropOem</key>
      <false/>
      <key>Generate</key>
      <false/>
      </dict>

    2. Under Boot, replace everything between <dict> and </dict> with:

      1
      2
      <key>Arguments</key>
      <string>-v</string>

  10. Unmount the partitions, and you are now ready to go

Installing OS X

Now it is time to install OS X on your KVM host.

  1. Assuming that you put your VMs in /vm

  2. Copy clover_usb to /vm/

  3. Copy Virtio-Net-Driver to /vm/

  4. Copy OVMF_CODE.fd and OVMF_VARS.fd to /vm/

  5. Create a qcow2 file for OS X hard drive: qemu-img create -f qcow2 OSX.qcow2 40G. This command will create a 40G image. Adjust at your will

  6. Start the party:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    qemu-system-x86_64 \
    -rtc clock=vm,base=2016-01-01T16:01:21 \
    -m 8192 \
    -enable-kvm \
    -cpu core2duo,vendor=GenuineIntel \
    -rtc base=localtime \
    -smbios type=2 \
    -machine pc-q35-2.4,accel=kvm,usb=off,vmport=off \
    -drive file=/vm/OVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on \
    -drive file=/vm/OVMF_VARS.fd,if=pflash,format=raw,unit=1 \
    -smp 4,sockets=1,cores=4,threads=1 \
    -device isa-applesmc,osk="Result from smc_read" \
    -device i82801b11-bridge,id=pci.1,bus=pcie.0,addr=0x1e \
    -device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.1,addr=0x1 \
    -device ahci,id=sata0,bus=pci.2,addr=0x5 \
    -drive file=/vm/clover_usb,if=none,id=drive-sata0-0-2,format=raw \
    -device ide-hd,bus=ide.2,drive=drive-sata0-0-2,id=sata0-0-2,bootindex=1 \
    -drive file=/vm/OSX.qcow2,if=none,media=disk,id=drive-sata0-0-0,format=qcow2 \
    -device ide-hd,bus=sata0.0,drive=drive-sata0-0-0,id=sata0-0-0 \
    -usb \
    -device usb-mouse \
    -device usb-kbd \
    -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16 \
    -vnc :0

  7. Connect to the VNC

  8. At the Clover bootloader screen, select Install El Capitan

  9. You should see the OS X Installer screen in a little while

  10. Use "Disk Utility" to partition your image.

  11. Install as usual

  12. After the "installation" is finished, it will reboot once. Select Install El Capitan again at the bootloader screen

  13. Now it will actually install Mac

  14. When the installation is finished, and rebooted back to the bootloader, Ctrl+C your qemu process

Setting Up OS X

This is the insteresting part...

  1. Use this bash script to generate a random MAC address:

    1
    2
    3
    4
    5
    6
    7
    8
    function generate_mac ()  {
    hexchars="0123456789abcdef"
    echo "24:df:86$(
    for i in {1..6}; do
    echo -n ${hexchars:$(( $RANDOM % 16 )):1}
    done | sed -e 's/\(..\)/:\1/g'
    )"
    }

  2. Install hfsprogs: apt-get install hfsprogs

  3. Mount your OS X image and copy insteresting files:

    1
    2
    3
    4
    5
    6
    7
    8
    modprobe nbd
    qemu-nbd -c /dev/nbd0 /vm/OSX.qcow2
    mkdir -p /mnt/osx-kvm
    mount -t hfsplus -o force,rw /dev/nbd0p2 /mnt/osx-kvm
    mkdir /mnt/osx-kvm/Extra
    cp /vm/*.pkg /mnt/osx-kvm/Extra/
    umount /mnt/osx-kvm
    qemu-nbd -d /dev/nbd0

  4. Boot your OS X again with this (You will need Clover at all time or else it won't boot):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    qemu-system-x86_64 -name OSX-EFI \
    -machine pc-q35-2.4,accel=kvm,usb=off,vmport=off \
    -cpu core2duo,+pae,+aes,+vmx,+smx,+ssse3,+sse4.1,+sse4.2,+3dnowprefetch,+x2apic,+xsave,+rdtscp,+popcnt,+cx16,+ht,kvm=off,vendor=GenuineIntel,hv_relaxed,hv_vapic,hv_spinlocks=0x1000 \
    -drive file=/vm/OVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on \
    -drive file=/vm/OVMF_VARS.fd,if=pflash,format=raw,unit=1 \
    -device isa-applesmc,osk="Result from smc_read" \
    -m 8192 \
    -enable-kvm \
    -smbios type=2 \
    -realtime mlock=off \
    -smp 4,sockets=1,cores=4,threads=1 \
    -rtc base=utc,driftfix=slew \
    -global kvm-pit.lost_tick_policy=discard \
    -boot strict=on \
    -device i82801b11-bridge,id=pci.1,bus=pcie.0,addr=0x1e \
    -device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.1,addr=0x1 \
    -device ahci,id=sata0,bus=pci.2,addr=0x5 \
    -usb \
    -device usb-mouse \
    -device usb-kbd \
    -drive file=/vm/clover_usb,if=none,id=drive-sata0-0-2,format=raw \
    -device ide-hd,bus=ide.2,drive=drive-sata0-0-2,id=sata0-0-2,bootindex=1 \
    -drive file=/vm/OSX.qcow2,if=none,media=disk,id=drive-sata0-0-0,format=qcow2 \
    -device ide-hd,bus=sata0.0,drive=drive-sata0-0-0,id=sata0-0-0 \
    -netdev tap,id=hostnet0,vhost=on \
    -device virtio-net-pci,vectors=0,netdev=hostnet0,id=net0,mac=[MAC address here],bus=pci.2,addr=0x6 \
    -vnc :0 \
    -device qxl-vga,id=video0,ram_size=8294400,vram_size=8294400,vgamem_mb=64,bus=pcie.0,addr=0x1

  5. Connect to the VNC

  6. Configure your Mac. When ask about network connection, choose not connected to Internet

  7. When you are at the Desktop:

    1. System Preferences, Sharing, enable Screen Sharing
    2. System Preferences, Energy Saving, Both set to Never
    3. Navigate to /Extra/, install the virtio driver
  8. Reboot

  9. Profit.

SeaBIOS (Legacy Approach)

Obtain Bootloader

Since modern OS X nowadays boot off UEFI, QEMU's default SeaBIOS (aka Legacy) will not cut it, thus there are these "Hackintosh" bootloader to fool the OS.

  1. Download the bootloader from here. You will need to register an account.
  2. Open the .pkg file with Pacifist
  3. Extract Core.pkg/usr/standalone/i386/boot. For the sake of naming convention, rename the boot file into enoch_revABC_boot, where ABC is the rev version of the .pkg file
  4. Move this file to your temporary directory (/tmp/osx/)

Obtain Kernel

Again, since OS X had moved to EFI, the traditional legacy kernel is no longer at the default location.

  1. Right click Install OS X El Capitan.app, and Show Package Contents
  2. Mount Contents/SharedSupport/InstallESD.dmg
  3. Again, open /Volumes/OS X Install ESD with Pacifist
  4. Extract /System/Library/Kernels (Yes, the whole folder) to your temporary directory (/tmp/osx/)

Create ISO

You will need a special ISO so that Enoch bootloader will load the installer.

  1. Obtain the script to create such ISO from here, put it under your temporary folder (/tmp/osx/)
  2. sudo bash create_osx_install_iso.sh
  3. If everything goes well, you should see Install_OS_X_10.11.X_El_Capitan.iso under your temporary folder

Installing OS X

Now it is time to install OS X on your KVM host.

  1. Assuming that you put your VMs in /vm

  2. Copy Install_OS_X_10.11.X_El_Capitan.iso to /vm/

  3. Copy Virtio-Net-Driver to /vm/

  4. Make a new file org.chameleon.boot.plist:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>Graphics Mode</key>
    <string>1850x1050x32</string>
    <key>Timeout</key>
    <string>2</string>
    <key>EthernetBuiltIn</key>
    <string>Yes</string>
    <key>PCIRootUID</key>
    <string>1</string>
    <key>KernelBooter_kexts</key>
    <string>Yes</string>
    </dict>

  5. Create a qcow2 file for OS X hard drive: qemu-img create -f qcow2 OSX.qcow2 40G. This command will create a 40G image. Adjust at your will

  6. Start the party:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    qemu-system-x86_64 \
    -rtc clock=vm,base=2016-01-01T16:01:21 \
    -m 16384 \
    -enable-kvm \
    -cpu core2duo,vendor=GenuineIntel \
    -rtc base=localtime \
    -smbios type=2 \
    -machine pc-q35-2.4,accel=kvm,usb=off,vmport=off \
    -kernel /vm/enoch_revABC_boot \
    -smp 8,sockets=1,cores=4,threads=2 \
    -device isa-applesmc,osk="Result from smc_read" \
    -device i82801b11-bridge,id=pci.1,bus=pcie.0,addr=0x1e \
    -device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.1,addr=0x1 \
    -device ahci,id=sata0,bus=pci.2,addr=0x5 \
    -drive file=/vm/Install_OS_X_10.11.X_El_Capitan.iso,if=none,id=drive-sata0-0-2,format=raw \
    -device ide-hd,bus=ide.2,drive=drive-sata0-0-2,id=sata0-0-2,bootindex=1 \
    -drive file=/vm/OSX.qcow2,if=none,media=disk,id=drive-sata0-0-0,format=qcow2 \
    -device ide-hd,bus=sata0.0,drive=drive-sata0-0-0,id=sata0-0-0 \
    -usb \
    -device usb-mouse \
    -device usb-kbd \
    -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16 \
    -vnc :0

  7. Connect to the VNC

  8. At the bootloader screen, enter:

    1
    -v "KernelBooter_kexts"="Yes" "CsrActiveConfig"="103"

  9. You should see the OS X Installer screen in a little while

  10. Use "Disk Utility" to partition your image.

  11. Install as usual

  12. When the installation is finished, and rebooted back to the bootloader, Ctrl+C your qemu process

Setting Up OS X

This is the insteresting part...

  1. Use this bash script to generate a random MAC address:

    1
    2
    3
    4
    5
    6
    7
    8
    function generate_mac ()  {
    hexchars="0123456789abcdef"
    echo "24:df:86$(
    for i in {1..6}; do
    echo -n ${hexchars:$(( $RANDOM % 16 )):1}
    done | sed -e 's/\(..\)/:\1/g'
    )"
    }

  2. Install hfsprogs: apt-get install hfsprogs

  3. Mount your OS X image and copy insteresting files:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    modprobe nbd
    qemu-nbd -c /dev/nbd0 /vm/OSX.qcow2
    mkdir -p /mnt/osx-kvm
    mount -t hfsplus -o force,rw /dev/nbd0p2 /mnt/osx-kvm
    mkdir /mnt/osx-kvm/Extra
    cp /vm/org.chameleon.boot.plist /mnt/osx-kvm/Extra/
    cp /vm/*.pkg /mnt/osx-kvm/Extra/
    umount /mnt/osx-kvm
    qemu-nbd -d /dev/nbd0

  4. Boot your OS X again with this:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    qemu-system-x86_64 -name hackintosh \
    -machine pc-q35-2.4,accel=kvm,usb=off,vmport=off \
    -cpu core2duo,+pae,+aes,+vmx,+smx,+ssse3,+sse4.1,+sse4.2,+3dnowprefetch,+x2apic,+xsave,+rdtscp,+popcnt,+cx16,+ht,kvm=off,vendor=GenuineIntel,hv_relaxed,hv_vapic,hv_spinlocks=0x1000 \
    -kernel /vm/enoch_revABC_boot \
    -device isa-applesmc,osk="Result from smc_read" \
    -m 16384 \
    -enable-kvm \
    -smbios type=2 \
    -realtime mlock=off \
    -smp 8,sockets=1,cores=4,threads=2 \
    -rtc base=utc,driftfix=slew \
    -global kvm-pit.lost_tick_policy=discard \
    -boot strict=on \
    -device i82801b11-bridge,id=pci.1,bus=pcie.0,addr=0x1e \
    -device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.1,addr=0x1 \
    -device ahci,id=sata0,bus=pci.2,addr=0x5 \
    -usb \
    -device usb-mouse \
    -device usb-kbd \
    -drive file=/vm/OSX.qcow2,if=none,media=disk,id=drive-sata0-0-0,format=qcow2 \
    -device ide-hd,bus=sata0.0,drive=drive-sata0-0-0,id=sata0-0-0 \
    -netdev tap,id=hostnet0,vhost=on \
    -device virtio-net-pci,vectors=0,netdev=hostnet0,id=net0,mac=[MAC address here],bus=pci.2,addr=0x6 \
    -vnc :0 \
    -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pcie.0,addr=0x1

  5. Connect to the VNC

  6. Configure your Mac. When ask about network connection, choose not connected to Internet

  7. When you are at the Desktop:

    1. System Preferences, Sharing, enable Screen Sharing
    2. System Preferences, Energy Saving, Both set to Never
    3. Navigate to /Extra/, install the virtio driver
  8. Reboot

  9. Profit.

VNC that doesn't suck

  1. Connect to the QEMU VNC again
  2. Open Network and check the IP
  3. Use other VNC client to connect

Performance

Bare metal: http://browser.primatelabs.com/geekbench3/7355237

VM (Legacy Approach, 4 cores 8 threads, 16GB, with AES): http://browser.primatelabs.com/geekbench3/7355174

VM (UEFI Approach, 4 cores 8 threads, 16GB, with AES): http://browser.primatelabs.com/geekbench3/7376928

Tuning

kernel (0): virtio-net addPacketToQueue (): Warning! head mbuf X does not math mtu-seg Y

This is caused by virtio-net's default behavior of offloading checksum. Refer to this to solve the problem

Clover doesn't boot OS X automatically [4]

  1. Mount the EFI Partitition, either under Mac or Linux
  2. Modify /EFI/CLOVER/config.plist
  3. Under Boot, add:
    1
    2
    3
    4
    <key>DefaultVolume</key>
    <string>YOUR OSX PARITITION'S NAME</string>
    <key>Timeout</key>
    <integer>5</integer>

Credit

[1] Black screen when booting from USB in clover El Capitan

[2] KVM OSX Guest 10.11 (El Capitan) with Clover

[3] Kernel panic in AppleTyMCEDriver

[4] How to Set Clover to Automatically Boot System Drive

1
Weightless Theme
Rocking Basscss
RSS