Installing macOS Mojave 10.14 on Proxmox 5.4

With the release of macOS Catalina 10.15, this tutorial is now obsolete! Please check out the new Catalina tutorial here.

This tutorial for installing macOS Mojave has been adapted for Proxmox 5.4 from Kholia’s GitHub project for installing into vanilla KVM. There is more documentation there which will help out with enabling extra features and diagnosing problems!


I’ll assume you already have Proxmox 5.4 installed. You also need a real Mac available in order to fetch the OSK key.

Your Proxmox host computer’s CPU must support SSE 4.2, so for Intel your CPU must be at least as new as Nehalem, which was the first CPU generation to bear the “Core” i5/i7 branding. Older CPUs will cause the finder to repeatedly crash after installation completes (with an Illegal Instruction exception in the graphics code).

Apparently modern AMD CPUs also support SSE 4.2 and can be used with this guide without any modification (maybe Bulldozer and certainly Ryzen), but I haven’t tested this myself.

First step: Create an installation ISO

On a Mac machine, download and run in a terminal to download the Mojave recovery image from the Apple software distribution server:

This results in a ~460MB “BaseSystem.dmg” file in the current directory. Convert that dmg into an “iso” like so:

hdiutil convert BaseSystem.dmg -format RdWr -o Mojave-installer.iso
mv Mojave-installer.iso.img Mojave-installer.iso

This is actually a raw disk image, not a true ISO, but Proxmox has better tools for picking and re-using ISO images than disk images. Upload the “ISO” to your Proxmox server’s ISO store (typically /var/lib/vz/template/iso).

It is possible to run this download script on Linux instead. In that case, you need to install the “dmg2img” package on your system, and replace the “hdiutil” command invocation with:

dmg2img BaseSystem.dmg Mojave-installer.iso

Prepare a Clover image

We’ll be using Clover as a bootloader for Mojave.

Download this Clover disk image (that I built using kholia’s build script from Clover r4920), unpack it, and upload it to Proxmox’s ISO store at /var/lib/vz/template/iso. Although it has a .iso file extension, this is actually a hard disk image.

Fetch the OSK authentication key

macOS checks that it is running on real Mac hardware, and refuses to boot on third-party hardware. You can get around this by reading an authentication key out of your real Mac hardware (the OSK key). Run the first bit of C code from this page (you’ll need XCode installed) and it’ll print out the 64 character OSK for you. Make a note of it.

Every Mac uses the same OSK, so don’t be surprised if it doesn’t look like a random string!

Create the VM

From the Proxmox web UI, create a new virtual machine as shown below.

In the Options page for the VM, ensure that “use tablet for pointer” is set to “Yes”.

In the Hardware page for the VM, add a second DVD drive at IDE0, set it to use your Mojave-installer.iso.

Don’t try to start the VM just yet. First, SSH into your Proxmox server so we can make some edits to the configuration files.

Edit /etc/pve/qemu-server/YOUR-VM-ID-HERE.conf (with nano or vim). Add this line, being sure to substitute the OSK you extracted earlier into the right place:

args: -device isa-applesmc,osk="THE-OSK-YOU-EXTRACTED-GOES-HERE" -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2

We’re telling macOS that the CPU is Penryn (it doesn’t seem to like booting otherwise), but we’re enabling all the new CPU features found in Nehalem which macOS will require, plus some optional features found in later generations (AVX/AES).

Find the line that define the two “ISOs” (ide0 and ide2), and remove the “,media=cdrom” part from them. Add “,cache=unsafe” in its place. This will treat these as hard disks rather than DVD drives.

Save your changes, return to the Options tab, and change the boot order to put IDE2 (the Clover image) first. Your final VM configuration file should resemble this:

args: -device isa-applesmc,osk="..." -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2
balloon: 0
bios: ovmf
boot: cdn
bootdisk: ide2
cores: 4
cpu: Penryn
efidisk0: vms:vm-144-disk-1,size=128K
ide0: isos:iso/Mojave.iso,cache=unsafe
ide2: isos:iso/clover-r4920.iso,cache=unsafe
machine: q35
memory: 8192
name: mojave
net0: vmxnet3=xx:xx:xx:xx:xx:xx,bridge=vmbr0,firewall=1
numa: 0
ostype: other
sata0: vms:vm-144-disk-0,cache=unsafe,size=64G
smbios1: uuid=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
sockets: 1
vga: vmware

Configure Proxmox

On Proxmox, run “echo 1 > /sys/module/kvm/parameters/ignore_msrs” to avoid a bootloop during macOS boot. To make this change persist across Proxmox reboots, run:

echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u

You must now installpatched version of Proxmox’s OVMF library in order to be able to boot Mojave.

Install Mojave

Now start up your VM.

Go to the Console tab, quickly hit Escape or F2 at the Proxmox logo to enter the OVMF configuration. If your keyboard doesn’t work, leave the Console tab, stop the VM, start the VM, then re-enter the console tab.

Follow the steps above to set the screen resolution to 1920×1080 and “reset” to apply the new settings (not “continue”). This step is required to avoid scrambled graphics on boot and a hang (Clover resolution must match OVMF resolution, or else the Apple logo will be off-centre and the progress bar will be smeared across the screen, resulting in a lockup).

Note that in future you may find that when initially started, your VM doesn’t properly apply the the 1920×1080 screen resolution until you hit “Restart Computer” in Clover when the Clover menu appears (or “Reset” on the VM). You’ll notice this happening when the “Proxmox” logo fills a large area of the screen on boot due to the low resolution.

It should now boot into Clover.

Press enter to boot the “Boot macOS Install from macOS Base System” entry and the installer should appear. Choose your language.

Our virtual hard drive needs to be erased/formatted before we can install to it, so select the Disk Utility option. Follow the steps below to format the disk:

Now we’re ready to begin installation!

After the first stage of installation, the VM should reboot itself and automatically continue installation by booting from the hard drive, then reboot itself a second time and automatically boot from “filevault prebooter”. Note that an Internet connection is required during installation, as macOS needs to download Mojave.

Answer the initial install questions, and you’ll be logged on! (Note that you’ll probably want to hold off on logging into your iCloud account until you’ve configured your SMBIOS to your liking in Clover Configurator)

Make the Clover install permanent

We’re currently booting using Clover from the attached Clover ISO. Let’s install that to the hard drive instead. Pop open Terminal and run “diskutil list” to see what drives we have available.

Use “sudo dd if=<source> of=<dest>” to copy the “EFI” partition from the Clover CD and overwrite the EFI partition on the hard disk. The Clover CD is the small disk with the “linux filesystem” on it, and the main hard disk is the one with the large Apple_APFS “Container” partition on it.

In my case these EFI partitions ended up being called disk1s1 and disk0s1 respectively, so I ran “sudo dd if=/dev/disk1s1 of=/dev/disk0s1” (N.B. if you get these names wrong, you will erase the wrong disk and you’ll have to start the installation over again!).

Now shut down the VM, and remove both the Clover and the Mojave installer drives from the Hardware tab. On the Options tab, edit the boot order to place SATA0 as the first disk. Boot up. If everything went well, you should see the Clover boot menu, and you can select “Boot macOS from Main” to boot Mojave.

Choose “boot macOS from Main”

Sleep management

I found that I was unable to wake Mojave from sleep using my mouse or keyboard. You can either disable system sleep in Mojave’s Energy Saver settings to avoid this, or you can manually wake the VM up from sleep from Proxmox by running:

qm monitor YOUR-VM-ID-HERE 

“Prohibited” sign on boot

On a regular Hackintosh this is typically a sign that the boot drive can’t be read, but that situation is difficult to encounter with this VM setup. Nevertheless, I receive a “prohibited” sign during boot in perhaps 1 out of 20 system boots at random (maybe a timing bug?) If this happens, just hit “reset” for the VM to retry  (no need to stop and start).

If you get it persistently, something is going wrong with the boot. You can boot macOS in “verbose” mode by hitting space on the macOS option in Clover and ticking the verbose option. This’ll give you a log during booting that can narrow down when the problem occurs.

Editing your Clover/EFI settings

You can use the Clover Configurator tool (Global Edition) to edit your Clover “config.plist” configuration file, which is stored in the hard drive’s EFI partition. This tool should mount the EFI partition for you. If you want to mount it without using Clover Configurator, first check the device name of the EFI partition in the terminal:

~$ diskutil list
/dev/disk0 (external):
0: GUID_partition_scheme 512.1 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS Main 511.8 GB disk0s2

Then you can mount it like so:

sudo mkdir /Volumes/EFI
sudo mount -t msdos /dev/disk0s1 /Volumes/EFI

Video performance

Because there is no guest video acceleration available for macOS, video performance is poor.

In Google Chrome in the guest you will need to toggle off the setting to “use hardware acceleration when available” to improve issues with elements not being drawn or flickering (especially video). Safari may be a better choice.

macOS’s built in “Screen Sharing” feature offers dramatically better framerates and latency than Proxmox’s browser-based VNC console, so if you have a real Mac to act as a viewing console, you can enable that in the VM’s “Sharing” settings and connect to the VM using the Screen Sharing app from your Mac instead:

Apparently Screen Sharing is also compatible with VNC clients like RealVNC, so you should be able to connect to it from Linux or Windows consoles using RealVNC.

VMWare Fusion for Mac includes macOS guest drivers that support the VMWare video adapter that QEMU emulates. After installing Fusion, you can find these by right-clicking Fusion, clicking “show package contents”, then browsing to “Contents/Library/isoimages”. Double click “darwin.iso” to open it, then run the “Install VMWare Tools” option to install the driver, and restart. You can check that the driver has loaded by running “kextstat | grep -v”.

Unfortunately installing these VMWare drivers appears to offer little or no improvement in video performance – they may just be designed to provide basic framebuffer functionality.

The real magic bullet for video performance is to pass through a compatible video card using PCIe passthrough (though presently Mojave does not support most NVidia cards). This offers near-native performance. You can read more about how I’m using PCIe passthrough on my own installation here.

USB passthrough

Since I want to use this as my primary computer, I want to use a USB keyboard and mouse plugged directly into Proxmox, rather than sending my input through the web VNC console.

Proxmox has good documentation for USB passthrough. Basically, run “qm monitor YOUR-VM-ID-HERE”, then “info usbhost” to get a list of the USB devices connected to Proxmox:

qm> info usbhost
Bus 3, Addr 12, Port 6, Speed 480 Mb/s
Class 00: USB device 8564:1000, Mass Storage Device
Bus 3, Addr 11, Port 5.4, Speed 12 Mb/s
Class 00: USB device 04d9:0141, USB Keyboard
Bus 3, Addr 10, Port 5.1.2, Speed 12 Mb/s
Class 00: USB device 046d:c52b, USB Receiver
Bus 3, Addr 9, Port 14.4, Speed 12 Mb/s
Class 00: USB device 046d:c227, G15 GamePanel LCD
Bus 3, Addr 8, Port 14.1, Speed 1.5 Mb/s
Class 00: USB device 046d:c226, G15 Gaming Keyboard

In this case I can add my keyboard and mouse to USB passthrough by quitting qm, then running:

qm set YOUR-VM-ID-HERE -usb1 host=04d9:0141
qm set YOUR-VM-ID-HERE -usb2 host=046d:c52b

This saves the devices to the VM configuration for you. It’s possible to hot-add USB devices, but I just rebooted my VM to have the new settings apply.

You can also pass through USB devices by passing through an entire USB controller using Proxmox’s PCIe passthrough feature.

381 thoughts on “Installing macOS Mojave 10.14 on Proxmox 5.4”

  1. Hi Nicholas,
    thank you very much, installation runs smooth. Have you tried GPU passthrough?

    1. I’ve heard that the Nvidia drivers don’t offer acceleration yet (even after hacking them to force installation on the unsupported OS). I think we’ll have to wait for some time after the retail release before we get those.

      I have an AMD card I could try, I’ll report back with details.

      1. Hi Nicholas,

        At the end of the guide and in some comments, you talk about to use this VM to make it your primary computer.
        So on Firefox and Atom I have some strange graphics behavior (you too ?) did you find anything to improve the performances of the VM ?

        I have no GPU passthrough (no GPU card on the host).

        1. Without a passthrough GPU you’ll have no graphics acceleration, which as far as I know dooms you to slow glitchy graphics.

          1. Ok i see, you said “I have an AMD card I could try, I’ll report back with details.” can you tell us about that ?

          2. Yep I’m now running Mojave with an R9 280x, however it has visual glitches and kills the host the second time the VM is booted. I’ve had the same problems with this card in previous macOS versions. I believe there are much better supported cards available now.

  2. I was able to use GPU passthrough – but I haven’t found a solution to the frequently crashing finder – maybe I run proxmox on a Westmere CPU?

      1. Although being root I get a “-bash: /proc/cpuinfo: Permission denied”??
        Anyway: I am using an Intel Xeon X5660…

        1. That’s bizarre, I’ve never seen an error like that while trying to access cpuinfo. Are you missing the “cat” on the start of that command?

          Your CPU *should* be supported, because it’s a die-shrink of Nehalem and I’d expect it to have the same features.

          You might have to cat /proc/cpuinfo | grep flags and check if it lists ssse3 (note, three ‘s’s), sse4_2 and popcnt (the new features that Nehalem introduced over Penryn).

  3. Shame on me: to dumb for copy/paste!
    12x model name : Intel(R) Xeon(R) CPU X5670 @ 2.93GHz
    flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcnt aes lahf_lm pti tpr_shadow vnmi flexpriority ept vpid dtherm ida arat
    … everything there.
    Please ignore my stupid response.

  4. I’ve followed all steps above but for some bizarre reasons can’t get Clover to recognize the Mojave iso mounted on IDE0. I’m on the latest version of Proxmox (5.2-5) with all updates applied.
    Has anything changed recently that could cause this issue?

    1. And of course, right after I posted this comment, I found the solution.

      I mistakenly changed “media=cdrom” to “cache=unsafe” for BOTH ide0 and ide2. This is only necessary for ide2 (Clover), not ide0 (Mojave).

      Thanks for the great tutorial!

    1. I haven’t been able to get this working yet. I think there is an EFI driver needed for the keyboard.

      You can boot into the recovery mode to unlock the disk I believe (that’s a full copy of the OS so it supports the keyboard properly).

  5. Hi,

    i have problem – on booting I get error message. Do you have any idea how to solve it?

    kvm: -device ide-hd,bus=ide.0,unit=1,drive=drive-ide1,id=ide1: Can’t create IDE unit 1, bus supports only 1 units
    TASK ERROR: start failed: command ‘/usr/bin/kvm -id 101 -name MacOSX …’ failed: exit code 1

    1. From the message it sounds like you might have two ide devices on the same bus (e.g. 0 + 1). The second IDE drive needs to be assigned to number 2 rather than 1. (drive #1 would be the slave of #0, which isn’t supported).

        1. Edit the config file for the VM using SSH (it’s in /etc/pve/qemu-server) and rename the config line for ide1 to ide2.

  6. Now it looks like this – so what I need to change – because there is already ide2…?

    ide0: local:iso/osx.iso,cache=unsafe,size=5600M,media=cdrom
    ide1: local-lvm:vm-101-disk-1,cache=unsafe,size=64G
    ide2: local:iso/clover-r4428-amd64.iso,cache=unsafe

    Thanks in advance!

  7. Now it’s:

    ide0: local:iso/HighSierra.iso,cache=unsafe,size=5600M,media=cdrom
    ide1: local-lvm:vm-101-disk-1,cache=unsafe,size=64G
    sata0: local:iso/clover-r4428-amd64.iso,cache=unsafe

    and error still appears:
    kvm: -device ide-hd,bus=ide.0,unit=1,drive=drive-ide1,id=ide1: Can’t create IDE unit 1, bus supports only 1 units

  8. And there is next problems…

    1) Keyboard is ultra sensitive – it works, but single keypress effect 3-4 chars in system,
    2) After first step of installation and reboot it freezes on apple logo. I have double checked resolution, I try to setup it just before restart, I try to reboot after change – nothing helps…

    Aby suggestions?

    1. It sounds like you have forgotten to add the “cpu” argument to the args, which is required for proper timing, so the clock runs fast and the key repeat is accelerated.

      1. I have (from beginning) setup 1 socket, 4 cores, Penryn. Is there any other option?

        Is it connected with boot problem or its different problem?

        1. You are missing this in the “args” in your VM config file:

          -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check

  9. I installed HighSierra from iso and just having this enoch_rev2898_boot.
    I was enable to install Mojave like this from iso, but after the installation the os disk is not available in the boot menu (I can only see the install media)
    Do you know how this can be resolved?
    PS did not use clover things etc.

  10. Diving straight in as a new Proxmox user I decided to follow this guide and install the now launched Mojave. Having checked my working twice now I can’t find any mistakes but find myself stuck on the apple logo right at the stage of selecting boot macOS install from clover. Seems to sit there indefinitely – longer than I have patience for! with no errors visible. Any suggestions welcomed – even if it’s just to look elsewhere for error logs!

    Proxmox syslog shows this (Mojave is VM 103):
    Sep 30 15:44:28 pve systemd[1]: Started 103.scope.
    Sep 30 15:44:28 pve systemd-udevd[23051]: Could not generate persistent MAC address for tap103i0: No such file or directory
    Sep 30 15:44:29 pve kernel: device tap103i0 entered promiscuous mode
    Sep 30 15:44:29 pve kernel: vmbr0: port 4(tap103i0) entered blocking state
    Sep 30 15:44:29 pve kernel: vmbr0: port 4(tap103i0) entered disabled state
    Sep 30 15:44:29 pve kernel: vmbr0: port 4(tap103i0) entered blocking state
    Sep 30 15:44:29 pve kernel: vmbr0: port 4(tap103i0) entered forwarding state
    Sep 30 15:44:29 pve pvedaemon[14600]: end task UPID:pve:000059FD:0386B2A0:5BB0E14C:qmstart:103:root@pam: OK
    Sep 30 15:45:00 pve systemd[1]: Starting Proxmox VE replication runner…
    Sep 30 15:45:00 pve systemd[1]: Started Proxmox VE replication runner.
    Sep 30 15:45:13 pve pvedaemon[14600]: successful auth for user ‘root@pam’
    Sep 30 15:46:00 pve systemd[1]: Starting Proxmox VE replication runner…
    Sep 30 15:46:00 pve systemd[1]: Started Proxmox VE replication runner.
    Sep 30 15:46:15 pve pvedaemon[14600]: starting task UPID:pve:000064B2:0386DC71:5BB0E1B7:vncproxy:103:root@pam:
    Sep 30 15:46:15 pve pvedaemon[25778]: starting vnc proxy UPID:pve:000064B2:0386DC71:5BB0E1B7:vncproxy:103:root@pam:
    Sep 30 15:46:23 pve pvedaemon[14600]: end task UPID:pve:000064B2:0386DC71:5BB0E1B7:vncproxy:103:root@pam: OK

    Here’s my .conf file (OSK edited):
    machine: pc-q35-2.11
    bios: ovmf
    boot: cdn
    bootdisk: ide2
    cores: 4
    cpu: Penryn
    args: -device isa-applesmc,osk=”64proprietarychars” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
    efidisk0: ZFS1:vm-103-disk-1,size=128K
    ide0: local:iso/Mojave.iso,media=cdrom,size=7000M
    ide2: local:iso/clover-r4542-amd64.iso,cache=unsafe
    memory: 8192
    name: MacOSMojave
    net0: e1000-82545em=52:DE:77:8B:DB:DE,bridge=vmbr0
    numa: 0
    ostype: other
    sata0: ZFS1:vm-103-disk-0,cache=unsafe,size=64G
    scsihw: virtio-scsi-pci
    smbios1: uuid=9cb82b25-d0be-4e32-8448-fd75b57f7a25
    sockets: 1
    vga: std

    1. Your config looks good, try pressing space on the installer option in Clover and choosing Verbose Boot, this’ll reveal at what point it locks up.

      I’ll probably be rewriting this tutorial soon for the final release of Mojave, so if you get completely stuck, come back here later and see if I have figured everything out :).

    2. I’ve updated the tutorial now for the final release of Mojave, and I didn’t find any surprises (though I am now including a newer release of Clover, try that one).

      Make sure that you have installed the patched UEFI package into Proxmox, it causes a hang on Mojave boot if it’s missing.

      1. That’s it – had missed the instruction to patch UEFI, and even on verbose boot I didn’t get any error messages! Once applying the patched file I was up and running in no time at all. Many thanks!

  11. Just wanted to throw a feedback that it is also working with the live version. However I had to use a different strategy to get the .iso.

    Thanks mate for the nice howto.

  12. First, thanks take the time writing these up. I’d used your guide to install High Sierra before with great luck before (on a different Proxmox host machine).

    I’m having trouble with Mojave, however, running into an issue with a boot loop. This is the error message I’m getting:

    Start ProcessOptions
    End ProcessOptions
    RegisterRestartDataProtocol: called. Ox7dI4ad9O
    Restartnata protocol installed successfully.
    Start SetConsoleMode
    End SetConsoleMode
    Start ReadllernelCache
    End ReadllernelCache
    Start UncompressllernelCache
    End UncompressllernelCache
    Start CalculateAdler32
    End CalculateAdler32
    Start LoadllernelFromStream
    End LoadllernelFromStream
    Start InitBootStruct

    root device uuid is ‘ACB39C20-0C7B-3B0C-OB03-79EAOBBE3302.
    End InitBootStruct
    Start LoadRAMDisk
    End LoadRAMDisk
    Start FinalizeBootStruct
    Start RandomSeed
    End RandomSeed

    Some searching seems to suggest it might be a ram issue? I’m really not sure though, or how to fix it. If you had any suggestions, I’d appreciate it.

    1. Yeah, dying so early seems to mean that OsxAptioFix3Drv failed to create a workable memory layout. This is unusual on a VM however since we should all have the same emulated address space layout.

      Check that you have the required Proxmox version, your “machine” line is correct, and your CPU has the required features (SSE4.1 is most notable). Redownload my Clover image just in case.

      How much RAM are you giving the VM?

  13. Great set of instructions! Thank you for taking the time.

    2 questions / problems that I’m having if you can help.

    1. Do you need to set the OVMF resolution at boot-up everytime or is there a way to make this configuration permanent?
    – I’m able to set it to 1024×768 and press reset to avoid scrambled display but I need to do this every time starting the VM. Can this be set?
    – Also is this is the only way to increase resolution beyond 1024×768?

    2. I’m experiecning a VM lock-up / hang many times after the VM has been running for a bit. No crash but a complete lock with no mouse/keyboard input possible. Any ideas?

    Thanks again!

    1. Make sure you have added the EFI disk to allow it to store the UEFI settings permanently.

      Yes, to increase screen resolution further, you need to use Clover Configurator to set your Clover GUI response higher, then set UEFI resolution to match.

      Not sure on those lock-ups, sorry, unless it’s dying when it goes into sleep mode (disable sleep in power management settings)

    2. Hi,

      I have the same problems, sleep is disabled in Mojave but the VMs lock-up one time per day or more.

      I can solve this issue using Pause and resume in Proxmox GUI, maybe its a problem related with Sleep in OSX with my CPU (Intel(R) Xeon(R) CPU E5-2650L 0 @ 1.80GHz).

      Any Ideas?


      1. My CPU’s the E5-2670 and I haven’t had any problems. Do you have any passthrough devices? I’d look to those as the source of trouble.

        Also double check dmesg when the lockup happens for clues.

        1. Yes, I have 3 VM with pci passthrough in three GPU GT710. This problem affects to all VMs. I will check dmesg looking for info.

          Thanks Nicholas.

          1. My GPU Passtrough is a little bit different than yours.

            In my grub config, I’m blacklisting drivers and modules and I’m using “igfx_off iommu=pt”:


            GRUB_CMDLINE_LINUX_DEFAULT=”quiet intel_iommu=on,igfx_off iommu=pt rd.driver.blacklist=grub.nouveau rcutree.rcu_idle_gp_delay=1 video=efifb:off modprobe.blacklist=nouveau,lbm-nouveau,nvidia,nvidiafb,snd_hda_intel,snd_hda_codec_hdmi,snd_hda_codec,snd_hda_core,radeon,amdgpu,pcspkr”

            The vfio modules:



            In blacklist.conf I have only the pcspkr module (inherited form my default proxmox config):


            blacklist pcspkr

            The KVM config I have also the setting “report_ignored_msrs=0”:


            options kvm ignore_msrs=1
            options kvm report_ignored_msrs=0

            The kvm-intel.conf is like yours:


            # Nested VM support (not used by macOS)
            options kvm-intel nested=Y

            And I’m using vfio.conf file instead vfio-pci.conf for enter my pci ids:


            options vfio-pci ids=10de:128b,10de:0e0f,8086:1d20 disable_vga=1

            I have three GPU NVIDIA GT710 with same ids “10de:128b” for video, and “10de:0e0f” for HDMI audio, and the Sound card with “8086:1d20”.

            With lspci I found the ids:

            lspci | grep -i “NVIDIA”

            03:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 710B] (rev a1)
            03:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)
            04:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 710B] (rev a1)
            04:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)
            81:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 710B] (rev a1)
            81:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)

            And, in the VM config, I’m using:

            hostpci0: 03:00.0,pcie=1,x-vga=on,romfile=GT710.bin
            hostpci1: 03:00.1,pcie=1

            hostpci0: 04:00.0,pcie=1,x-vga=on,romfile=GT710.bin
            hostpci1: 04:00.1,pcie=1
            hostpci2: 00:1b.0,pcie=1

            hostpci0: 81:00.0,pcie=1,x-vga=on,romfile=GT710.bin
            hostpci1: 81:00.1,pcie=1

            Only Audio for the VM1, and HDMI audio for the others (in VM1 I don’t have a HDMI audio compatible monitor).

            Maybe, some config is wrong?


          2. A thing more, I’m not using UEFI BIOS in DELL host, I set BIOS compatibility mode when I installed Proxmox, I’m not sure if not use UEFI could be a problem…

  14. I’m having the same issue getting stuck after “End RandomSeed”. I have the most recent version of Clover that you had attached, with a fresh install of Proxmox 5.2. I have it configured for 64G RAM and dual 6 core CPUs (running as sole guest on a dual 6 core xeon machine). I’ve checked and my cpus support SSE4.1. Any ideas? – desperate to get this working!

    VM Config:
    args: -device isa-applesmc,osk=”redacted:)” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
    balloon: 0
    bios: ovmf
    boot: cdn
    bootdisk: ide2
    cores: 6
    cpu: Penryn
    efidisk0: local-lvm:vm-100-disk-2,size=128K
    ide0: local:iso/Mojave.iso,media=cdrom,size=6G
    ide2: local:iso/clover-r4674-amd64.iso,cache=unsafe
    machine: pc-q35-2.11
    memory: 65536
    name: macServer
    net0: e1000-82545em=42:A0:CB:B1:EA:34,bridge=vmbr0
    numa: 0
    ostype: other
    sata0: local-lvm:vm-100-disk-1,size=250G
    scsihw: virtio-scsi-pci
    smbios1: uuid=0a1a565e-f14d-4212-8b15-5b2d89b48234
    sockets: 2
    vga: std

    1. Try passing through a different core count (like 4), it doesn’t seem to like some combinations (probably something that could be fixed by changing the CPU ID that Clover reports).

      Make sure you’ve installed the patched firmware deb into Proxmox.

  15. Has anyone noticed that the os x guest doesn’t appear to fully utilize the underlaying hardware? In my case when I look at my guest CPU utilization while performing an intensive task (video encoding for example) the guest appears to be utilizing 100% CPU. During the same time when I look at the host utilization in proxmox it appears to be lower. Its hard to see for certain. This is a single guest on the host.

    1. You’re probably just seeing the difference in the way that CPU usage is reported. macOS calls one core being fully saturated “100%” usage, but with a 4 core guest, Proxmox would call that only 25% usage.

      I can happily use “98% of 32 CPUs” as reported by Proxmox when running a CPU benchmark in the guest.

  16. Hi,

    Many thanks for this amazing how to ! I was able to have a machine up and running in no time !

    I entended to use this VM as a MacOS server cache, and time machine backup. But, I’m not able to activate the cache content (for iCloud and so) in preference/sharing…

    Do you have any ideas with is it not working ? I didn’t find any clues on internet


    1. I tried activating it from the command line, and it shows a proper error message:

      $ sudo AssetCacheManagerUtil activate
      2018-10-25 20:47:39.911 AssetCacheManagerUtil[37766:1427282] Failed to activate content caching: Error Domain=ACSMErrorDomain Code=5 “virtual machine” UserInfo={NSLocalizedDescription=virtual machine}

      Looks like it refuses to enable the caching if it detects you’re running under a virtual machine, very curious.

      It’s possible that you can avoid having the VM detected by macOS by setting “vmware-cpuid-freq=off” in the args (instead of “on”) and “kvm=off”. However in this case the timing in the guest will be off (you’ll probably notice window animations playing at the wrong speed and the realtime clock will drift etc), so it might only be useful for non-interactive usage.

      1. Hum,

        Thanks for the quick reply.

        I tried with kvm=off and vmware-cpuid-freq with no success, same error !

        Maybe I can do something with Clover ? FakeSMC or something

  17. Hi,

    For me, no booting from clover ISO :(.
    Proxmox 5.2, Installing the fixed OVMF.

    I used my Mojave.iso and Clover.iso to build a VM in virtual box on one iMac and Ubuntu hosts, so I think is not the ISO files. I don’t know where is my mistake. I also tried with this clover, but no boot either.


      1. No Clover menu and i test without media=cdrom like this :
        ide0: local:iso/10.14_Mojave.iso,size=8000M
        ide2: local:iso/Clover.iso,cache=unsafe,size=13050K
        But Shell EFI is the only one.

        Thanks for the help

          1. Still a Shell EFI, how I can check if your fixed OVMF is really installed maybe I have some errors here…
            Because when I change the resolution in the bios, and reset. (i try to remake and re install)
            When I reboot is the default settings getting back. Anyway, my main problem is no boot from clover…
            Is your CD/HDD is IDE or SATA ? and witch numbers ?

            Thanks for your help.

          2. On Proxmox, run dpkg -l pve-edk2-firmware. You need to see 1.20180612-1, and not 1.20181023-1, which is a newer version from Proxmox that I haven’t released a patch for yet.

            Make sure you’ve added an “EFI Disk” to your virtual machine, because it’s needed to remember your screen resolution settings.

            IDE and SATA both work, but use what the tutorial suggests, because that’s had more testing.

          3. Yes is was the right one :
            pve-edk2-firmware 1.20180612-1

            Args added…
            bios: ovmf
            boot: cd
            bootdisk: ide2
            cores: 2
            cpu: Penryn
            efidisk0: local-lvm:vm-114-disk-1,size=128K
            ide0: local:iso/Mojave.iso,size=8000M,media=cdrom
            ide2: local:iso/Clover.iso,cache=unsafe,size=13050K
            machine: pc-q35-2.11
            memory: 4096
            name: macOS-Mojave
            net0: e1000-82545em=A2:61:00:E7:92:80,bridge=vmbr0
            numa: 0
            ostype: other
            sata0: local-lvm:vm-114-disk-0,cache=unsafe,size=50G
            scsihw: virtio-scsi-pci
            smbios1 uuid …
            sockets: 1
            vga: std

            Hard to find the mistake.

          4. Yes it’s beacause I use my clover, so i change to use your clover.iso.
            from :
            ide2: local:iso/clover-r4674-amd64.iso,media=cdrom,size=256M
            ide2: local:iso/clover-r4674-amd64.iso,cache=unsafe,size=256M
            And after commit save, I used the last menu boot manager to add new value to boot on the disk with clover and after reset it’s a boot !
            I dont kown why my clover is not booting but i think the EFI disk is not saving configs for me.
            Thanks a lot !

  18. Hi Nicholas,

    I was able to set everything up but when I booted the installing from clover it will load the apple symbol and then I will get the crossed circle half way through loading in.

    Did I miss something?



    1. Hit space at the Clover screen and enable the verbose mode so you can see what it’s stuck on. Double check that you installed the required firmware deb package.

      1. Hi Nicholas,

        I think its gets stuck when looking for root device, and I think I installed the right .deb files. I used the one from the link you suggested the pve-edk2_1.20180612-1_all.deb.

        Other then that I’m out of ideas what it might be.



  19. Do not upgrade to 10.14.X (for me it’s 10.14.1) you will lose the access to the disk with the crossed circle half way through loading on boot after install.

      1. I found why, it’s the backup I made do this on the VM.
        And when I restore it’s was working again, but I have scrambled graphics on boot and session…
        Maybe it’s more don’t use backup mode “stop”.

          1. Yes I already try to change it but i have rebuild a fresh one with no backup this time.
            Anyway, did you will make a clover build guide?
            (Since my clover is only boot in virtualbox… and yours is 256M not like me 13M…)
            Thanks a lot for your help this tutorial is very cool ! thanks !

  20. I’m not getting the “Boot macOS Install from Install macOS Mojave” icon in Clover. Nothing shows up when I stop/start after the resolution change it just has the original menu items still.

      1. args: -device isa-applesmc,osk=”…” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
        bios: ovmf
        boot: cdn
        bootdisk: ide2
        cores: 4
        cpu: Penryn
        efidisk0: local-lvm:vm-108-disk-1,size=128K
        ide0: local:iso/Mojave.iso,media=cdrom,size=6G
        ide2: local:iso/clover-r4674-amd64.iso,cache=unsafe
        keyboard: en-us
        machine: pc-q35-2.11
        memory: 4096
        name: mojave001
        net0: e1000-82545em=2A:B3:33:ED:95:F2,bridge=vmbr0
        numa: 0
        ostype: other
        sata0: local-lvm:vm-108-disk-0,cache=unsafe,size=64G
        scsihw: virtio-scsi-pci
        smbios1: uuid=869fb78e-9f1e-4e62-be96-4ce56eb1db34
        sockets: 1
        vga: std
        vmgenid: ce623c6b-5eb6-489b-9f09-da81d97be6ab

          1. The ISO would have to be pretty malformed to not appear as a boot option, what do you get if you run “file Mojave.iso” from Proxmox’s ISO directory.

      2. This was my issue, but i didn’t accidentally remove the media=cdrom, your current guide says to do it.

        “Find the line that define the two “ISOs” (ide0 and ide2), and remove the “,media=cdrom” part from them. Add “,cache=unsafe” in its place. This will treat these as hard disks rather than DVD drives.”

        1. That instruction is correct as both of the images are now hard disk images, not real ISOs. In an older version of the tutorial the installer was a real ISO.

  21. root@proxmox:/var/lib/vz/template/iso# file Mojave.iso
    Mojave.iso: Apple Driver Map, blocksize 512, blockcount 12582912, devtype 0, devid 0, driver count 0, contains[@0x200]: Apple Partition Map, map block count 3, start block 1, block count 63, name Apple, type Apple_partition_map, valid, allocated, contains[@0x400]: Apple Partition Map, map block count 3, start block 64, block count 262144, type Apple_Free, contains[@0x600]: Apple Partition Map, map block count 3, start block 262208, block count 12320704, name disk image, type Apple_HFS, valid, allocated, readable, writable, mount at startup

  22. Very nice post, extremely detailed w/o room for an error.
    I am however facing some strange behavior when EFI disk is created on a SSD – I get no console picture. All I get is “Guest has not initialized the display (yet)” and then just black screen. It took me a lot of trial and error until I finally recreated EFI on a regular HDD array, after that everything started to work as it should. No errors from proxmox, nothing in the log file, just black screen. Weird…

  23. Hi, thank you for this awesome article. I’m having a problem initially starting the VM. The following error is thrown on startup:

    kvm: -device piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2: Bus 'pci.0' not found
    TASK ERROR: start failed: command '/usr/bin/kvm -id 103 -name mac -chardev 'socket,id=qmp,path=/var/run/qemu-server/103.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -pidfile /var/run/qemu-server/ -daemonize -smbios 'type=1,uuid=ecbe0dc6-c752-4c50-b0b5-10778d5a9fc7' -drive 'if=pflash,unit=0,format=raw,readonly,file=/usr/share/pve-edk2-firmware//OVMF_CODE.fd' -drive 'if=pflash,unit=1,format=raw,id=drive-efidisk0,file=/dev/pve/vm-103-disk-1' -smp '4,sockets=1,cores=4,maxcpus=4' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' -vnc unix:/var/run/qemu-server/103.vnc,x509,password -cpu 'Penryn,+kvm_pv_unhalt,+kvm_pv_eoi,enforce,vendor=GenuineIntel' -m 24576 -object 'memory-backend-ram,id=ram-node0,size=24576M' -numa 'node,nodeid=0,cpus=0-3,memdev=ram-node0' -device '...' -smbios 'type=2' -cpu 'Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check' -device 'vmgenid,guid=0ddd1797-1920-480a-bc20-bc77a703bf65' -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'VGA,id=vga,bus=pcie.0,addr=0x1' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi '' -drive 'file=/var/lib/vz/template/iso/Mojave.iso,if=none,id=drive-ide0,media=cdrom,aio=threads' -device 'ide-cd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=100' -drive 'file=/var/lib/vz/template/iso/clover-r4674-amd64.iso,if=none,id=drive-ide2,cache=unsafe,format=raw,aio=threads,detect-zeroes=on' -device 'ide-hd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2' -device 'ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7' -drive 'file=/dev/pve/vm-103-disk-0,if=none,id=drive-sata0,cache=unsafe,format=raw,aio=threads,detect-zeroes=on' -device 'ide-hd,bus=ahci0.0,drive=drive-sata0,id=sata0,bootindex=201' -netdev 'type=tap,id=net0,ifname=tap103i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown' -device 'e1000-82545em,mac=D6:4E:B0:68:64:67,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -machine 'type=pc-q35-2.11'' failed: exit code 1

    I suspect this is related to usage of “pc-q35-2.11”. When switching this to plain q35 the vm starts and I can access UEFI via console, but I guess I will have issues later on with osx.

    Any ideas what kind of issue this might be? Thanks

    1. That’s weird, it looks like Proxmox is choosing the piix3 chipset instead of ich9. In the VM settings double check that you have the OS type set to “other” and the BIOS set to OMVF (UEFI).

      1. Thanks for getting back to me, @Nick. Yep, OS type is set to “tore” and I’ve selected OMVF (UEFI) as the Bios.
        I have a couple of other VMs running (mostly linux and windows) and also preconfigured the system for gpu passthrough. I’m wondering if any of those modifications messed up the system; but I don’t believe so.

        Do you have a subscription for Proxmox? Maybe the packages are different when using enterprise vs. non-subscription?

        1. I do have a Proxmox subscription, but it basically just releases some high priority patches sooner (and my setup has been working for ages, those patches are definitely in the community version).

          What’s your QEMU version(dpkg -l pve-qemu-kvm)? Mine’s 2.12.1-1. If your QEMU is old (predating Proxmox 5.2) then it might not know q35-2.11, and fallback to something else.

          Maybe post your VM’s configuration file here too so I can check that out. Something is triggering your QEMU to use a whole different architecture.

  24. I have the same QEMU version. When looking at the machine configs for QEMU (qemu-system-x86_64 -machine help) it looks like q35 is just an alias for a later version q35 (pc-q35-2.12). Currently I am just trying going forward with this – at least it books into Clover.

    Here’s the config for the VM:

    args: -device isa-applesmc,osk=”super secret” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
    bios: ovmf
    boot: cdn
    bootdisk: ide2
    cores: 6
    cpu: Penryn
    efidisk0: local-lvm:vm-103-disk-1,size=128K
    hostpci0: 00:14.0
    ide0: local:iso/Mojave.iso,media=cdrom,size=6G
    ide2: local:iso/clover-r4674-amd64.iso,cache=unsafe
    machine: q35
    memory: 16384
    name: mac
    net0: e1000-82545em=D6:4E:B0:68:64:67,bridge=vmbr0
    numa: 0
    ostype: other
    sata0: local-lvm:vm-103-disk-0,cache=unsafe,size=256G
    scsihw: virtio-scsi-pci
    smbios1: uuid=ecbe0dc6-c752-4c50-b0b5-10778d5a9fc7
    sockets: 1
    tablet: 1
    vga: std
    vmgenid: 0ddd1797-1920-480a-bc20-bc77a703bf65

    Thanks, @Nick

    1. Ahh, maybe it was choosing the pc-i440fx machine model (PIIX3 chipset) because you have a passthrough device set to use PCI rather than PCIe. It might have worked with “hostpci0: 00:14.0,pcie=1” instead. The newer pc-q35-2.12 is likely to work fine for you though if that’s what it ends up using (try “qm showcmd VMID” to verify that it mentions “ich9” and not “piix3”).

  25. I don’t think that’s the reason. The same happened without the passthrough device (I initially started without one and was planning to add them later on).
    I’ll let you know if I’m successful with q35-2.12 – right now I am stuck on memory issues (comparable to what was mentioned above already – the installer crashes with End RandomSeed and a bunch of +++).
    Thanks, @Nick

  26. Fyi, “qm showcmd VMID” shows neither ich9, nor piix3 🙂

    /usr/bin/kvm -id 103 -name mac -chardev ‘socket,id=qmp,path=/var/run/qemu-server/103.qmp,server,nowait’ -mon ‘chardev=qmp,mode=control’ -chardev ‘socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5’ -mon ‘chardev=qmp-event,mode=control’ -pidfile /var/run/qemu-server/ -daemonize -smbios ‘type=1,uuid=ecbe0dc6-c752-4c50-b0b5-10778d5a9fc7’ -drive ‘if=pflash,unit=0,format=raw,readonly,file=/usr/share/pve-edk2-firmware//OVMF_CODE.fd’ -drive ‘if=pflash,unit=1,format=raw,id=drive-efidisk0,file=/dev/pve/vm-103-disk-1’ -smp ‘6,sockets=1,cores=6,maxcpus=6’ -nodefaults -boot ‘menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg’ -vnc unix:/var/run/qemu-server/103.vnc,x509,password -cpu ‘Penryn,+kvm_pv_unhalt,+kvm_pv_eoi,enforce,vendor=GenuineIntel’ -m 16384 -device ‘isa-applesmc,osk=stillverysecret’ -smbios ‘type=2’ -cpu ‘Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check’ -device ‘vmgenid,guid=0ddd1797-1920-480a-bc20-bc77a703bf65’ -readconfig /usr/share/qemu-server/pve-q35.cfg -device ‘usb-tablet,id=tablet,bus=ehci.0,port=1’ -device ‘vfio-pci,host=00:14.0,id=hostpci0,bus=pci.0,addr=0x10’ -device ‘VGA,id=vga,bus=pcie.0,addr=0x1’ -device ‘virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3’ -iscsi ‘’ -drive ‘file=/var/lib/vz/template/iso/Mojave.iso,if=none,id=drive-ide0,media=cdrom,aio=threads’ -device ‘ide-cd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=200’ -drive ‘file=/var/lib/vz/template/iso/clover-r4674-amd64.iso,if=none,id=drive-ide2,cache=unsafe,format=raw,aio=threads,detect-zeroes=on’ -device ‘ide-hd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=100’ -device ‘ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7’ -drive ‘file=/dev/pve/vm-103-disk-0,if=none,id=drive-sata0,cache=unsafe,format=raw,aio=threads,detect-zeroes=on’ -device ‘ide-hd,bus=ahci0.0,drive=drive-sata0,id=sata0’ -netdev ‘type=tap,id=net0,ifname=tap103i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown’ -device ‘e1000-82545em,mac=D6:4E:B0:68:64:67,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300’ -machine ‘type=q35’

    1. Ah that’s fine, I think that chipset only ends up appearing in the launch command once you start passing hostpci devices through.

      I was able to boot a Mojave VM using 2.12, so it should be compatible for you (I didn’t test the installer though).

      One of the other commenters here, Tony, also had that memory issue, which was triggered by passing a core count of 6, same as your config (I’ve also had trouble passing “exotic” core counts). Try 4 instead.

  27. Damn, I saw that, but reverted it earlier. Setting my #cpus to 4 fixed that. Looks like the installer is now booting.
    To summarize:
    * even cpu count
    * q35 pointing to q35-2.12
    * CloverISO-4769.tar.lzma (probably not necessary, but updated during debugging)
    fixed it for me.

    Thanks, @Nick

  28. Fresh install of proxmox 5.2 today, updated with the no-subscription repo. Can confirm that pc-q35-2.11 causes problems. Setting to q35 works fine.

    After install, I passed my radeon 7850 using the recommended pci ovmf (needed to specify romfile). Seems to be working out of box, with it reporting metal as supported.

    However, it seems DRM videos aren’t playing in Safari. Monitor supports HDCP. Do I need to figure out Shiki/WhateverGreen kext for this?


    1. Interesting, I guess I’ll update the guide to use that instead now. EDIT: Yep, I just updated Proxmox to the latest version and I’m seeing this problem now too, updating to “q35” or “pc-q35-2.12” is required.

      I’ve never seen any DRM content on the web, is there a free URL that I can try that out with?

      1. Sorry, I’ve never really used a mac before. I believe I read that movie trailers in the itunes store are drm protected?

        Been researching this all day, and so far I’ve found a few things.

        -It’s been reported that the 10.14.1 breaks something and people have had success downgrading AppleGVA to the 10.14 version.

        -Lilu/WhateverGreen is likely required. I’ve simply put them in /efi/clover/kexts/other but I believe they may require additional setup to work with mojave.

        -I’ve used Clover Configurator to try a few different smbios settings, and MacPro6,1 seems the most promising. With the downgraded AppleGVA, I’m able to get an error (Netflix in Safari) instead of being immediately redirected to the unsupported page (MacPro5,1 and the default unconfigured smbios).

        -I’ve read that working imessages etc is a prerequisite to getting working drm, so I’m looking into that now.

        Otherwise, the vm seems to be working reasonably well. Metal is shown as supported. I can switch back and forth between macos and windows vms without any issues (had to switch to the 2nd dvi port for macos to reliably display on boot).

        Took a snapshot before I started monkeying around so I can go back easily 🙂

        Thanks again for the guide.

        1. Ah, I tried signing up for a trial of Netflix and yeah, it’s not working for me currently in Safari (just redirects me to the System Requirements page).

          I tried it out and I am able to sign in to iMessages, but I don’t use that app so I’m not sure if that’s enough to confirm that my Apple ID works fully.

          EDIT: Oh, Netflix works for me in Chrome! Shame that only Windows supports 4K Netflix playback.

          1. Wow thanks for trying all that!

            I completely forgot about the bitmovin demo. Alas, it does not work for me either.

            I saw Conrad’s post here:

            which worked to mark en0 as builtin. With that and MacPro6,1 smbios, I get the cannot sign in to imessages on this mac at this time / contact support message. That’s a good sign as far as I understand it (assuming I don’t care about imessages..).

            I tested all the macpro smbioses 3,1 and up, and 6,1 is the only one that doesn’t redirect netflix to the requirements page. The imacpro smbios works as well. I haven’t tried any other configurations. I suspect this would fix safari netflix for you since the bitmovin demo is working.

            Unfortunately, my only goal for setting up a hackintosh is to have a testbed for fairplay drm. It’s pretty remarkable how well everything else is working.

            Your 280x is the same generation gcn as my 7850, so I suspect our results should/could be similar. I’m going to try your iMac 14,2 setting now.

            Are you on 10.14.1 as well? And without swapping in the older 10.14 AppleGVA? “inject ati” unticked as well?

            Thanks so much your testing.

          2. Yeah, I’m on 10.14.1, AppleGVA is completely untouched, and InjectATI isn’t ticked.

            About Macs, Netflix says “Supported on all 2012 or later models and select 2011 models”, which should include the Late 2013 iMac 14,2, but I’m guessing they’re doing VM-detection. Kholia reverse-engineered some VM detection in the macOS standard libraries the other day:


            There are a ton of ways of detecting VMs, so Fairplay may or may not be using this method.

            The Bitmovin demo does work for me, and chooses Fairplay in Safari. In Chrome it chooses Widevine which also works.

  29. Doing some more testing today. Going to give Mojave 10.14 a shot.

    I saw from this thread ( to use videoproc to check hw accel. Surprise, surprise, mine shows as unavailable.

    In other news, I saw here ( that el capitan and up support vmxnet3, a paravirtualized nic. Seems to work well 🙂

      1. Oof you’re a mind reader. It’s now showing the 7850 as an r9 270. VideoProc still shows no hw acceleration and safari fairplay is still failing. This is on an otherwise fresh install of 11.14.0 with smbios set to imacpro1,1 or macpro6,1.

        Might have to break out the 7970 later tonight since that gpu is working for you.

      2. Ha this issue has me tearing my hair out. Gave High Sierra a try with the same results.

        Meanwhile, it looks like setting the hard drive to IDE is the best solution (assuming there’s no performance penalty, although I haven’t tested) to having it be internal. It’s still shown as a SATA device in macos.

        Also, looking at the cpu flags:
        smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check

        I don’t believe vendor and +ssse3 are necessary (they should be included by the Penryn setting).

        1. Jeez, it’s working. I had a theory a few days ago that videos weren’t playing because I had no audio device. Figured it was a pretty ridiculous idea so I didn’t explore it.

          Now that I have inject kexts enabled, I added applealc and tried a TV via HDMI again. Lo and behold, itunes/netflix/bitmovin fairplay demo all work. Don’t even need WhateverGreen.

          Time to figure out how to get applealc to work with the default q35 intel hda. Just needs to be a dummy device really.

          Thanks again for all your help. Going for a netflix trial was really aboveboard and is truly appreciated.

  30. Now I have the failed start problem too after switching to a home computer mainboard (GA-Z77-DS3H with XEON 1230V2):

    qm start 100
    kvm: -device piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2: Bus ‘pci.0’ not found
    start failed …

    qm showcmd 100
    /usr/bin/kvm -id 100 -name mojave -chardev ‘socket,id=qmp,path=/var/run/qemu-server/100.qmp,server,nowait’ -mon ‘chardev=qmp,mode=control’ -pidfile /var/run/qemu-server/ -daemonize -smbios ‘type=1,uuid=c391bdbb-b3aa-46f7-a906-d8ac0bfe22b2’ -drive ‘if=pflash,unit=0,format=raw,readonly,file=/usr/share/pve-edk2-firmware//OVMF_CODE.fd’ -drive ‘if=pflash,unit=1,format=raw,id=drive-efidisk0,file=/dev/pve/vm-100-disk-1’ -smp ‘4,sockets=1,cores=4,maxcpus=4’ -nodefaults -boot ‘menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg’ -vnc unix:/var/run/qemu-server/100.vnc,x509,password -cpu ‘Penryn,+kvm_pv_unhalt,+kvm_pv_eoi,enforce,vendor=GenuineIntel’ -m 8192 -device ‘vmgenid,guid=c5c7a0c2-27e9-47c1-b2ba-cac218cc9d52’ -device ‘piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2’ -device ‘usb-tablet,id=tablet,bus=ehci.0,port=1’ -device ‘VGA,id=vga,bus=pcie.0,addr=0x1’ -device ‘virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3’ -iscsi ‘’ -drive ‘file=/var/lib/vz/template/iso/Mojave.iso,if=none,id=drive-ide0,media=cdrom,aio=threads’ -device ‘ide-cd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0’ -drive ‘file=/var/lib/vz/template/iso/clover-r4674-amd64.iso,if=none,id=drive-ide2,cache=unsafe,format=raw,aio=threads,detect-zeroes=on’ -device ‘ide-hd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=100’ -device ‘ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7’ -drive ‘file=/dev/pve/vm-100-disk-0,if=none,id=drive-sata0,cache=unsafe,format=raw,aio=threads,detect-zeroes=on’ -device ‘ide-hd,bus=ahci0.0,drive=drive-sata0,id=sata0’ -netdev ‘type=tap,id=net0,ifname=tap100i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown’ -device ‘e1000-82545em,mac=86:42:83:FA:8D:3C,netdev=net0,bus=pci.0,addr=0x12,id=net0’ -machine ‘type=pc-q35-2.11’

    I can not find a solution nor identify the problem!
    Can you help me?

    1. Replace “machine: pc-q35-2.11” in the VM config with “machine: q35”. It appears that the newest Proxmox version requires this change now.

      1. Thank you very much!
        I’ve changed the configuration so many times that I overlooked it. Now it starts without problems 🙂

  31. Just as a note, this works like a charm on an AMD Ryzen CPU. QEMU does the translation between Intel and AMD instructions, so you don’t need a custom kernel. GPU Passthrough works perfectly with AMD RX card.

    1. Did you follow what he did to the letter, or make your own modifications along the way? I have a Ryzen build and will be following in your footsteps.

  32. Any one passthrough iphone to this vm with success ?
    I need to passthrough my iphone to vm machine and connect it to itunes for make backups.

  33. Since I upgraded to Proxmox 5.3, I can no longer use the VM. The problem is the keyboard doesn’t work, which doesn’t allow me to interact or boot Clover. I installed the latest patched pve-edk2 packge, and re-added the USB Keyboard to pve-q35.cfg.

    Anyone else have this problem ?

    1. I upgraded to 5.3 and cannot reproduce this problem. Are you using “machine: q35” in your VM config? That’s the one that works for me since late in the 5.2 release cycle.

      You can also try rebooting the host just in case it’s somehow caching the old pve-q35.cfg file in memory.

    1. Yes, when trying to enable that using the command line, the error is revealed: macOS refuses to enable it because they have detected that they’re running in a virtual machine. Probably their binary would have to be patched to bridge out this detection.

  34. Thank you for a great write-up! I’m new to Proxmox, relative novice w/ VM’s (last played w/ Xen @5 yrs ago), but I have built Hackintosh’s for the last several releases. Learned a lot following your guide. Everything worked as described for Proxmox 5.3-6 on i4770k/z87-pro. Even did the Mojave OS update to 10.14.2, though that required manually restarting the update installer from Clover. Easy to fix.

    Only minor issue atm is msr warnings in syslog specific to the Mojave VM:
    [ 8028.414375] kvm_get_msr_common: 26 callbacks suppressed
    [ 8028.414377] kvm [6752]: vcpu1, guest rIP: 0xffffff8004b5ad75 ignored rdmsr: 0x60d
    … (9 more lines from 2 rIP addrs for rdmsr’s 0x3f8,9,a, 0x630,1,2, 0x619,d, 0x621 every 480s)
    root@pve:~# cat /etc/modprobe.d/kvm.conf
    options kvm ignore_msrs=Y
    root@pve:~# cat /sys/module/kvm/parameters/ignore_msrs
    root@pve:~# pveversion
    pve-manager/5.3-6/37b3c8df (running kernel: 4.15.18-9-pve)

    It boots, so only question is whether these syslog messages are expected or not? I’m guessing the “ignored” warning is actually correct behavior?

    I have lots of rereading/learning, testing, adding disks and passthrough devices and whatnot to go, but thank you for the tremendous head start!

    1. Yes, I think these ignored warnings are correct behaviour. The guest is just probing for features that the QEMU virtual CPU does not support. (I get the same). This is why the ignore_msrs setting is set to Y, because otherwise these would be fatal errors.

  35. Really awesome guide, very much appreciated works flawlessly! Like someone above i’m also unable to get my iphone to pass through to the vm, really not sure why. Passing through a thumb drive worked just fine, and attempting to pass through an entire usb controller (i have a pcie add-in card specifically for this) doesn’t work either. Pretty stumped..

  36. Do we need to do any changes for Proxmox 5.3?

    Or does the patch need to be updated, to re-base against 5.3 for other bugfixes?

  37. The mojave iso doesn’t show up in clover for me. Did anyone got a solution for this problem? Is my Iso corrupt? As to my knowledge I did everything according to this tutorial. Im usingthe latest proxmox 5.3

        I did every single step according to the tutorial. Flashed a new proxmox and redid everything. I have no clue, where I might have missed something

        1. Rebuild the Mojave ISO, this has fixed that problem for several people in the past. (keep an eye out for errors during generation that warn that the destination disk is full)

  38. After a few days of the vm working perfectly, now I’m having boot errors:
    crashed: opendirectoryd. Too many corpses being created.

    Do you have any hint?


      1. Hey guys, I’m running Proxmox 5.3 with latest updates and trying to install Mojave but hitting a kernel panic when trying to boot the installer. I just did this some weeks ago on another system and it went swimmingly, so I’m fairly confident I’m following instructions correctly. However I’m afraid it was PVE 5.1 or 5.2 I used then, so perhaps that’s the difference?

        I’ve done my best to try and capture what’s triggering the panic but it goes by too fast even when doing local screen recording to capture.

        Here are the last few boot messages before the kernel panic page, captured with Clover’s verbose mode and a screen recorder:

        Sun Mar 24 20:57:32 2019 localhost[1] ( : Could not read path: path = /Library/LaunchAgents, error = 2: No such file or directory
        Sun Mar 24 20:57:32 2019 localhost[1] ( : Failed to bootstrap path: path = /Library/ALaunchAgents, error = 2: No such file or directory
        Forcing CS_RUNTIME for entitlement: - new kext, v14.0.3 matches prelinked kext but can't determine if executables are the same (no UUIDs).
        Sun Mar 24 20:57:36 2019 iMac.local[1] ( : Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in():
        IOG flags 0x3 (0x51)
        ** AppleSMBusPCI::start failed to get acpi path for provider
        HID: Legacy shim 2
        ACPI_SMC_PlatformPlugin::start - waitForService(resourceMatching(AppleIntelCPUPowerManagement) timed out

        Here’s my conf:

        root@bonsai:~# cat /etc/pve/qemu-server/101.conf
        args: -device isa-applesmc,osk="ourha..." -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
        bios: ovmf
        boot: c
        bootdisk: ide2
        cores: 4
        cpu: Penryn
        efidisk0: bontank:vm-101-disk-1,size=128K
        ide0: pira-proxmox-content:iso/Mojave.iso,media=cdrom,size=6G
        ide2: pira-proxmox-content:iso/clover-r4674-amd64.iso,cache=unsafe,size=256M
        machine: q35
        memory: 3512
        name: macos
        net0: e1000-82545em=3A:31:AA:27:10:09,bridge=vmbr0
        numa: 0
        ostype: other
        sata0: bontank:vm-101-disk-0,size=200G
        scsihw: virtio-scsi-pci
        smbios1: uuid=d661d5a1-ebd8-4e42-a0fb-bbca29e0dc9a
        sockets: 1
        vga: std
        vmgenid: 7fbcb7dd-abce-4eb4-8823-28a235d9d951

        Any suggestions welcome.



        1. Does your OSK really have the “©” symbol in it, or was that just inserted by WordPress? That should be “(c)”

    1. I got it to boot the installer, I had to change my number of shared cores from 12 to 8…

      However, now it is not showing any disks to install

      Here is my proxmox config

      args: -device isa-applesmc,osk=”…” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
      bios: ovmf
      boot: cdn
      bootdisk: ide2
      cores: 8
      efidisk0: vmpool-zfs:vm-100-disk-2,size=128K
      sata0: vmpool-zfs:vm-100-disk-0,cache=writeback,size=256G
      ide0: storage:iso/Mojave.iso,media=cdrom,size=6G
      ide2: storage:iso/clover-r4674-amd64.iso,cache=unsafe
      machine: q35
      memory: 24000
      name: Mojave
      net0: e1000-82545em=8A:81:E8:89:0F:84,bridge=vmbr0
      numa: 0
      ostype: other
      scsihw: virtio-scsi-pci
      smbios1: uuid=20526b3f-4556-45fe-afd3-50985133d3af
      sockets: 1
      vmgenid: 45286f92-79d4-413f-9588-98acb92101bd

      Any ideas?

  39. Any tips for how to control the VM resolution? It boots as an iMac with 1920×1440 resolution, which is a little tall on my 5k iMac’s screen. I’ve done some googling, and there are lots of tips for VMware or Vitural Box, not so much for PVE.

    1. That’s a weird resolution. You should be able to change the resolution in the guest’s UEFI settings, although you have to edit the resolution in Clover’s config.plist to match to have it boot correctly.

      1. Yea, it’s weird, I’ve changed the clover settings at boot and in the config.plist, but it’s not having any effect on the Mojave resolution. Clover comes up in that resolution but MacOS stubbornly. I should just need to do the mount /Volumes/EFI and edit /EFI/EFI/Clover/config.plist with the below correct? How do I change the UEFI settings?



        1. You ever figure this out? I have the same issue. Successfully changed the resolution in clover and UEFI settings but it has no affect once the VM actually boots into macOS.

          1. I have a solution – not elegant, but working for me:

            I have added to the args statement, at the end, after cpu flags and smp (I am also giving it 2×8 cores x 2 threads out of my 40 threads):
            -device VGA,vgamem_mb=256
            (I can not get it to give the adapter more than 10mb when seen from the mac side)
            And then set in the normal
            vga: virtio

            I have no idea what it is doing with the last virtual adapter – I can not see it from the mac, and now I can keep the UEFI (and Clover) setting of 1920×1080..

            One further note: my investigation leads me to believe, that it is not forcing a specific resolution, rather a specific aspect ratio 4:3 and not the 16:9 specified.. Thus when setting 1920 in UEFI, it is then resulting in 1440 height..

            Now everything is working for me (even Store and iMessage) – but performance is not great.. (and I have very fast storage 8 MLC SSD’s on SAS3), not sure if it is the virtual sata or virtual gpu that is killing it the most, but I believe Mojave is more relying on “Metal API” than previous versions – and thus the penalty from virtual GPU is the real problem..

          2. The virtual GPU performance is suuuuuper terrible, I would not consider using the virtual GPU for everyday desktop use.

  40. In the meantime I’ve just scaled it down, which works OK, but I’m still looking for how to adjust the UEFI boot setting.

    1. Hit F2 when the Proxmox logo appears during guest boot. You may need to edit your q35 config to remove the USB keyboard and start and stop the VM first.

      1. Hmmf. I have the OVMF settings at 1600×1200 (and other lower settings) but it continues to boot to 1920. I probably have something set wrong, but it really wants to open at that resolution.

  41. Nice tutorial , but i cant increase cpu cores more than 4 , as many users here reports . its hang on boot “reboot loop”

    any solution for this issue ?


      1. Yeah , 2 sockets . 4 cores each work good .
        Another concern , can we simulate cpu as host ? disable hypervisor for cpu to act as physical cpu to enable nested virtualization . my goal to run genymotion “Android virtual machine ” on this mac osx guest .

        1. As i have this args work good on windows 2016 :
          args: -cpu ‘host,-hypervisor,+kvm_pv_unhalt,+kvm_pv_eoi,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_reset,hv_vpindex,hv_runtime,hv_relaxed,kvm=off,hv_vendor_id=intel’

        2. I’ve never had this working, macOS seems to dislike the reported CPU type if I try that. You may be able to get it to work by using Clover’s CPU ID faking tools.

  42. First, very good guide! There seems to be nothing that could go wrong… sadly, when the installation reboots for the first time during the installation process, it stays forever at

    Initialized /dev/rdisk5 as a 5MB case-insensitive HFS Plus volume

    Don’t know how to avoid it. As I am using my own hackintosh for a long time now, I searched through different forums, but couldn’t find anything helpful. Perhaps I should try it with High Sierra again…

  43. Hey Nick!
    thanx again for terrific guide!!!
    even I’m still on h.sierra and not figured out how to properly tune nv106 card (distorted dbl apple screen, black screen then, probably drivers issue) but using r9 280x perfectly fine, I’m posting here my completely different question as it’s more future proof version LOL:
    what about clustering 2 hosts used as desktop located in 2 different locations over VPN? something similar to this setup:

    even its a heavily outdated tutotial, I belive the concept stsys the same… I explain you my idea: I have 2 hosts, they have very very similar hardware (different revisions of same mobos, different count of cores on same cpus), ONE AT HOME (300mb fiber), ANOTHER AT WORK (50-100mb over wifi), ping suppose to be about 10ms, both used exactly like yours – as desktop machines w swapping VMs back and forth, w smaller ssd for few actual VMs and larger hdd to store unused or rarely used VMs, no external storage, all on zfs, but honestly zfs concept is a bit too much for me for now to diadgest so probably I will remove zfs shortly… anyway – I’m looking for a way to sync those two hosts. Clustering is not a simple concept, and my knowledge barely good to start experementing, but very good to blow up things many times – no good for daily used desktop enviroment LOL.
    So did you think about something similar,
    do you think this setup works on modern PVE including OSX guests
    and what is very important passedtrough videocards, cpu instructions and other hw?
    can you suggest other ways of more solid sync, may be a third party service, gdrive, use of a 2 node setup with external shared storage and sync it by night? zfs perks? Or weekly manual syncs will do too… also I do not have fixed ip’s, and I have to investigate if I can obtain it. Also I have a large dogy WD MyCloudeHOME (the keyword HOME, as it is not a true NAS server but some strange WD server, and can be accessed by linux/osx for backup but only locally in public samba share, otherwiseo only as a gdrive over their proprietary software or webinterface). Also a manual sync with phisically attaching a drive would do for me – but how to make it elegantly?

    just want to open a conversation w everybody for such a concept of syncing 2+ desktop used PVE hosts!!!


    1. Live VM migration on Proxmox (true clustering support) is disabled for VMs that have passthrough hardware enabled. However you can probably use the Ceph clustered storage engine to share a VM disk image between two nodes (so that you can shut it down at one location and start it up at the other location with minimal waiting time). I haven’t tried Ceph myself.

      The absolute minimum for passthrough is the graphics card, otherwise the performance is godawful. Everything else can be emulated with fair success.

  44. Hi Nicolas,

    Followed your instructions and I got this error

    Have you met this yet?

    Below is my VM’s conf:
    args: -device isa-applesmc,osk=”ourhard…” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
    bios: ovmf
    boot: dcn
    bootdisk: ide2
    cores: 4
    cpu: Penryn
    efidisk0: local:110/vm-110-disk-1.qcow2,size=128K
    ide0: local:iso/10.14.3.iso,media=cdrom,size=8000M
    ide2: local:iso/clover-r4674-amd64.iso,cache=unsafe
    machine: q35
    memory: 8196
    name: Mac
    net0: e1000-82545em=00:15:5D:A7:65:0A,bridge=vmbr0
    numa: 0
    ostype: other
    sata0: local:110/vm-110-disk-0.qcow2,cache=writeback,size=256G
    scsihw: virtio-scsi-pci
    smbios1: uuid=594faa41-d8f0-4942-ae4c-b9a97adb565a
    sockets: 1
    vga: std
    vmgenid: 20e39f7f-42ea-4f06-8f1f-c927a642581d

    And Proxmox version:
    root@proxmox:~# pveversion -v
    proxmox-ve: 5.3-1 (running kernel: 4.15.18-11-pve)
    pve-manager: 5.3-11 (running version: 5.3-11/d4907f84)
    pve-kernel-4.15: 5.3-2
    pve-kernel-4.15.18-11-pve: 4.15.18-34
    pve-kernel-4.15.18-10-pve: 4.15.18-32
    pve-kernel-4.15.18-9-pve: 4.15.18-30
    pve-kernel-4.15.18-4-pve: 4.15.18-23
    ceph: 12.2.11-pve1
    corosync: 2.4.4-pve1
    criu: 2.11.1-1~bpo90
    glusterfs-client: 3.8.8-1
    ksm-control-daemon: 1.2-2
    libjs-extjs: 6.0.1-2
    libpve-access-control: 5.1-3
    libpve-apiclient-perl: 2.0-5
    libpve-common-perl: 5.0-47
    libpve-guest-common-perl: 2.0-20
    libpve-http-server-perl: 2.0-12
    libpve-storage-perl: 5.0-39
    libqb0: 1.0.3-1~bpo9
    lvm2: 2.02.168-pve6
    lxc-pve: 3.1.0-3
    lxcfs: 3.0.3-pve1
    novnc-pve: 1.0.0-3
    openvswitch-switch: 2.7.0-3
    proxmox-widget-toolkit: 1.0-23
    pve-cluster: 5.0-33
    pve-container: 2.0-35
    pve-docs: 5.3-3
    pve-edk2-firmware: 1.20181023-1
    pve-firewall: 3.0-18
    pve-firmware: 2.0-6
    pve-ha-manager: 2.0-8
    pve-i18n: 1.0-9
    pve-libspice-server1: 0.14.1-2
    pve-qemu-kvm: 2.12.1-2
    pve-xtermjs: 3.10.1-2
    qemu-server: 5.0-47
    smartmontools: 6.5+svn4324-1
    spiceterm: 3.0-5
    vncterm: 1.5-3

    1. Sorry I’ve never seen an error like that before. Maybe the macOS system logs have some more clues as to what went wrong.

  45. Hi Nick! Sorry at the first, for my english (not my native) and for my blind (perhaps) eyes – i don’t understand how to work graphic card in mac os? Is there full acceleration? Which hardware is support (whats the better Nvidia or AMD for the best build) and can i use 4k display connected in my graphic card with 4k2k resolution (60hz)? Another one – can i use the iCloud and imessage in MacOs? I’m asking because in this moment just interesting for using Proxmox for MacOs and want try to select hardware (exception Display – already have) for best using. Thanks for answer and advice.

    1. Getting graphics acceleration requires you to pass through a graphics card. There are currently no drivers available for modern Nvidia cards in Mojave (and there may never be), so you should definitely use AMD. I’m not sure what the best choice of AMD card is, you will need to research it in Hackintosh and VFIO (passthrough) communities. 4k 60Hz displays work great through DisplayPort, my monitor is 4k 60Hz. Please check out this post of mine to learn more about how passthrough is set up:

      iCloud and the App Store definitely work. Getting iMessage to work requires a bunch of messing around with setting serial numbers in Clover, and many people never get this to work. There are a lot of tutorials available for this on the ‘net if you search. I tried using iMessage today and it doesn’t work for me (I can log in, but can’t send or receive messages).

  46. Hey man. After many head scratching hours I managed to make it though.
    One thing I wanted to point out: my system was not initially outputting video properly after selecting the OSX installer from clover. Turns out it wasn’t handing off the resolution properly, so it was totally scrambled and impossible to read.
    I can’t remember verbatim what the menus were called, but I think this is close:
    The fix was to go into clover settings, then Graphics, then load Vbios or force vbios. Don’t remember what it was called exactly, but it will have EDID display options above, then the last option will be VBIOS related. Enable it by using the arrow keys to navigate to it, then pressing space on it.

  47. Hi, great guide, helped me install on Proxmox 5.3! However, the instructions seem to be broken on Proxmox 5.4, as the VM cannot find the Clover ISO. Any idea as to why this would happen?

    1. Works perfectly for me on 5.4. Most likely you didn’t follow the instruction correctly about editing the media=cdrom part of the Clover ISO config line. Show the config line you have for that ISO.

      1. Yup, that’s exactly what it was. I had done it, but it didn’t take for a bit after. Now I’m just trying to figure out why my passthrough isn’t working… Great guide though!

    2. I’ve now updated the screenshots and instructions for 5.4’s re-shuffled UI (there are no material changes, the settings are just in different places). I’ve also added an example of what your VM config should end up looking like.

  48. hi,
    hope someone can help me.
    i have the mojave.iso, the confusing osk key and i modified my 107.conf.
    i patched the ovmf library (self compiled) but i always get the bootloop after starting the installer with clover.
    i dont know what the problem is.


  49. So, I have found two dmg installers for High Sierra and Mojave on torrent. People write in the comments that the installer is working.
    After downloading I’ve converted dmg to iso through dmg2img tool for linux. As I know uncompressed img is same to iso. Finally , clover do not see mojave or high sierra iso. Could you help to find the reason.

    P.S. I have some doubt about Installing the fixed OVMF.
    Here is the output of dpkg -l pve-edk2-firmware, is it OK?

    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
    ||/ Name Version Architecture Description
    ii pve-edk2-firmware 1.20190312-1 all edk2 based firmware modules for virtual machines

  50. Hi,

    I tried proxmox 5.4 with mojave on a Fujitsu Primergy RX300 S8 (2x E5-2650v2, 256 GB Ram) server and I can start the vm and install mojave without problems.
    But within the final mojave, after some seconds of mouse movement, the mouse and also the keyboard stop working.
    I opened the activity monitor quickly after reboot and I can see everything working as expected. Unfortunately the input devices are gone completely after some seconds.

    I already tried the args: -device usb-kbd,bus=ehci.0,port=2
    and also to set the
    [device “keyboard1”]
    driver = “usb-kbd”
    bus = “ehci.0”
    port = “2”
    part. But without luck 🙁

    Can you help me with that?

  51. I’m going through your guide, and currently at the MacOS install stage.

    It’s rebooted a few times – and is now at the black screen, with the white Apple logo, and says “About a minute remaining”.

    However, it’s saying about a minute remaining for nearly 40 minutes.

    Is that worrying?

    Any idea on how to figure out what’s going on, or kick things along?

    1. I ended up force shutting down the machine, and starting it again – and it seemed to work the second time. I assume I got lucky, but would be good to know why the install seemed to stall there. Weird.

  52. Just as a FYI to all – since I could not find info about it before taking the plunge (but had a ZFS Snapshot to fall back to)…
    Upgrading a kvm VM from 10.14.4 to 10.14.5 works without any hiccups or “need to manage kext or whatever”..
    (I do have an install with full access to iMessage/iCloud/iWhathaveyou).

  53. Hi, thanks for the instructions. I have a problem with the installation. When I run the installation in a clover, it hangs on the apple logo. Read comments, nothing helped.

    1. Check the passed CPU core count (go with 4) and check that the patched pve firmware package is installed.

      If you hit space on the boot option you can toggle Verbose boot mode on which can give more information.

  54. I’ve now updated the guide to download the installer from Apple’s software distribution servers instead of from the App Store, which should make this much easier to get started on (a Mac is no longer required to build the install ISO).

    Also updated is the Clover version, and the recommended video card and network card.

  55. hi, i’m new to proxmox
    this is my config file
    args: -device isa-applesmc,osk=”***” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-
    bios: ovmf
    boot: cdn
    bootdisk: ide2
    cores: 4
    cpu: Penryn
    efidisk0: local-lvm:vm-100-disk-1,size=128K
    ide0: local:iso/Mojave-installer.iso,cache=unsafe,size=2078428K
    ide2: local:iso/clover-r4920.iso,cache=unsafe
    kvm: 0
    machine: q35
    memory: 8192
    name: mojave
    net0: vmxnet3=66:E9:DB:6E:6E:5E,bridge=vmbr0,firewall=1
    numa: 0
    ostype: other
    sata0: local-lvm:vm-100-disk-0,cache=unsafe,size=64G
    smbios1: uuid=f8e77a5f-0df7-46c0-bfce-65b19112f815
    sockets: 1
    vga: vmware
    vmgenid: 6866056b-08ae-4f4f-9557-c948bfc90846

    the installation of mac os stops with mach reboot, first this appears error: fault cr2, fault cpu

    can you help me, thanks

    1. Your “args” line is truncated halfway through the -device portion, but maybe this is just an artifact of the comment box.

      Which CPU model do you have?

      You’ve manually disabled “kvm” which will be ridiculously, unusably slow (like “taking 30 minutes just to boot” slow). Is this because your CPU doesn’t have VT-X enabled? Check that your host’s UEFI settings has “Intel Virtualisation Technology (VT-x)” enabled.

      1. it wasn’t trucate it’s my fault, i’d changed that but nothing new happens.

        now my config is this:

        args: -device isa-applesmc,osk=”***” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2
        bios: ovmf
        boot: cdn
        bootdisk: ide2
        cores: 4
        cpu: Penryn
        efidisk0: local-lvm:vm-100-disk-1,size=128K
        ide0: local:iso/Mojave-installer.iso,cache=unsafe,size=2078428K
        ide2: local:iso/clover-r4920.iso,cache=unsafe
        kvm: 0
        machine: q35
        memory: 8192
        name: mojave
        net0: vmxnet3=66:E9:DB:6E:6E:5E,bridge=vmbr0,firewall=1
        numa: 0
        ostype: other
        sata0: local-lvm:vm-100-disk-0,cache=unsafe,size=64G
        smbios1: uuid=f8e77a5f-0df7-46c0-bfce-65b19112f815
        sockets: 1
        vga: vmware
        vmgenid: 6866056b-08ae-4f4f-9557-c948bfc90846

        i have Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz so vt-x is supported
        my problem is that i’ve a foxconn 2ada motherboard, it was created specially for HP and there isn’t (or at least i can’t find it) any option related to vt-x so i disabled from proxbox

        1. There’s no point trying to run macOS without KVM, it will be unusably slow.

          Most likely your problem is being caused by QEMU’s emulated CPU not supporting the features macOS needs, or implementing them inaccurately (this is because you have KVM disabled, so QEMU has to emulate a complete CPU from scratch!).

          1. Thanks a lot, I’ll retry in future switching my server with my computer but at the moment I don’t have so much time

  56. Hi there! Thanks so much for your guide, it has proved invaluable. I have had some interesting effects when attempting your Mojave install on my hardware:

    Everything works perfectly up untill after the installer restarts for the first time. Then the Apple logo appears with the progress bar below and this continues until there are 14 minutes remaining. Then the PC hangs, the lights on my keyboard go off, and a minute or so later everyone else that is connected to our switch (which is a cheap Asus 4-port wireless router of some sort that’s plugged into our cable modem) loses access to the internet. Well, more like they have no bandwith. Pages don’t load, YouTube video’s freeze, their wifi connections still work however and this “no bandwith effect” immediately ceases when I hit the “reset” switch on my PC case. When the PC restarts I am warned that the bios is corrupt and that it’s being restored from a backup. This happens every single time! In the end I installed High Sierra and this works just fine.

    This is my hardware:
    Gigabyte X79 UP5-Wifi motherboard with F4 bios
    32GB Corsair Vengeance 1666mhz DDR3
    Intel Sandy Bridge i7-E 3820
    Gigabyte Geforce GTX 670 OC 4GB (I have an AMD RX 570 for passthrough)
    Kingston 120gb SSD

    Again, thank you for your efforts. This isn’t necessarily something that needs to be investigated, just an amusing tale of X79/C606 ownership. I do wonder if anyone else has experienced something similar?

    1. Wow that’s extreme, lol. Are you passing through your video card already? If so, try removing that since that is the most likely cause.

      1. Lol no I haven’t passed the card through, I’ve just sat down to do that now as it happens with High Sierra. I’m not too sore about this really as I’ve got a few Geforce 6xx cards lying around and I’ll at least be able to use those. My software doesn’t mind if I’m not running Mojave and I’ve been running Sierra on a real Mac Mini for some time, any upgrade will make a huge difference.

        Thanks again Nicholas!

  57. Hi Nick,

    Thanks for the great instructions. I’m using the latest version of ProxMox but seem to be getting stuck with the system failing to boot past:

    Initialized /dev/rdisk5 as a 5 MB case-insensitive HFS Plus volume

    Further research shows that this is due to the machine being unable to boot off a USB 3.0 drive and requires Clover and the BIOS to be set down to USB 2.0 (initially at least).

    Have you any thoughts on this? Could you rebuild the Clover ISO with the latest version for me to test? I was working through your .sh file for it but must admit, I didn’t really know where to start!

    1. Clover isn’t booting from USB so that isn’t the cause. There’s no reason to think that a newer Clover version will help either.

      Do you have a longer boot log sample? Are you stuck on booting the installer?

      1. I get through the disk utility and then installer, in first reboot I get the above error.

        The only reason I said USB is that all the other virtualisation attempts suggest that as the fix with generally positive response.

        I can get you the boot process in verbose Monday when I’m in the office. I screen recorded it.

        Thank you!!!!

  58. Hi Nick,

    Thanks for all the time and effort you have put into this tutorial!

    I’m having a problem. The installer runs fine until the first reboot. Clover does not detect the virtual hdd only leaving me the option to start the installer again…

    Best regards,

    1. You’re formatting the harddrive APFS+GUID? Is it attached to SATA0?

      Which options are shown on the boot screen after the first stage of installation?

      1. Hello,
        I am currently having the exact same problem (it doesn’t show up after the first reboot on clover) and my hard drive is on SATA0 and I formatted it to APFS with GUID partition map.
        Thanks for your awesome tutorial.

          1. for context :

            proxmox 5.4-11

            sata0: local:100/vm-100-disk-2.raw,cache=unsafe,size=64G
            in disk utility it appears as “external”
            formated as APFS+GUID

            Also i had to remove media=cdrom from ide0 for the installer image to be found by clover

          2. So i managed to fix it by changing the boot order in UEFI (thanks to comments below)

            I re-ordered the boot order in UEFI “Boot Maintenance Manager” to put “UEFI QEMU HARDDISK QM00003” as first item.

            Thanks so much for this amazing tutorial

  59. Hi Nicholas 🙂

    Thanks for this wonderful tutorial !!
    For an unknown reason, macOS doesn’t boot, the system hang up.
    Bellow, a screenshot in verbose mod with the problem (system frozen always here).

    I have this problem on the first boot before I trying to setup macOS.
    Do you have an idea about this problem?

    My conf if it can help you :
    args: -device isa-applesmc,osk=”xxxx-xxxx-xxxx” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2
    bios: ovmf
    bootdisk: ide2
    cores: 4
    cpu: Penryn
    efidisk0: local-lvm:vm-100-disk-1,size=128K
    ide0: local:iso/Mojave-installer.iso,cache=unsafe
    ide2: local:iso/clover-r4920.iso,cache=unsafe
    machine: q35
    memory: 8192
    name: mojave
    net0: vmxnet3=96:7C:B2:BB:59:93,bridge=vmbr0,firewall=1
    numa: 0
    ostype: other
    sata0: local-lvm:vm-100-disk-0,cache=unsafe,size=64G
    smbios1: uuid=9ebb4cb4-0eb4-4489-91cd-cfaf419ec119
    sockets: 1
    vga: vmware
    vmgenid: 222ceb28-6936-452c-8233-7d5a499f10ab

      1. Thanks for your response and your time 🙂
        Indeed, like an idiot I have forgotten that…

        But after installing this firmware, I have an other problem : kernel panic every time.

        If you have the time to help me, you can find the video off the problem here :
        I think this is the same problem as “Tom James” on others comment…

        Thank again for your precious help.

        1. That error is being triggered by DSMOS (“Don’t Steal macOS”) – it looks like you have your OSK set to “This is a dummy key. Enter the real key using the -osk parameter”! (the uninitialised default for that value in QEMU)

          Make sure that it isn’t surrounded by curly quotes – it needs to use straight quotes.

  60. Hi there

    thanks for your blog and time is a great database for playing around with OSX on proxmox. I run a High Sierra 10.3.4 and there is an update in the queue to 10.13.4, I tried once, it crashed the VM and macOS disk disappeared, so restored backup. Now I wonder how I can upgrade from High Sierra 10.3.4 to this Mojave, I do not own a real mack, but my VM works, I have a core i5 or i7 (dunno) processor in proxmox and I have a hackintosh (with a q6600)

  61. I actually upgrade proxmox from 5.1-? to 5.4-6 and the OSX VM with 10.3.4 does not start anymore, it seems to kernel panic during starting CLOVER image, then clover appears, and when I load macOS on disk macOS, I just see an Apple and nothing happens and this is a static screen, okay, not much else than a running OSX, but hey, this is about getting an OS and not a backside photo of an iPhone 🙂 Any thoughts, ideas, how to fix my VM or shall I just dump it and install Mojave on 5.4 now? I have no real data there, nothing important.

    1. I think from memory between 5.1 and 5.4 there was a change in patches required – 5.1 required a patched QEMU and 5.4 requires a patched pve-firmware deb instead (link in the article). Make sure the old QEMU isn’t pinned and the new package is installed.

  62. Installing Mojave now on my Proxmox 5.4 because noone reacted on my post before, even not the moderator… so I ran into an issue:

    During installation (about 4 Minutes remaining of progress bar, installing ISO to External APFS Drive) I get the error: “a server with the specified hostname is not found. Please try again later, I tried now in 1-2 hours already again, even with new MAC address”. And if I retry to install MacOS without reboot of the VM I get the other error: “can’t install macOS because it requires downloading important content which can’t be downloaded.” Any thoughts/experiences?

    I have logs of the issue that are more accurate

    1. That’s macOS trying to contact Apple to download the Mojave install data. Check the network configuration for your VM because it sounds like it isn’t able to contact the Internet or does not have a working DNS server configured.

      You can use wget/curl and ping in the installer’s Terminal to check your connection. (e.g. ping

      If I use curl on my system to download the file that your install failed to fetch ( it works fine, so it’s definitely a problem with your network.

      1. actually I am able to reach that file from the same network with wget, and this machine has the same network setup like the machine where it is working… I really think apple wants to go to port 80 and 443, I found some strange posts about this error, issues with VPNs and so on

        1. “A server with the specified hostname could not be found” means that the failure happens during DNS resolution before ports are even considered. Definitely not a problem with a webserver on your host. Check the DNS configuration in the guest with something simple like “nslookup”

          1. I cannot ping but I can ping so this is about some strange dns issue, before in terminal the ping was working, now after restarting the installer, it is not working again and now in terminal it is also not working anymore

          2. After restarting the installer it’ll have to get a new lease from your DHCP server, so that can trigger an issue if your DHCP server is broken. Make sure your DHCP server’s IP address pool is not full and it is set to give the right DNS server IP address.

            Which “Server” (DNS server) does nslookup report that it’s trying to use? Is that a working DNS server?

          3. I changed my DHCP server now to hand out an alternative DNS server, that is NOT my domain server of my own domain running at home. so maybe that’s what is messing up things, the DNS server is the gateway IP now

          4. I am aware that my Domain DNS server running on FreeNAS is not a perfect one, but this is how I have a AD Domain at home, which is quite funky, thanks for redirecting me on the DNS track.
            Mojave seems to install successfully now.

  63. Thanks and Kudos to NickSherlock!
    This was a quite easy walkthrough, My IT at home is just not that easy, so I ran into my own issues with my AD domain.

  64. I get an error message, the server cannot be contacted, installing from a mojave USB gives me a stop sing. Any tips?

    1. The installer needs an internet connection to download Mojave, it’ll pick up an IP address and gateway from your DHCP server. Make sure it’s connected to the right network and DHCP is available.

  65. Thank you for the guide! Very well written and it appears there was a lot of work done to get there!

    One question: After install reboots the first time, Clover pops up again and only shows the install media as a boot option. The format options i was given using the disk utility did not show “Schema” as an option that i could choose. Could this be the problem? If so, how might i correct this?

    1. That’s really weird, it looks like macOS thinks that is a partition, not a drive. Is that drive at the top there which is marked as “internal” actually the full hard disk (rather than the installer’s drive)? If so erase that instead.

      Another thing you can try is to tick the option in the menu at the top to show all volumes (I forget what the exact label is called), and then quit and reopen Disk Utility – this can reveal disks that are hidden by default.

        1. Erase that external “QEMU HARDDISK Media” drive – that’s the full drive rather than the APFS partition that seems to be on it already.

          1. Ok, doing that seems to make no difference. After the install reboots, Clover still does not show the disk to allow booting from it.

            I am really confused. I THINK I am doing things correctly. I am just not sure what Clover wants.

            Please advise.

          2. It looks like you’re doing it correctly to me too. You could try investigating the drive that was installed onto using the installer’s Terminal feature – check its partition layout with fdisk, maybe mount the main partition and see what’s on there.

            Are you really only getting one boot menu option after the reboot of the first stage of installation?

          3. Replying at a higher level than intended, as apparently there is a limit to how deeply you can nest replies:

            I will have a look at it through the terminal and fdisk options later, but yes, Currently I only see the one option after first stage install reboot. It is really odd.

          4. So I removed the install disk from the VM using ProxMox, then created a new one 65 gig “raw” format, and “Write back (unsafe)” cache as you show in your notes.
            That did not seem to help either.
            Here is the terminal output examining the state of the system after the first stage install has rebooted.


            Please advise

          5. I get the same output as you with my successful first-reboot-during-install (except mine doesn’t have the OSX_10_14_IncompatibleAppList.pkg which is interesting). What do you get with `diskutil list`?

            I get this: (disk1 is the hard disk, with disk3 being the APFS partitions that are hosted by it).

            BTW what is your host CPU?

          6. I have the same issue with only the macOS Base System disk showing in Clover.

            However if I open the OVMF boot manager during boot (F2) and choose to boot from the first alternative called UEFI QEMU HARDDISK QM00003, I can see all the other disks in Clover.

            What’s weird here is even though this boot option is supposedly the first option during normal boot, it still only shows the Base System disk, unless I specifically open the boot manager and chose this disk.

            Not sure whats causing this or how to fix so normal boot works.

          7. Interesting, good find!

            First double check that your Options -> Boot Order setting in Proxmox points to the Clover disk and try again.

            If that doesn’t work, in Clover, please try navigating to the “Clover Boot Options” menu (second from the left), then select Remove all Clover boot options, then reopen the Clover Boot Option menu and select “Add Clover boot options for all entries”. Then try stopping the guest and re-starting it and see what it boots!

            You can also use the guest UEFI “Boot Maintenance Manager” to manually re-order the boot order and delete unwanted entries.

        2. Ok, so after reading the comment by fREAST, i went in to the BIOS and chose that volume told it to continue, and Clover was able to see all the volumes properly now!

          I had it complete it’s boot so it could finish intall, and all appears to be ok. It is even using the correct default option on reboot without having to go into the BIOS.

          Thank you for your help and Thank you fREAST for your comment!

  66. “Run the first bit of C code from this page (you’ll need XCode installed) and it’ll print out the 64 character OSK for you. Make a note of it.”

    On Mojave 10.14.5, I get 64 character OSK:

    Any solution?

  67. Has anybody tried to see is this will work on the new Proxmox 6.0 beta?

    Do you need a new patched version of the OMVF library?

    1. A new patched version is required, which I haven’t built just yet. I’m planning to try out Proxmox 6 Beta soon so I should hopefully have that within a week.

      1. I’ve now released an updated OVMF library, and my existing Mojave VM boots fine on Proxmox 6 Beta. I haven’t migrated my full Proxmox passthrough setup over to 6 just yet though.

        1. Cool, I will spin up a lab box and give it a try.

          Also – do you know if MacOS Catalina (beta) will work with your procedure?

          1. One of our users was able to update an existing Mojave build to Catalina, and it boots successfully. Anecdotally, they reported it appear to run a bit slower. Could that be related to the Clover build, or would that only affect the boot process?

            I’d like to do a clean-install with Catalina as well – I assume that would require the updated Clover build you mentioned?

  68. Clover’ll only affect the boot process, anything after that shouldn’t be affected.

    If you can boot Catalina with my current Clover version then it’s very likely that you can install it with that version too. The installer seems to be less demanding than the installed OS.

  69. I installed Mojave and the first post install reboot goes without problems. When its time to boot Mojave all clover show is the Base Image iso and keeps booting a fresh install, not option to boot the just installed Mojave.
    Any ideas why Clover is empty? I chose MacOS journaled as file system.

    Also; when I add a UEFI disk to the VM I get a black screen and no bootup. Without the UEFI disk image all goes well.

    1. macOS journaled isn’t an option, the installer will have reformatted that to APFS for you at the start of installation.

      Please check out the previous few comments about manually picking the boot device from the UEFI menu – we’re not sure why this seems to be required now. Definitely don’t try to move forward without the EFI disk being attached, or you’ll get nowhere.

      Did you install the pve firmware deb? It’s required.

  70. Hello,

    Thanks for the amazing guide. It worked great for me on Proxmox 5.x but since upgrading to Proxmox 6 I can’t boot OSX or the installer. I get the standard:
    End InitBootStruct
    Start LoadRAMDisk
    End LoadRAMDisk
    Start FinalizeBootStruct
    Start RandomSeed
    End RandomSeed

    Any ideas what could be going on?

    Thanks again!

    1. It was me being an idiot… after upgrade I needed to install the patched driver again. Thanks again for the guide.

      1. Haha no problem! I was thinking that apt-marking pve-edk2-firmware as held would have broken the in-place upgrade process to Proxmox 6 entirely, so macOS just not booting is getting off lightly by comparison :).

        1. I got away with in place upgrade and pve-edk2-firmware marked as held, not sure if i was lucky or what but proxmox was fine and macos continued to boot like normal.

  71. Hi,
    I have followed your guide and when I boot (with -v) all is well for a few seconds “End Random Seed then +++++++++++++++++++++ then the display goes stupid and all the text is in top 3rd of screen and smeared multiple times (x12) across the screen. It finishes booting but is obviously unusable.

    Any thought on how to resolve this?

    PS I am using the latest Mojave extracted using Kholia’s script and dmg2img’d.

    1. This is what happens if the screen resolution in your OVMF settings is not set to match the resolution configured in Clover.

      You may need to hit “reset” on your VM when you reach the Clover boot screen for the resolution to be applied correctly.

  72. Hi,

    After installing MacOS, it doesn’t appear in Clover. However, oddly enough, when I start the VM and hit escape, then boot menu and select the Clover disk, it appears and boots fine. What could cause this?

    1. Check out the comments above about the boot maintenance manager. The root cause of this problem is still unknown, it seems that it also affects non-Mac VMs on Proxmox 6.

  73. Great writeup. I successfully have this working with proxmox 6, passing through all 24 of my cores. Question: I have a 10gbe interface in proxmox. I tried adding this to a virtual interface and adding to macos, but it only shows up as 1gb. Any clues how I can assign a 10gbe interface to os x? I also tried pcie passthrough but ran into iommu issues so direct hardware passthrough may not be an option.

    1. The emulated networking runs as fast as your CPU will allow, try benchmarking it and you’ll probably find that it exceeds 1Gbit.

      The true solution for performance here will definitely be PCIe passthrough though!

  74. Hi first of all thank you!
    I have a i5 5820k which has 6 cores 12 threads. I can only get 8 vcores in the config. If I change the cores in the UI greater than 8, clover will boot but OSX boot will reset the VM. Any idea how can I get the full 12 vcores working inside the VM?

    1. So I finally figured out. As said in previous comments, the VM doesn’t like “odd” number of cores. But it seems to do fine with odd number of sockets. To passthroug the 12 cores, I added “-smp 12,cores=4,thread=1,sockets=3” to the args section of the config, and it worked fine.

  75. Thanks for the great guide!
    I’m currently running Proxmox 6 and am installing macOS 10.14.
    When attempting to passthrough a GPU (Radeon WX4100), the VM crashes at about 70% of the loading bar after a few purple lines appear. The display then goes blank and I have to reboot the system.
    The setup works perfectly without gpu passthrough.
    Any possible solutions?

    1. Proxmox 6 shipped with QEMU 4.0.0 which introduced a regression in the q35 machine model, and this breaks most passthrough devices. You can add “-machine type=q35,kernel_irqchip=on” to your “args” line to fix this (this returns the IRQ handling to the previous, working, QEMU 3 model).

      Another thing to try is to use Clover Configurator to set your SMBIOS to “iMac 14,2”, that’s the version I’m using.

      1. Thanks for the suggestions!
        I was already using the kernel_irqchip setting as well as the q35 machine type. I then attempted the iMac 14,2 SMBIOS, but encountered a difficulty with Clover resolutions.

        The 1920×1080 OVMF settings now results in the distorted Apple logo/loading bar on boot. I have tried several other settings, but they merely result in the Apple logo shifting to different locations on the screen. What OVMF resolution are you using?

        1. My OVMF resolution setting has no deleterious effect with my passthrough R9 280X video card – even if it doesn’t match Clover, macOS sorts itself out with no crash once it initialises the graphics system (at about the 80% mark on the progress bar).

          Check your config.plist in your Clover EFI partition to see what resolution Clover is configured for (you can do this from Clover’s built-in shell), then set OVMF to match. The Clover image I provide here has the resolution set to 1920×1080, but you may have modified this in the course of updating your SMBIOS settings. The setting appears in GUI -> ScreenResolution.

          Note that you may need to select Reset when the Clover menu first appears in order to have the resolution you chose in OVMF applied successfully (you can tell that this is going to happen when the “Proxmox” logo appears to be the wrong size [too big] during boot). Since it even affects the Proxmox logo, this appears to be an OVMF/Proxmox bug.

          EDIT: Oh I nearly forgot, try adding the Lilu and WhateverGreen kexts to your Clover setup, I can’t remember if my setup worked correctly without these.

          1. I cannot thank you enough for your help.

            Checking Clover settings, my resolution was changed to 2048×2048, and changing OVMF settings to match this allowed me to boot successfully.

            I then installed Lilu and WhateverGreen, and my VM now boots MacOS successfully with the WX4100 installed.

  76. first of all thanks for the great tutorial!
    Now, here is my issue:
    Starting the vm I cannot access OVMF configuration fast enough.
    Right after the vm starts is shows me ” Guest has not initialized the display (yet)”
    Any idea how can I fix this?

  77. thank you for the tutorial!
    really needed something like this..
    but I run into a problem i haven’t seen described here:

    as soon as I hit install Mojave, I just see the Apple logo, and nothing else.. just stuck there..
    I’m on proxmox 6.0-4
    got the latest patches as per updated tutorial,
    and .conf looks like this:

    args: -device isa-applesmc,osk=”greatkey” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2
    balloon: 0
    bios: ovmf
    boot: cdn
    bootdisk: ide2
    cores: 4
    cpu: Penryn
    efidisk0: local-lvm:vm-7900-disk-1,size=128K
    ide0: local:iso/Mojave-installer.iso,size=2085288K
    ide2: local:iso/clover-r4920.iso,cache=unsafe,size=256M
    machine: q35
    memory: 8192
    name: osx-test
    net0: vmxnet3=FA:F8:E6:73:EA:08,bridge=vmbr0,firewall=1
    numa: 0
    ostype: other
    sata0: local-lvm:vm-7900-disk-0,cache=unsafe,size=64G
    smbios1: uuid=3c8137d2-62b5-4ebf-866a-9ef889681a8a
    sockets: 1
    vga: vmware
    vmgenid: 1d7078b9-bfd9-4ff1-bf03-6da28afce03c

    has anything changed? my other guess is that at that point the VM is trying to establish a network connection? then I would have to adjust network setup, although I do doubt that’s the case..

    I also tried to chmod 777 clover and mojave images in proxmox server, but again I think it’s just clutching the straws and going out on a limb trying out everything..

    appreciate any help and suggestions!

    1. I don’t think it needs the internet until later, but you may as well fix that now because you can’t install without it.

      On the Clover boot screen, hit space on the installer option and tick Verbose boot. This’ll give you clues on where it gets stuck.

      1. the all powerful verbose mode. of course.
        but even so, the last few lines are:

        Start RandomSeed
        End RandomSeed

        and that’s it. not sure what it’s supposed to start afterwards.
        that being said, I saw quite a few people are having this issue and the answers do vary a little bit, so I will try the solutions offered.
        I will post an answer here if I find what works for me

        thanks again!

      1. FYI during the installation after the first reboot the Clover didn’t show the new options.
        I resolved this issue by running a chmod 777 on clover and mojave image on proxmox server.

  78. Hi,
    Thanks for sharing this guide and maintain OVMF patch!

    Based on your tests and Qemu regression, do you recommend to stay on Proxmox 5.4 or to upgrade to Proxmox 6 ?

    1. That machine model quirk is the only issue I’ve found, and it was easily worked around. I think that has been fixed in QEMU 4.1 so eventually it will not be a problem at all.

      Upgrading to Proxmox 6 is okay. I like the new ZFS 0.8 features!

  79. What technique do you use to avoid the AMD reset bug, may I ask?

    I’ve seen mention of at least a half dozen approaches:
    – a machine-specific shell script plus a reset program
    – restoring the GPU BIOS by copying a ROM BIOS image
    – manually detaching the GPU just before stopping the VM
    – configure Windows 10 to detach the GPU at shutdown
    – don’t pass through the GPU audio (just the video)

  80. Ah. That’s the smart approach.

    I have a pair of Vega 56 cards and a CPU-internal GPU, and I’m about to install Proxmox 6. Then I’ll stop and restart Mac OS and Windows VMs a few times to see what happens. I’ll try the shell-script-plus-reset-test fix if I have to reach for the power switch more than once.

    I also have Red Hat Virtualization to try out. (Perhaps a Red Hat programmer changed the VM start/stop code — plus maybe added some code to virtio-gpu? — to keep RHEL Virtualization customers from running into the reset bug.) (Wishful thinking, I suppose.)

    Have you known anyone to successfully run Mac OS within the RHEL Virtualization environment?


    1. Sorry, I’ve never heard of someone using that platform for Mac OS. If you do go the Red Hat option, you’ll probably need to provide OVMF_CODE.fd from this repository:

      That contains my patch to OVMF that marks the pagetables as read-write (Clover can’t boot if OVMF has marked the pagetables readonly).

  81. Excuse me. I am try to install Mojave on PVE6. I try 2 time and can’t find out what I miss. Clover on but cannot detect Mojave boot disk, no any boot option detect. Please advice. Here is my conf. (This PVE run on my MacPro)

    args: -device isa-applesmc,osk=”…” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2
    bios: ovmf
    boot: cdn
    bootdisk: ide2
    cores: 4
    cpu: Penryn
    efidisk0: local-zfs:vm-104-disk-1,size=128K
    ide0: local:iso/Mojave.iso,media=cdrom,size=2096900K
    ide2: local:iso/clover-r4920.iso,cache=unsafe
    machine: q35
    memory: 8192
    name: Mojave
    net0: vmxnet3=96:9E:42:BE:D6:BB,bridge=vmbr0,firewall=1
    numa: 0
    ostype: other
    sata0: local-zfs:vm-104-disk-0,cache=unsafe,size=64G
    smbios1: uuid=2c369027-3223-44ad-9d37-a863fec90acc
    sockets: 1
    vga: vmware
    vmgenid: 8f72bd93-632b-4dc3-8c99-86c0c74d0ed9

      1. would like to say thank you for your instruction and your kind review my config. and to let you know that’s after fix, I can follow your step with 6.0-6 successfully. Only if the system stop at 1 mins left for long just force reset it and try again.

        My machine is MacPro 2013 and now I will migrate this vm to DELL 630 XEON server.

        1. Hmm I’m not sure what would trigger that. Maybe double check that in the installer, you can use the Terminal feature from the main menu to ping – the installer needs to have access to the internet to download Mojave for installation.

  82. root@proxmox:~# cat /proc/cpuinfo | grep “model name”
    model name : Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
    model name : Intel(R) Xeon(R) CPU E5405 @ 2.00GHz

    root@proxmox:~# cat /proc/cpuinfo | grep flags
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 lahf_lm pti tpr_shadow vnmi flexpriority dtherm

    I assume this is not good enough for a Hackintosh 🙁 or is it ?

  83. Proxmox 5.4-13
    Started the VM
    Got to Clover, pressed return (on the drive icon)
    Got an apple logo and half-way through the progress bar .. reset and back to proxmox
    any ideas please?

    1. Press space on the icon and choose verbose mode and boot, this’ll let you see what happens just before the reboot. You can also tick the option for no reboot on panic.

  84. Hi @ll,
    hi Nicholas!
    I stuck on rebulid the VM. Some *.conf’s were deleted on one of my Proxmox-Hosts.
    I rebuilt an conf for my allready running macOS14 VM, machine. I was take the old efi and disk (with clover included) and put them in the new conf. Clover is running fine, i choose the macOS14-vm-disk to run with “-v” (verbose-mode) and the startup hangs at:
    “End RandomSeed
    – pve-version 5.4-13
    – RAM is on 4096
    – the echo command from above was run
    – the patch with a debian 9 LXC was already installed (“make”)

    i’ve no more ideas about solving this :/ may anybody else 😉


    1. That’s exactly the symptom you get if the patched pve-edk2-firmware package wasn’t installed – double check that you ran “dpkg -i” on that built package on the Proxmox host (and not accidentally inside the LXC container).

  85. Hi Nicholas

    I followed your great tutorial but I wasn’t able to boot in to the installer.
    Everything was fine on the first look, but I always got an error during boot of the installer.

    Here’s a Screenshot of the last message:

    And here you can see the whole boot process:

    Does you’ve any idea what’s going wrong?

    Here’s also an output of my config file:

    Thanks in advance for your time!

    1. In your OSK it looks like your editor has converted the “(c)” into a Unicode copyright symbol – you’ll need to switch that back.

      1. Hm… I’ve installed 10.14.6 (it took approx. 20-25 minutes on my ssd).
        After final reboot there’s no “Macintosh HD”. Only the initial installer is visible. What I’m doing wrong?

  86. You should update your tutorial to use VirtIO block instead of SATA. Latest Mojave version added support for it and it’s MUCH faster.

    1. Did you get a chance to test this yourself?

      Does it work?

      There were other reports online that it only works in “legacy” mode, whatever that means. (SeaBIOS?)

  87. Hi,
    I installed mojave with the mentioned args. Later I tried to set some other args, more depending on my CPU. I can not measure any performance advantages.
    Is it necessary to start the mojave installation process again with the new args?

  88. Hi,

    been reading through this post and comments…
    I’d like to create a High Sierra VM on proxmox 6 with GPU and USB passthrough, BUT I’m a total noob…
    Can i just use this guide with no prior knowledge or can you point me to a step-by-step guide for dummies.
    I only have one GPU (vega 64), so i guess i need a second one for the host, right ?
    Thanks for any help

    1. The host doesn’t need a GPU because Proxmox runs headless anyway.

      I don’t have a guide for passthrough on my blog, but you can check out the Proxmox wiki for PCIe passthrough, and my post that shows my passthrough config:

      Note that Vega GPUs currently have a problem where your host will need to be power-cycled before the GPU can be used a second time. (“Vega reset bug”)

      1. so basically, could i already your your tut here as a copy-paste method to get things rolling and afterwards tweaking it by adding the passthrough method by trial or error or is this wishful thinking ?
        PS : how much time takes your tut to implement as such ?

        1. BTW I realised after I posted my last reply that the Vega reset bug is likely to be a problem for you if you only have one GPU – since your system will initialise your Vega during boot, it won’t be able to be reset for the VM to use afterwards. I’m not certain if this is fatal on Vega, it could be that because Proxmox will only be running it in text mode, it’s not an issue. If your motherboard/CPU has inbuilt graphics, you can set your host to use that instead which solves that issue.

          This tutorial for installing macOS is complete as far as I know, so all the instructions you need are right here on this page. For passthrough you’ll need other resources.

  89. ok, thanks for clearing up that issue.
    From where should I expect a solution for this bug : AMD themselves or the proxmox community ?
    In the meantime, would it be safer to get a second ‘cheap’ GPU for the host ? If so, what budget cards would you recommend ?

  90. @nicksherlock I want to send my appreciation for your time and work. I am running Proxmox 6.0-1 on a Dell T620 with dual 2.0ghz Xeon’s for a total of 24 logical cores and as of now only using onboard graphics. I have followed each step of the guide and am able to boot into clover as well as see the OSX installer after changing said disk back to media=cdrom. What I am experiencing is a kernel panic at AppleSMBusPCI::start failed to get acpi path for provider, which then boot loops me. I have applied QEMU patch, first by downloading it and installing, then after many failed attempts to boot as well as reading this error could be a QEMU issue, I also patched by compiling from source. Both times I hardened the patch so it would persist after reboot as your post suggests. I also ran systemctl restart daemon to make sure all settings took effect. To my dismay I am still unable to boot into the installer. Have you any idea what else might cause this type of kernel panic? I have tried to boot with every flag in clover as well as made sure my display was set to the correct aspect ratio. If you have time to reply to this thread I would greatly appreciate it, either way thanks for the work man.

    1. Most likely your OSK in your args is incorrect. Double check it and make sure that the quotes around it haven’t been replaced with curly-quotes by your text editor, and the (c) hasn’t been replaced by a Unicode copyright symbol.

      No QEMU patch is required – pve-edk2-firmware is the one to install, which is a patch to the OVMF firmware, not QEMU.

  91. Hello, my configuration file is like this, but it doesn’t load even 50% of the initial load and it goes back to clover.
    With verbose enabled returns error ** AppleSMBusPCI :: start failed to get acpi path for provider

    args: -device isa-applesmc,osk=”ourhardworkbyt*********l(c)AppleComputerInC” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2
    balloon: 0
    bios: ovmf
    boot: cdn
    bootdisk: ide2
    cores: 4
    cpu: Penryn
    ide0: local:iso/Mojave-installer.iso,cache=unsafe
    ide2: local:iso/clover-r4920.iso,cache=unsafe
    machine: q35
    memory: 4096
    name: mojave
    net0: vmxnet3=0A:EA:A4:6E:B0:5E,bridge=vmbr0,firewall=1
    numa: 0
    ostype: other
    sata0: local-zfs:vm-102-disk-0,cache=unsafe,size=64G
    smbios1: uuid=4c6f2641-5629-4199-8a27-a05ef845af5e
    sockets: 1
    vga: vmware
    vmgenid: 79388567-7321-4dde-83da-081460e367f5

    1. Your osk ends in “C” but it should be “c”. Also in your comment the quotes around the OSK are curly quotes, but they need to be straight ones. This might just be WordPress’s fault though.

        1. I did the first part of the installation, got to install 6gb on the disk, but on reboot was on the glover screen. Could you tell me what it can be? I didn’t find anything in the comments

          1. I did one again and the settings and it worked. Just look for a good remote access program to use on network.

  92. Hi,
    First, thank you,I successfully installed macOS on my Proxmox!

    But now I have a problem about GPU passthrough.

    I have a vega64 GPU works well with another Windows10 VM in the same host Proxmox.

    But when I add it into the macOS VM and try to boot it,it failed and showed status like this:
    kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
    kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
    kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
    kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
    kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
    kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
    kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
    kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
    kvm: -device vfio-pci,host=46:00.0,id=hostpci1.0,bus=ich9-pcie-port-2,addr=0x0.0,multifunction=on: vfio 0000:46:00.0: device is already attached
    TASK ERROR: start failed: command ‘/usr/bin/kvm -id 101 -name macos -chardev ‘socket,id=qmp,path=/var/run/qemu-server/101.qmp,server,nowait’ -mon ‘chardev=qmp,mode=control’ -chardev ‘socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5’ -mon ‘chardev=qmp-event,mode=control’ -pidfile /var/run/qemu-server/ -daemonize -smbios ‘type=1,uuid=3cf7f740-bf7e-4f5e-ab53-d7cf127a64d5’ -drive ‘if=pflash,unit=0,format=raw,readonly,file=/usr/share/pve-edk2-firmware//OVMF_CODE.fd’ -drive ‘if=pflash,unit=1,format=raw,id=drive-efidisk0,file=/dev/zvol/hackintosh/vm-101-disk-1’ -smp ‘8,sockets=1,cores=8,maxcpus=8’ -nodefaults -boot ‘menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg’ -vnc unix:/var/run/qemu-server/101.vnc,password -cpu ‘Penryn,+kvm_pv_unhalt,+kvm_pv_eoi,enforce,kvm=off,vendor=GenuineIntel’ -m 12288 -device ‘vmgenid,guid=d858d21f-340b-4b54-8dd3-873e7d725f44’ -readconfig /usr/share/qemu-server/pve-q35-4.0.cfg -device ‘usb-tablet,id=tablet,bus=ehci.0,port=1’ -device ‘vfio-pci,host=46:00.0,id=hostpci0.0,bus=ich9-pcie-port-1,addr=0x0.0,multifunction=on’ -device ‘vfio-pci,host=46:00.1,id=hostpci0.1,bus=ich9-pcie-port-1,addr=0x0.1’ -device ‘vfio-pci,host=46:00.0,id=hostpci1.0,bus=ich9-pcie-port-2,addr=0x0.0,multifunction=on’ -device ‘vfio-pci,host=46:00.1,id=hostpci1.1,bus=ich9-pcie-port-2,addr=0x0.1’ -device ‘vmware-svga,id=vga,bus=pcie.0,addr=0x1’ -iscsi ‘’ -device ‘ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7’ -drive ‘file=/dev/zvol/hackintosh/vm-101-disk-0,if=none,id=drive-sata0,format=raw,cache=none,aio=native,detect-zeroes=on’ -device ‘ide-hd,bus=ahci0.0,drive=drive-sata0,id=sata0,bootindex=100’ -netdev ‘type=tap,id=net0,ifname=tap101i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown’ -device ‘vmxnet3,mac=AE:09:8F:13:DA:E7,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=200’ -machine ‘type=q35’ -device ‘isa-applesmc’ -smbios ‘type=2’ -cpu ‘Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check’ -device ‘usb-kbd,bus=ehci.0,port=2” failed: exit code 1

      1. Oh,yes!
        My vega64 is 4,6:00.0 ,and 46:00.1 is theVEGA’s HD audio controller. But in the webUI,when I add both them into my windows10 VM,the hardware shows 46:00.0 for GPU and 46:00.1 for AUDIO controller.And it works fine.

        However, in the Hardware of macOS VM, both of them shows as 46:00(hotpci1 is “46:00,pcie=1,x-vga=1” , hotpci2 is “46:00,pcie=1”).
        I try delete the second one and add it again / delete both of them and add both of them ,all failed.Every time they both 46:00 and unable to boot.

        1. Don’t use the UI, just edit the VM config file in /etc/pve/qemu-server. You only need one entry for the card (46:00), that automatically includes both the sub devices (.0 and .1)

          1. Yes, I try edit vm_id.conf and add line “hostpci0: 46:00,pcie=1,x-vga=1”.
            Boot is OK but nothing show in the screen and still

            kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
            kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
            kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
            kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
            kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
            kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
            kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
            kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
            TASK OK

          2. Did you try resetting the host to avoid the Vega Reset Bug?

            Did you set “vga: none” to disable the emulated graphics?

        2. I try only add 46:00.0 to VM but still shows 46:00,pcie=1,x-vga=1
          not 46:00.1.
          And this time VM can boot,but no signal to screen.Also something wrong:

          kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
          kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
          kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
          kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
          kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
          kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
          kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
          kvm: warning: host doesn’t support requested feature: CPUID.01H:ECX.pcid [bit 17]
          TASK OK

          1. “46:00,pcie=1,x-vga=1” is perfect, that’s exactly what you want. That includes both 46:00.0 and 46:00.1.

            Vega cards suffer from the Vega Reset Bug, have you tried restarting the host?

            Those warnings ending in “pcid” are just telling you that you tried to pass that CPU feature but your CPU doesn’t support it. You can ignore that. That’s a Meltdown bug mitigation feature.

  93. Sorry I miss one of your reply and during that time.
    try use UI to add only 46:00.0,its failed
    also try edit conf to add 46:00,also failed.

    Now I first change setting by edited conf and then reboot the host,
    same wrong massage appeared again.

    1. Those warnings aren’t causing a problem and you can ignore them.

      “hostpci0: 46:00,pcie=1,x-vga=1” is the correct line and it sounds like you already have that.

      Do you see the Proxmox boot logo on the screen at least? Try one of the other connectors on the card too.

      Post your VM config.

      1. I have two monitor and they always pluged into the two HDMI port of VEGA64, both them shows nothing.
        Then I try only No.1 HDMI port with monitor1,
        only No1 hdmi port with monitor2,
        No2 with Monitor1,
        No2 with Monitor2.
        All of them failed, by the way can’t see Proxmox boot logo on the screen.

        Since I remember have another GT710 card on board(when I was use ESXI I need it).I tried add it to macOS VM(use UI,with out audio controller),and try boot VM.(with HDMI to monitor1)
        Then,it works,still shows those pcid massage ,but can see Proxmox logo and also see the CLOVER BOOT MANAGER.
        So,what wrong with the VEGA card?

      2. First, the conf of use GT710
        args: -device isa-applesmc,osk=”…” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2
        balloon: 0
        bios: ovmf
        boot: cn
        bootdisk: sata0
        cores: 8
        cpu: Penryn
        efidisk0: hackintosh:vm-101-disk-1,size=128K
        hostpci0: 43:00,pcie=1,x-vga=1
        machine: q35
        memory: 12288
        name: macos
        net0: vmxnet3=AE:09:8F:13:DA:E7,bridge=vmbr0,firewall=1
        numa: 0
        ostype: other
        sata0: hackintosh:vm-101-disk-0,size=195G
        smbios1: uuid=3cf7f740-bf7e-4f5e-ab53-d7cf127a64d5
        sockets: 1
        usb0: host=7-3
        usb1: host=7-2
        vga: none
        vmgenid: d858d21f-340b-4b54-8dd3-873e7d725f44

        Second the conf of use VEGA 64
        only 43:00 changed to 46:00 other conf is the same.

        1. Fixed the problem by switched the vega64 from PCIEx16_1 to PCIEx
          16_3,and plug my gt710 into PCIEx16_1,and now it works fine.I have my vega64 hardtube watecooled,it hard for me to make such a decision,but it worth.Only one thing strange(Before,pcie_1 with vega=41:00,and pcie_3 with gt710=42:00.After,pcie_1 with gt710=41:00,but pcie_3 with vega=0b:00 instead of 42:00).

  94. Hi and thanks for the tutorial. I’m having trouble booting beyond the installer. Clover boots fine, and the installer boots just fine as well. Disk utility sees the disk and I install to it correctly APFS.

    After it reboots, clover only has the installer option and not anything on the new drive installed. Thoughts?

  95. Hi,

    I just tried to build a new Mojave instance, using the instructions here.

    This is on Proxmox 6.0-7.

    However, I am getting this weird graphical glitch, where the MacOS desktop appears as a tiny pixelated box, and it’s duplicated many times horizontally:

    Here is my QEMU conf file:
    args: -device isa-applesmc,osk=”…” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check -device usb-kbd,bus=ehci.0,port=2
    balloon: 0
    bios: ovmf
    boot: cdn
    bootdisk: sata0
    cores: 4
    cpu: Penryn
    efidisk0: fast_vm_storage:vm-504-disk-1,size=128K
    machine: q35
    memory: 8192
    name: mojave-base
    net0: vmxnet3=DA:D6:D8:03:B6:2E,bridge=vmbr0,firewall=1
    numa: 0
    ostype: other
    sata0: fast_vm_storage:vm-504-disk-0,cache=unsafe,size=64G
    smbios1: uuid=7fd4562e-ab74-4df2-903d-197ece0fa680
    sockets: 1
    vga: vmware
    vmgenid: f1234491-8337-4441-89f9-9fd8a44ab35b
    Any idea what’s going on, or how to fix this please?


    1. That’s the symptom you get if your resolution set in the guest UEFI settings doesn’t match the resolution that Clover is configured for.

      Note that you will probably have to hit “reset” the first time you reach the Clover menu for the resolution to actually get applied. You can tell if the resolution has been applied properly by looking at the size of the Proxmox logo on boot – if the higher resolution hasn’t been applied yet, the logo will fill most of the screen.

  96. Hello, and thank you so much for this excellent guide!

    I have two different machines running Proxmox. I am running into a stubborn problem that is prevent this from working on the first box (Older hardware, new Proxmox 6.0 install). I went through the guide three or four times on the first box (After getting past user-error), with the same result: on the Proxmox boot screen, it hangs about 2/3 of the way through the progress bar, displays the following message for a minute or two, and then dumps to the UEFI shell:

    BdsDxe: failed to load Boot0001 “UEFI qemu harddisk qm00013 ” from PciRoot (0x0)/Pci(0x1E,0x0)/Pci(0x1,0x0)/Pci(0x7,0x0)/Sata(0x0,0xFFFF,0x0): Not Found’

    Since I had another box available (Newer hardware, but still on Proxmox 5.4), I went ahead and tried it on there – So far so good, I have a working MacOS Mojave VM. I’m thinking the issue comes down to one of three things:

    1. first box has incompatible hardware (my best guess)
    2. there is an issue with this on Proxmox 6 (I personally doubt that’s what is going on)
    3. I did something wrong (Normally I’d assume this, except for the same process worked on box #2. It’s certainly still possible though).

    I saw the requirements at the very beginning (CPU must support SSE 4.2) – From what I can see, this should be good –

    I also had a look through Kholia’s guide which you referenced at the beginning – They also had requirements listed, which seemed to mostly check out – They did indicate that AVX2 is required for Mojave, which doesn’t seem to be listed on the cpu-world info for those Xeon E5-2670s, but I got the same behavior out of High Sierra (Which this system did appear to meet all of Kholia’s listed requirements), so I’m not sure that’s what is going on

    My hardware is this:

    Box #1 (Unable to get working):
    Motherboard: Asus Z9PA-D8
    CPU: 2x Intel Xeon E5-2670
    RAM: 64GB DDR3

    Box #2 (This guide worked like a charm):
    Motherboard: Supermicro X11SSW-F
    CPU: Intel Xeon E3-1240V6
    RAM: 16GB DDR4

    The availability of RAM, as well as some other conditions such as the location of the boxes makes it preferable for me to host this on box #1

    Finally, I just want to thank you again for providing an awesome guide on how to get a working MacOS VM on Proxmox. This is seriously going to be a lifesaver when I have to send my Macbook in for a warranty request, so thanks again!

    1. Avx2 is a bonus, not a requirement. I have the same CPU as you.

      Check out the comments above about the boot manager. It seems like the UEFI boot entries don’t get updated properly on some Proxmox 6 and must be manually selected.

    2. It could also relate to CPU flags and CPU topology (threads, cores, SMP, NUMA)… So my settings (same motherboard, but dual E2680V2) I have:

      -smp 32,sockets=2,cores=8,threads=2

      -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check

      And that is working perfectly side by side with a few containers and a few servers – and a Win10 gaming PC (a GTX 1060 for the Windows machine, and a RX580 for the mac 🙂

  97. So I followed the instructions, including the patch, but when I hit enter on the Clover screen, the Apple logo shows a for a few seconds, then it loops back to the Proxmox screen. Any idea as to why this might be happening?

      1. Yeah turns out it did get cut off, and part of the -smbios argument was cut off too, but even after fixing it, it still does the exact same thing 🙁

          1. rgs: -device isa-applesmc,osk=”our…Inc” -smbios type=2 -cp$
            balloon: 0
            bios: ovmf
            boot: cdn
            bootdisk: ide2
            cores: 3
            cpu: Penryn
            efidisk0: local:100/vm-100-disk-1.raw,size=128K
            ide0: local:iso/Mojave-installer.iso,cache=unsafe,size=2085568K
            ide2: local:iso/clover-r4920.iso,cache=unsafe
            machine: q35
            memory: 8192
            name: MacOS-Mojave
            net0: vmxnet3=E6:B8:62:26:62:50,bridge=vmbr0,firewall=1
            numa: 0
            ostype: other
            sata0: local:100/vm-100-disk-0.raw,cache=unsafe,size=64G
            smbios1: uuid=4a464962-5177-4015-94d1-e0907604aaed
            sockets: 1
            vga: vmware
            vmgenid: b403d8fa-cc1a-42eb-b464-5bb9f9374497

          2. Cores: 3 is very unlikely to work, try 2 or 4 instead. Make sure the osk=”” doesn’t use curly quotes (they were curly in your quote but it may just have been WordPress messing that up for you).

  98. Is it possible to get a working macOS KVM installation from proxmox and back it up then send it to someone else and they restore it? Would seem much easier than all the steps taken by this tutorial.

    1. Yep it sure is, but it’d be even more of a copyright violation than this. Also you should avoid running 10GB of binaries from strangers that you can’t possibly verify…

  99. My attempt to install VMware Tools failed: VNC got flaky until becoming unresponsive, and the machine became unreachable via SSH. Apparently the network stopped working, or so I guess. Uninstalling VMware Tools improved the situation, VNC and general network connectivity is back again. Nonetheless, I am still unable to connect via screen sharing from another Mac (despite enabling it, obviously). Any ideas on that?

    1. MacOS already has built in drivers for all the hardware, installing VMWare tools is neither necessary nor recommended.

      Check that you can ping it from your other Mac, and try connecting by IP address rather than hostname.

      1. Considering my experience I’d suggest to explicitly mention in the post that VMware Tools are not recommended — they do more harm than good. I somehow read the text like it may be worth it. My screen sharing issue is probably unrelated, I’ll post here in case I lean otherwise.

        BTW, I am blown away how fast you replied. Your work here is totally awesome, many, many thanks!

  100. Hi,

    After installation, the machine reboots to Clover but it reproposes to reinstall MacOS.

    I formatted the hard disk well as indicated and after installation it has occupied space.
    Any ideas?

    Thank you 🙂

    1. Hit F2 at the start of boot and use the Boot Manager to pick a different option. The reason why this should make the hard disk appear in Clover is a total mystery.

  101. args: -device isa-applesmc,osk=”[…]” -smbios type=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-fre
    bios: ovmf
    bootdisk: ide2
    cores: 4
    cpu: Penryn
    efidisk0: local:100/vm-100-disk-1.raw,size=128K
    ide0: local:iso/Mojava-installer.iso,cache=unsafe
    ide2: local:iso/clover-r4920.iso,cache=unsafe
    machine: q35
    memory: 8192
    name: Mojave
    net0: vmxnet3=9E:16:3F:56:5A:20,bridge=vmbr2
    numa: 0
    ostype: other
    sata0: local:100/vm-100-disk-0.raw,cache=unsafe,size=64G
    smbios1: uuid=a0d6a3f5-43de-40be-93ec-54de66a1d368
    sockets: 1
    vga: vmware
    vmgenid: 5dd7e530-793c-4611-9f8d-ec9b367aacc8

  102. I’m a bit newbie to Proxmox and can’t find a way how to give internet to this VM in order to complete the setup. So far I reached the installer setup which isn’t allowing me to complete showing an error message “Install Requires Internet Connection”. I tried to give it internet from the BIOS by setting a dedicated IP with Gateway but this didn’t work, also I tried using terminal to use “ifconfig and ipconfig” to give internet access setting also a dedicated IP but also this didn’t work. Any solution how to give internet to this VM so I can continue the Installer Process?

  103. Even if setup the IP address, dns server and gateway on my network, the setup gives “the recovery server could not be contacted”… Any ideas?

      1. Hi. Using ifconfig in the builtin terminal, but I realised the OS ignored my edit to resolv.conf (the nameserver line), so I had connection (ping to any IP) but no name resolution. So, I ended up setting up a quick dnsmasq in an LXC container. All good now…

        1. Hi, I’m facing the same issue I can ping an IP however I can’t ping a hostname. When I continue I get “the recovery server could not be contacted”. If you google it they say it’s related time however our case is different related to hostname. Can you explain more about quick dnsmasq in an LXC container? I’m a newbie in that.

          1. Create an LXC container with a static IP from the subnet you will give over DHCP. Install dnsmasq (I use CentOS 7, so “yum install dnsmasq”. Then move /etc/dnsmasq.conf to /etc/dnsmasq.conf.bak and create a new file /etc/dnsmasq.conf with this content (replace 192.168.0.XXX with your subnet) and restart dnsmasq:
            # Disable DNS and enable DHCP
            # Set the gateway for this range
            # Set resolver

          2. Note that you’d only have to do this if your network doesn’t already have a DHCP server on it which is handing out a valid DNS configuration, which is unusual.

          3. I found the solution using isc-dhcp-server and this saved my day. Now I care about performance as I’m gonna use the MAC for development purposes thus CPU and RAM matters it’s easy to manage RAM however when I’ve upgrade CPU from Penryn to Haswell from UI and also from .conf file the OS didn’t start, any one had such issue?

          4. You can’t pass a CPU type higher than Penryn, but you can still pass through all of the individual CPU features that exist on newer generations and get the same performance. Just add new +features to the -cpu argument in the args line. You can run “cat /proc/cpuinfo | grep flags” on the host to see what features your CPU supports. e.g. you could add +avx2 for your Haswell CPU.

            If your workload is interactive then the absolute sticking point for performance is still the GPU – you need to PCIe passthrough a real GPU to get GUI performance that is remotely acceptable, check out some of the details of my setup

  104. Does spice console work for macOS as guest on Proxmox? Did anyone tried? Would like to have USB forward to the remote macOS guest.

  105. Do you know of any way to increase the hard disk size? Increasing the size in Proxmox does not change the size that the Mac see’s.

      1. I’ve tried while booting into boot recovery mode as well as with Mac OS up and running.
        Disk Utility see’s the added space (ie. 200GB (Orig) – 300GB(new)) but resizing has no effect.

  106. Problem with another disk:
    Hi, I installed catalina macOS. MacOS shows an orange destination drive while installation process. After the installation, there is still the orange drive on my desktop. The system works great so far.

    I tried to add another drive to the vm. The new drive is also an orange one.

    On my real mac, I have also 2 drives: one for the main macOS system and one for the users home directories. I tried to do that on the proxmox vm too.

    On proxmox I have the 2 orange drives now. Adding a user, and change it’s home directory to the second drive, failed. Sometimes the owner of the second drives directories switches to “_unknown” or the administrator name and I can not change it with “sudo chown” to the user name nor something else!

    What can be wrong with that?
    This is my current configuration of the 2 drives:
    sata0: sandisk:vm-100-disk-0,size=256G,ssd=1
    sata1: wdred:vm-100-disk-0,size=500G

    1. I have switched to using virtio instead of sata, now the mentioned problems are solved 🙂

      After a few tests there is a lot of screen flickering and sometimes everything goes black for a short moment (GPU pass-through from NVidia GT710). For this I am still looking for a solution…

  107. Thanks for sharing this! Worked flawlessly for me. I already had MacOs running natively on this hardware but now I can transition to ProxMox.

    One thing was not working for me – nested virtualization (based onApple’s hypervisor.framework). It took me a lot of time to work this out. Since MacOS wouldn’t boot with cpu=host no matter what I’ve tried (even played with tons of Clover settings, incl. fake CPUID) so I had to stay with Penryn. I’ve painstakingly compared CPU flags with what can be enabled and came up with a set that allows to run stuff like Docker for Mac and Parallels without a problem. Additionally the extra CPU instructions provide a performance boost in some workloads what can be clearly seen in geekbench.

    I’m on i7-8700 which has 6C/12T but macos won’t boot if I assign more than 8C in ProxMox. Even tried with enabling SMT via `-smp` switch to mirror the topology of the host processor 1:1 and it doesn’t work (works in Ubuntu flawlessly though). Anyway as this are threads anyway the performance difference between bare metal and virt is negligible and seen only in synthetic benchmarks. Difference in Geekbench 4 is 28k vs 24k points – bare metal vs VM.

    PS I recommend disabling all CPU bug mitigations using kernel cmdline since cross-vm security is not that important on a workstation setup usually (

    For other’s having the same problems, my `-cpu` parameter:
    -cpu Penryn,kvm=on,+kvm_pv_unhalt,+kvm_pv_eoi,+invtsc,+pcid,+ssse3,+sse4.1,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,+vmx,+msr,+pae,+pdpe1gb,+pse,+pse36,+f16c,+fma,+pclmulqdq,+rdrand,+rdtscp,+ss,+smep,+bmi1,+bmi2,+avx,+avx2,+invpcid,+erms,+clflush,+rtm,+mpx,+adx,+abm,+nx,+movbe,check

    1. BTW I don’t need nested virt in theory, as I’ve even got a second ProxMox “server” and plenty of resources to run any number of VMs I need, however, I am developing various solutions for local MacOs web-dev and I need to be able to test them like they were run on a Mac.

    2. CAVEAT: Of course this will not work on non-Intel CPUs. MacOs native hypervisor features (also Windows Hyper-V I gather) works only Intel VT-d)

    3. Interesting, I thought that required cpu=host, I’ve never seen that done based on passing individual features!

      For your core problem, try:

      -smp '12,sockets=3,cores=2,threads=2'

      Apparently macOS is fine with odd socket counts. Another option is:

      -smp '12,sockets=1,cores=8,threads=2,maxcpus=16'

      (4 threads will appear to be hot-unplugged at boot time)

      1. Thanks! The first topology (3 sockets) has worked for me, second one wouldn’t boot. I can see near bare-metal performance in Geekbench now 🙂

        Still, one thing that bugs me is the inability to shutdown the machine cleanly from HV. This seems to be a problem with OVMF since I cannot shutdown any UEFI VM without QEMU Guest Agent – neither Ubuntu nor Windows. I will post the info if I happen to find a solution.

Leave a Reply to Nicholas Sherlock Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.