You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

205 lines
6.4 KiB
Markdown

### Setting up UEFI enabled macOS
**This is under development. Experiment at your own risk.**
* 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 with `config.plist` included in
this folder.
* Put the included `q35-acpi-dsdt.aml` file into `EFI/CLOVER/ACPI/origin`
location.
* You may edit `EFI/CLOVER/config.plist` to change the screen resolution from
`800x600` 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.
### GPU passthrough notes
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.
* Enable IOMMU support on the host machine.
Add `iommu=pt intel_iommu=on video=efifb:off` to the `GRUB_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 version `378.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 enable `Use 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.
6 years ago
Note: AMD GPU devices may require configuring Clover with `Graphics > RadeonDeInit`
key enabled.
### USB passthrough notes
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 the
`boot-passthrough.sh` script.
* Boot the VM, and devices attached to the ASMedia USB controller should just
work under macOS.
### Synergy Notes
* 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 run `synergys` command.
* The included `.synergy.conf` will need to be adapted according to your setup.
#### Credits
* Nicholas Sherlock and others - UEFI, Clover, and other hacks
* Kyle Dayton - UEFI, Clover, and GPU passthrough notes
#### References
* https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines
* https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF
* https://clover-wiki.zetam.org/configuration/smbios
* https://sourceforge.net/projects/synergy-stable-builds.
* https://wiki.archlinux.org/index.php/synergy