Some parts of this document are outdated. Specifcally, we now use UEFI mode by default. Enoch bootloader is no longer used.
-
Install macOS by following the usual Enoch method.
-
Build and use QEMU from https://github.com/kholia/qemu/. Use the "macOS" branch. Clover + macOS will fail to boot without this step.
-
Install the included
Clover_v2*.pkg
on the main macOS disk.-
Hit the
Customize
button during Clover install. -
Tick 'Install for UEFI booting only', OsxAptioFix2Drv-64 and PartitionDxe-64 options.
-
-
The Clover installer should leave the EFI partition mounted for us. Open that up in Finder.
-
Replace the
EFI/CLOVER/config.plist
file withconfig.plist
included in this folder. -
Put the included
q35-acpi-dsdt.aml
file intoEFI/CLOVER/ACPI/origin
location.
-
-
You may edit
EFI/CLOVER/config.plist
to change the screen resolution from800x600
to a higher supported value.This change also requires a corresponding change in the OVMF settings. When using OVMF with a virtual display (without VGA passthrough), you can set the client resolution in the OVMF menu, which you can reach with a press of the ESC button during the OVMF boot logo. In the OVMF menu settings, set Device Manager -> OVMF Platform Configuration -> Change Preferred Resolution for Next Boot to a supported value. Commit changes and exit the OVMF settings. Relaunch the
boot-macOS
script. -
Finally, use
boot-clover.sh
to use OVMF/UEFI to boot macOS with Clover. -
You can use
Clover Configurator
to modify your Clover configuration, if required.
These steps will need to be adapted for your particular setup. A host machine with IOMMU support is required. Consult the Arch Wiki article linked to at the bottom of this file for exact requirements and other details.
I am running Ubuntu 17.04 on Intel i5-6500 + ASUS Z170-AR motherboard + NVIDIA 1050 Ti.
Tip: Use https://github.com/Benjamin-Dobell/nvidia-update to install nVidia drivers on macOS.
-
Enable IOMMU support on the host machine.
Add
iommu=pt intel_iommu=on video=efifb:off
to theGRUB_CMDLINE_LINUX_DEFAULT
line in/etc/default/grub
file. -
Uninstall NVIDIA drivers from the host machine and blacklist the required modules.
$ cat /etc/modprobe.d/blacklist.conf ... <existing stuff> blacklist radeon blacklist nouveau blacklist nvidia
-
Enable the required kernel modules.
# echo "vfio" >> /etc/modules # echo "vfio_iommu_type1" >> /etc/modules # echo "vfio_pci" >> /etc/modules # echo "vfio_virqfd" >> /etc/modules
-
Isolate the passthrough PCIe devices with vfio-pci, with the help of
lspci -nnk
command. Adapt these commands to suit your hardware setup.$ lspci -nn ... 01:00.0 ... NVIDIA Corporation [GeForce GTX 1050 Ti] [10de:1c82] 01:00.1 Audio device: NVIDIA Corporation Device [10de:0fb9] 03:00.0 USB controller: ASMedia ASM1142 USB 3.1 Host Controller [1b21:1242]
# echo "options vfio-pci ids=10de:1c82,10de:0fb9 disable_vga=1" > /etc/modprobe.d/vfio.conf
-
Update initramfs, GRUB and then reboot.
$ sudo update-grub2 $ sudo update-initramfs -k all -u
-
Verify that the IOMMU is enabled, and vfio_pci is working as expected. Consult Arch Wiki again for help on this.
-
On the macOS VM, install a NVIDIA Web Driver version which is appropriate for the macOS version. Consult http://www.macvidcards.com/drivers.html for more information.
For example, macOS 10.12.5 requires version
378.05.05.15f01
whereas macOS 10.12.6 requires version378.05.05.25f01
. -
Boot the macOS VM using the
boot-passthrough.sh
script. At this point, the display connected to your passthrough PCIe device should turn on, and you should see the Clover boot screen. Using the keyboard, navigate to Options -> Graphics Injectord, and enableUse NVIDIA Web Driver
, then boot macOS. -
Updating SMBIOS for the macOS to
iMac14,2
might be required. I did not do so myself. -
To reuse the keyboard and mouse devices from the host, setup "Automatic login" in System Preferences in macOS and configure Synergy software.
Note: Many AMD GPU devices (e.g. AMD RX 480 & RX 580) should be natively supported in macOS High Sierra.
Note: AMD GPU devices may require configuring Clover with Graphics > RadeonDeInit
key enabled.
These steps will need to be adapted for your particular setup.
-
Isolate the passthrough PCIe devices with vfio-pci, with the help of
lspci -nnk
command.$ lspci -nn ... 01:00.0 ... NVIDIA Corporation [GeForce GTX 1050 Ti] [10de:1c82] 01:00.1 Audio device: NVIDIA Corporation Device [10de:0fb9] 03:00.0 USB controller: ASMedia ASM1142 USB 3.1 Host Controller [1b21:1242]
Add
1b21:1242
to/etc/modprobe.d/vfio.conf
file in the required format. -
Update initramfs, and then reboot.
$ sudo update-initramfs -k all -u
-
Use the helper scripts to isolate the USB controller.
$ scripts/lsgroup.sh ### Group 7 ### 00:1c.0 PCI bridge: Intel Corporation Sunrise ... ### Group 15 ### 06:00.0 Audio device: Creative Labs Sound Core3D ... ### Group 5 ### 00:17.0 SATA controller: Intel Corporation Sunrise ... ### Group 13 ### 03:00.0 USB controller: ASMedia ASM1142 USB 3.1 Host Controller
$ scripts/vfio-group.sh 13
-
Add
-device vfio-pci,host=03:00.0,bus=pcie.0 \
line to theboot-passthrough.sh
script. -
Boot the VM, and devices attached to the ASMedia USB controller should just work under macOS.
-
Get Synergy from https://sourceforge.net/projects/synergy-stable-builds.
I installed "synergy-v1.8.8-stable-MacOSX-x86_64.dmg" on the macOS guest and configured it as a client.
For automatically starting Synergy on macOS, add Synergy to "Login Items", System Preferences -> Users & Groups -> Select your user account -> Login Items -> Add a login item
-
On the Linux host machine, install "synergy-v1.8.8-stable-Linux-x86_64.deb" or newer, configure
~/.synergy.conf
and runsynergys
command. -
The included
.synergy.conf
will need to be adapted according to your setup.
-
Nicholas Sherlock and others - UEFI, Clover, and other hacks
-
Kyle Dayton - UEFI, Clover, and GPU passthrough notes