In Sierra 10.12.4, macOS added some extra copy protection which is able to tell that the SMC emulation that QEMU provides is not a real Mac. This causes a fatal error during boot on Proxmox 4 and earlier. Proxmox 5.1 now includes the fix for this problem in its regular QEMU package so a patch for 5.1 is no longer necessary.
One way of fixing this would be to remove the SMC device from the virtual machine’s arguments, and use FakeSMC.kext instead, like a regular Hackintosh, but this is inelegant.
Instead, we can patch QEMU to fix the SMC support, using the fixes from here:
Building the fixed QEMU
If you just want to download the fixed QEMU .deb package, skip to the next section, otherwise you can follow these build instructions to create it yourself.
I’ve applied the patch to my copy of Proxmox 4.4’s version of QEMU, which is currently pve-qemu-kvm 2.7.1-4.
You can build the source directly inside Proxmox, but I didn’t want to dirty my Proxmox install with a bunch of development libraries, so instead I created a new Debian container in Proxmox for building.
The patched version’s source is here:
Use Debian 8 (Jessie) as the template to create a new container. Inside it, run:
# We want to be able to fetch Proxmox packages too: echo " deb-src http://ftp.debian.org/debian jessie main contrib deb http://download.proxmox.com/debian jessie pve-no-subscription " >> /etc/apt/sources.list apt-get update apt-get install ca-certificates -y # The dependencies for the Debian QEMU version are a good starting point: apt-get build-dep qemu -y --force-yes # Add some more tools and build dependencies: apt-get install git lintian fakeroot autotools-dev libpci-dev quilt \ texi2html check pve-libspice-server-dev glusterfs-common libnuma-dev \ libjemalloc-dev libacl1-dev libbluetooth3 libbrlapi0.6 libvdeplug2 -y --force-yes # Clone the source with the patch: git clone --branch sierra-smc-fix \ https://github.com/thenickdude/pve-qemu-kvm.git cd pve-qemu-kvm make
This results in a pve-qemu-kvm_2.7.1-4_amd64.deb file ready to be installed in Proxmox!
If you don’t want to build this package yourself, you can download the version I built instead:
In Proxmox, do a
apt-get update && apt-get upgrade to bring yourself up to date, run
apt-get install libbluetooth3 libbrlapi0.6 libvdeplug2, stop your virtual machines, then you can install the package with
dpkg -i pve-qemu-kvm_2.7.1-4_amd64.deb.
Keeping your version installed
You can use Apt package pinning to ensure this package isn’t replaced by a later Proxmox update:
apt-mark hold pve-qemu-kvm
Note for Clover
Note that injecting kexts using Clover in Sierra 10.12.4 requires a recent Clover revision, newer than r3994. I’ve updated my Clover installation instructions to include a new version which is compatible.