Tuesday, February 01, 2022

Proxmox Hackintosh (High Sierra)

My brother is a Mac user and has been saying we need to switch to Mac. Well, I am a Linux and Windows user, so I thought I would want to see if macOS is suitable for me before I decide to make a proper switch. Apple products, even on the resale market, still cost an arm and a leg, though. And with the prices of PC parts today, building a Hackintosh seemed out of the question too.

So I decided to try the virtual machine route. I followed this guide to create a Monterey virtual machine on my Dell Poweredge R720. There was only one problem: graphics. The lack of a GPU meant that the entire OS felt sluggish and just cannot be used properly. While the R720 does have GPUs in it (GTX 1050 Ti and Quadro P400, for now), both are not supported in Monterey as macOS has dropped support for Nvidia GPUs a while ago. The option seems to be: get an old AMD GPU. (Which I did; I have a R7 240 and a R7 250 on the way because I found them for cheap on Yahoo! Auction.)

Meanwhile, older macOS versions still offered support for Nvidia GPUs (up to Pascal architecture) through Nvidia web drivers. So I followed this guide to create a High Sierra virtual machine on the Dell Poweredge R430 (which has a GT 1030). Okay, I didn't really follow the entire guide; I used the first Monterey guide as a basis because OpenCore seemed to be a better bootloader option compared to Clover. However, I had to follow the older guide for tips, because High Sierra is a bit picky... for example, the harddisk needs to be SATA and not VirtIO; you also need to "erase" the disk (as part of the installation process) and format it as APFS in order for the installer to recognise it. Network interface needs to be E1000 and not VirtIO. (Specifically, need to change from "e1000" to "e1000-82545em".) These were the two main changes that I needed to install High Sierra.

Once High Sierra has been installed, there is a need to get it updated. So I ran the software updater in MacOS twice (first for the 2020-005 update, and then the 2020-006 update) to update to "macOS 10.13.6 High Sierra (17G14042)". This allows Nvidia web driver version 387.10.10.10.40.140 to be installed.

The trick to installing the drivers... it can be a bit troublesome. First, you need to have your graphics set as VMware (which should be the case if you followed the guide). Then, start the High Sierra virtual machine, and install some method for remote desktop. I use NoMachine. This will require a restart of the VM, so do that, then make sure you can use remote desktop to access the virtual machine. Once that is done, shutdown the VM. Then add the PCI device (your GPU) as you usually do for GPU passthrough. Start up the virtual machine again and install the Nvidia web driver. After that, shutdown the system. Set the graphics to none. Start up the VM, and use remote desktop to access the VM. This finally allowed me to use the GT 1030 as the GPU for High Sierra.

My only problem with macOS is the font size... there is no way to set the font size for the overall UI, although font size can be changed on a case-by-case basis depending on the program. For example, the terminal program does allow you to change the font size to something bigger. The only way to universally make the fonts bigger is to lower the screen resolution. My eyesight is getting bad from too much screen time recently, and the small fonts on 1080p macOS is really killing me. Anyway, I will have another update to show Monterey when the AMD GPUs arrive.

Update January 4, 2022: I tried using a R7 240 graphics card, but it is not supported by macOS, so there is a need to spoof the ID, which I did by editing the config file in Proxmox for the VM. Instead of the usual method of using the GUI to select the PCI device to pass through, I added this to the args line:
-device 'vfio-pci,host=0000:05:00.0,id=hostpci0.0,bus=ich9-pcie-port-1,addr=0x0.0,multifunction=on,x-pci-vendor-id=0x1002,x-pci-device-id=0x6790,x-pci-sub-vendor-id=0x0000,x-pci-sub-device-id=0x0000' -device 'vfio-pci,host=0000:05:00.1,id=hostpci0.1,bus=ich9-pcie-port-1,addr=0x0.1'

The important part is 'x-pci-device-id=0x6790' which tells the VM that the device ID is 6790 instead of the original 6613. The fake ID causes macOS to recognize it as a HD7xxx series card. (I tried 6798 too, but it caused issues with the display, which became checkered.) Other IDs that may work are 6810 and 6818, according to various forums I read. Or 683F, which is for a HD7750. But I have not tried them. (Update: 6810, 6819, 679A also gave a checkered output. 683F caused a kernel panic. 6811 was super sluggish as the card is recognized but kext not loaded. 682B, 6835 gave no video output.) (I more or less tried all the IDs in AMD7000Controller.kext found here.)

However, even though macOS recognized the card, it was very very sluggish, as if no graphics acceleration was taking place at all. Maybe just spoofing the ID is not enough, and there is a need to actually edit the config.plist file... sigh... So for the time being, High Sierra will be running on the GT1030 (which really works great for this, much better than the VMWare compatible driver in QEMU).

I also got a R7 250 too... but I haven't gotten around to testing it. And probably never will, since I have a RX550 4GB as well, which, with ID 67FF, should be recognized by macOS out of the box. As for the R7 250, I guess the ID to try would be 683D, which is for the R7 250X.

No comments: