Hackintosh on AMD: Virtualisation is the Achilles heel

What started out as a little light reading on a rainy Saturday quickly spiraled into a weekend consumed with the elusive goal of getting macOS to boot on AMD hardware. You see, around 6 months ago, AMD launched their Ryzen lineup of CPUs and introduced the R1700. It didn’t take long before the internet got talking about how great these CPUs were for development heavy workstations and I started listening. I’d been using a Macbook Pro for > 4 years at this point and managed to hold off on getting a desktop, but I could wait no longer. The hype was too real.

The build was bitter sweet; The resulting machine was glorious, powerful and beautiful to look at, but I had to say goodbye to macOS. I gave Win10 a go, but that lasted about 6 hours before I feared I’d need a lobotomy. I welcomed Ubuntu, tried every flavour and settled on gnome.

Can’t say this tweet stood the test of time.

Happy as I was for 6 months, a video about macOS running on ryzen appeared in my youtube feed, and my eyes started to wander.

The catalyst

Working for a creative agency, our hardware and software choices are Apple-centric, and rightly so, everything just works. Acting like a proud but disallusioned parent, I excused the obvious and frequent shortcomings of my awkward boxy ubuntu tower when interacting with my colleagues streamlined aluminum slabs. I ran into lots of little issues that I didn't predict, like being unable to run Sketch.app, 1password, or reliably perform screencasts. These little things add up over time, and when I seen that a community had formed around running macOS on AMD, I was intrigued.

After hours of pre-reading I decided to bite the bullet. With data backed up, USB sticks made bootable and SSDs wiped, I got stuck in. Fast forward 24 hours and I had finally booted macOS successfully on AMD hardware. It came with a sense of achievement, but to be honest, to get to this point was relatively pain free thanks to these superb beginner guides.

What was painful, however, was the realisation upon downloading, installing and configuring all my apps and dev toolkits, that virtualisation was not working.

Virtualisation is the thing that allows your computer to simulate running other hardware devices, storage devices and operating systems. This allows a programmer to develop and test their code across a variety of platforms, despite not having physical access to these systems. For a programmer working across multiple environments, virtualisation is as important as the computer itself.

Initially I thought it’d be an easy fix, I’d just have to enable virtualisation support in the BIOS. Turns out it was already on. Maybe it’s one of those flags in the boot loader? After some digging, seems we were supposed to remove dart=0 from the bootloader arguments. Ok, did that. Nope. Still not working. And so, the journey down the rabbit hole began. Stopping only to rub my eyes, I buried my head in the disjointed world of hackintosh developers. Scattered across various community forums, GitHub repos, source forge discussions, discord and IRC chats, are nuggets of golden hacker knowledge burried amongst mounds of newbie confusion. The trick is to not open too many tabs at once.

After learning the lingo, I managed to persuade some gentlemen on Discord to provide me with terminal outputs from their builds, and they confirmed my darkest fear. The current Sierra 10.12.6 kernels (by Bronya) do NOT support AMD virtualisation…yet. Virtualisation does seem to work on Intel CPUs, but I didn’t find a single soul with VMX available or kern.hv_support on their AMD builds.

So there you have it. Sadly Hackintoshs running on AMD CPUs are not ready for developers just yet. I have no doubt I’ll revisit this space in a few weeks and hopefully things will have progressed, but for now it’s back to Ubuntu.