Why?

So why Mac OS? Because its foundation is Linux, and it has a GUI that is at least as good as Windows, maybe better. For full disclosure, there are currently 7 real Macs in the house. 3 Minis, 3 Macbook Pros, an iMac and a Mac Pro. I guess that's 8 Macs, but one of the MBPs belongs to the company I work for. That first Mac, a 2012 iMac, is still running like it did when it was new, and in daily operation. There are also two Windows machines - Windows 10 and Windows Server 2019. And finally, two Linux machines - My Xeon server and my son's Dell R410 dual Xeon server.

My first Hackintosh build was not perfect. I started with the idea that I would use a Mini-ITX motherboard, which divided the number of candidate boards by at least 20. Then I used a CPU that would fit the motherboard and a video card that would fit in the case, etc. No part of it was tailored for Mac OS. The result worked, but was unstable. This time I picked the parts to work with MacOS, and set the target budget at $1500. With all the shipping and small unaccounted-for parts, the total came to $1670.

This is my primary machine. It needs to be reliable. I just updated to Catalina and it rebooted twice and came up with the new OS. It took forever, though. The machine fools around for 20 minutes just ticking the disk occasionally, then reboots and does it again for five minutes, then it's done.


Motherboard

The motherboard is a Gigabyte Z390-UD. It has a socket 1151 for the 8th and 9th gen Core i3/i5/i7/i9 CPUs. It does not have a bunch of extra stuff on board that would complicate a clean install of Mac OS. It has 4 banks of RAM, 2-way interleaved, and I used 2 16GB sticks. The biggest selling point for me was the Thunderbolt header, which allows a Thunderbolt add in card to be used. That is important because the on-board Thunderbolt firmware cripples the Titan Ridge chip so that it won't interface to TB1 or TB2 peripherals. Of course 95% of the existing Thunderbolt peripherals are either TB1 or TB2. For instance, my Apple Thunderbolt monitor is TB1 and the dual external drive is TB2. Shame on Gigabyte.

Two weeks after the build the CPU fan header decided to go to sleep, stopping the liquid cooling. The CPU hit 70°C before I could power it off. No damage done. I called Newegg and bought a new one and they refunded my money on the first one. Their customer service is great. I used the opportunity to re-route the cables so I could get better airflow, and added my own fan controller.

The replacement motherboard had another problem and had to be replaced. Again, NewEgg customer service is excellent. They shipped the replacement that day and I sent the bad one back later. Since then, no problems at all.


Thunderbolt Card

The Thunderbolt adapter card has to be the same brand as the motherboard. That needs to be a Gigabyte Alpine Ridge Thunderbolt not a Titan Ridge. The card takes Displayport video input via one or two mini Displayport connectors and outputs TB3 on a pair of USB-C connectors. There are two Displayport to Mini Displayport cables included with the card.


Video Card

I picked the Sapphire Pulse RX 580 8GB because it is the most easily tolerated by Mac OS these days, is more stable than the Nitro+, and had the two HDMI and at least one Displayport I needed. Apple seems to have switched from nVidia to AMD in their new products. I put monitors on the HDMI ports, and ran one DP to MDP cable from Displayport #1 to the Thunderbolt card mini Displayport #1.


CPU

This was really a blind guess. It looks like Intel is having second thoughts about Hyperthreading. I had second thoughts, too. If you only have four execution units, you can only run four threads. Anything else is smoke and mirrors. Take the i7-9700k and the i9-9900k. The i7-9700k has 8 cores. So does the i9-9900k, but it has Hyperthreading so it looks like 16 cores. However, the i9-9900k performance in multithreaded benchmarks is not twice as high as the i7-9700k. It's 33866 vs. 28863 for the i7-9700k, a 17% improvement.

I decided to give the i7-9700k a try, and I'm very happy with it. It gets the number 3 slot on the GeekBench single core test and ranks Ok on the multicore test, but it is up against 22 core competitors. A little bit higher clock speed does not beat twice the number of cores.


Drives

This is where it all gets weird. I have three OSs on the box - Mojave, Ubuntu, and Windows 10 - each with its own 1TB primary drive and 1TB backup. The motherboard only has 6 SATA ports, so the DVD is external. Really it is an internal drive, but I picked up a little USB 3.0 to SATA adapter that allows it to run externally.

Now you would expect that with clones of each OS you would be safe, but no drive is safe when Windows is on the system. Just after I got the various operating systems installed, I got a dialog on the Mac OS saying "I don't recognize that drive. What do you weant me to do"? I said to ignore it, and it did. The same thing happened on Windows, and it did what every version of Windows does. It said "Your disk has a problem. I'm fixing it.", and promptly destroyed the Mac OS backup drive's boot sector. Only the backup drive. It left the primary alone as well as the two Linux drives.

There must be some code that recognizes MacOS and nails it, just to make sure Windows is the only OS on the box. Because it seems to happen on every box that has both. I haven't found a way around it yet.


Power Supply

The power supply is a Corsair RM650x. It satisfies the two requirements: it is fully modular, and it fits in the case. It can get a little cramped in the lower floor of the case. A 5.7" deep power supply leaves enough room for cables.


Case

11 The case is a Cooler Master HAF XB EVO. I like them because they can breathe and I can work on the innards without tearing it all apart. The case is big and a bit gothic, but it isn't ugly. It costs around $100, but Newegg often has it on sale for $80.


CPU Cooler

The cooler is a Cooler Master MasterLiquid Lite RGB (without the RGB plugged in) and it is entirely adequate. It is quiet, has 2 - 120mm fans that throttle, and wasn't but $70.00. I like liquid cooling. I don't think it is necessarily better than air, but it is as good, and occupies less space over the motherboard. An air alternative is the DeepCool GAMMAXX GT. I used it for a few days while I was building the system. It makes almost no noise, and keeps the CPU at around the same temperature as the liquid cooler does. It is only $45 on Amazon, so if you are on the cheap, this might be a good choice.

Memory

I chose 2 x 16GB Corsair LPX DDR4-2666 because they are fast enough and still cheap. In retrospect, DDR4-3000 memory might have been better, but the price would have been $40 higher.

WiFi

The WiFi card is a TP-Link TL-WDN4800, which is "only" 802.11/n. Why, when there is already a 1G lan port on the motherboard? Because all self respecting Macs have it. There is also a 1G port on the Thunderbolt display. So three network ports.

BIOS Settings

The bios settings are best shown in pictures, so:






Build

I can't imagine why, but the Thunderbolt card wants to be in the farthest slot from the CPU. The cable plugs in on the other side of the next slot over, so you need to install the TB card before anything in the slots near it or you won't be able to reach the connector with your fingers.

You need to install Windows somewhere to initialize the Thunderbolt card. I need it for other things, so I still have it installed on the system. Good thing, too. The TB card's initialization holds through reboot and power down, but it does not hold its config through a hard power down (pull the plug, blow a fuse or flip the switch off) so Windows can't be deleted.

You have to build a Clover bootable thumb drive, which is explained in detail on the TonyMacx86.com website. Tip: Get a 32GB USB 3.0/3.1 drive (no larger than that). It will cut your time in half. Once you have tuned the install, which took a while, the system just boots and everything works. Almost everything is default. Sound, USB, Ethernet and video all work. Firewire may work, but I don't have any Firewire peripherals so I can't say it does.

The boot parameters on mine look like this:

dart=0 nv_disable=1 kext-dev-mode=1 slide=0 -v

I can't say what some of them mean, but they are recommended based on the problems I encountered. YMMV. For instance, if you have an nVidia video card, you won't want to put nv_disable=1 in the parms. kext-dev-mode tells the kernel it is Ok to load unsigned kernel extensions. Slide is the offset from the beginning of memory in which to load the OS. I believe "0" means figure it out. "-v" tells it to leave the logo down until the OS has loaded, and instead spew reams of important data to the screen. Very important for when you are troubleshooting the install.

The kexts I added, which may be overkill, are:

  • AppleALC.kext for HD Audio
  • FakePCIID_XHCIMux.kext routes USB2 ports to EHCI
  • FakePCIID.kext
  • FakeSMC_ACPISensors.kext for sensors
  • FakeSMC_CPUSensors.kext for sensors
  • FakeSMC_GPUSensors.kext for sensors
  • FakeSMC_LPCSensors.kext for sensors
  • FakeSMC_SMMSensors.kext for sensors
  • FakeSMC.kext for sensors
  • IntelMausiEthernet.kext for Intel Ethernet
  • IO80211Family.kext for TP Link WiFi card
  • Lilu.kext used by NoVPAJpeg.kext
  • NoVPAJpeg.kext allows preview, GIMP, etc. to load JPEG files.
  • USBInjectAll.kext Opens all of the USB ports so you can see which ones are used.

What doesn't work?

Hot plugging the Thunderbolt monitor to another system entirely does switch the video, but the Thunderbolt is down, so no Ethernet, no usb (and therefore no audio). Unless the other system is an Apple, in which case everything seems to work as it should. I haven't tested to see if it holds settings when you switch back to the Hack after using a real Mac.

OS switching. As long as you don't hard power-down, all is well. If you do, or if something goes awry and you have to reset the BIOS, you will need to boot into Windows and run the Thunderbolt application as admin and it will then come up. Most of the time I power down then boot again into the desired OS, and everything works as expected.

And of course, if you aren't using Thunderbolt you can disregard all of that, including the BIOS options, which don't show up unless the card is installed.

Conclusions

Apple hasn't made it any harder to use Mac OS, and the hardware seems more compatible than it did. I didn't need to do any crazy SSDT stuff. Just configuration, mostly with Clover Configurator. One can expect the configuration of the installer boot USB stick to be the most time-consuming part of it. Once it is properly configured and allows you to boot all of the way into the Mac OS installer, you're 80% done.

I had two problems: the limit on USB ports would deactivate the USB stick port, so I had to find one of the ports that worked. That was a hair-puller. The Apple logo gets replaced by a "No" sign. Then I hit the the problem of memory allocation during OS boot. It has to be able to allocate a large contiguous block of memory for the kernel, but the BIOS fragments memory in the lower regions. Getting the right helper installed ("AptioMemoryFix-64.efi" and it's siblings) clears that up by moving the kernel up above the mess.

How stable is it? It is now my primary machine and I upgraded the Mac Pro and gave it to my wife to replace her aging iMac. The iMac is only going away because it has a Core 2 Duo processor and, as of Mojave, Mac OS no longer supports that CPU, so no more upgrades.