An easy to use macOS application designed to help you create custom configuration files for the Clover EFI bootloader via a streamlined graphical interface. In order, to create your work quick access to the web.EFI Clover Bootloader is software that, too much familiar for Hackintosh users. Clover is a specially designed boot loader that allows the users to install macOS on a non-Mac computer. EFI Clover Bootloader beside allowing to install macOS Mojave on Mac computer. It has lots of other. Nov 25, 2020 Clover Configurator designed to help you create custom configuration files for the Clover EFI bootloader via a streamlined graphical interface. Upon launch, Clover Configurator will check to see if there are already available configuration files, and enables you to view their content.
Status - 17 July 2020 - Core information collected [Optionally: I may at some point add section on moving to / from: Physical to Virtual Mac and to / from VMWare Fusion to QEMU / KVM Macs] and now verified with Ubuntu 20.04 and does some further Q35 Version and Network device testing.
- Clover configuration files and patches for Mac OS 10.14 with i7-6700+AMD vega56+微星MS-7996 and guide to fix hackintosh Showing only a portion of the GUI (small display area problem fix)with two language version - fjh1997/hackintosh-clover.
- Users: 190: Computers: 61: Different versions: 107: Total Keys: 28,177: Total Clicks: 69,370: Total Usage: 4 days, 13 hours, 43 seconds: Average Usage: 34 minutes.
If you do Mac development then its likely you will run virtual Mac's. In fact runing virtual machines for development is pretty much essential for anything that is non-trival. For Mac developer, this meant a choice of VMWare or Parallels and now you can also use Linux with KVM / QEMU and Clover/OVMF.
Here are the high level steps and instructions required to get macOS (OS X) up and running on Ubuntu with KVM / QEMU.
- Get Ubuntu running with virtualisation enabled
- Install KVM / QEMU software
- Configure Ubuntu network bridge with NetPlan
- Add Clover for EFI boot support
- Create your Mac VM using the right QEMU configuration and settings for macOS
- Optionally add PCI Pass-Through for network and GPU support on you virtualised macOS machine
I will cover each area of configuration in turn.
I started experimenting with macOS on KVM with Ubuntu 16.04. At the time this required recompiling of QEMU. I then moved to Ubuntu 18.04 (which does not require any compilation) and updated to 19.04 (which has much much better performance) and have tested with 19.10. I am now running 20.04 LTS and have found it completely stable for running virtual macOS on KVM.
Here is summary of various Ubuntu Versions (desktop):
- Ubuntu 16.04 - Requires compile of upstream QEMU (avoid)
- Ubuntu 18.04 - Works out of box, but introduces NetPlan, so you need to learn how to configure your bridge (linux virtual switch) to get your networking working, also it is very very slow to boot macOS
- Ubuntu 19.04 - As per 18.04 and boots macOS much much faster
- Ubuntu 19.10 - having done testing, I am now using 19.10 as main virtualisation host
- Ubuntu 20.04 - have tested and have running number of macOS vm's as part of upgrade process from 19.10
If you want to use PCI Pass-through the you should update your grub boot configuration, here are KVM Kernal Configuration parameters that are relevant:
NOTE: The 'iommu=1 intel_iommu=on' grub settings are required to enable PCI Pass-Through
Reboot the machine to ensure all kernal parameter are set
The packages required for Ubuntu are: qemu, libvirt, virtual machine manager, OVMF:
This installs:
- 64 bit x86 emulation and the libvirt abstraction layer,
- the open virtual machine firmware (ovmf) - First level of EFI support (you need Clover as well)
- virt-manager - virtual machine configuration and management UI
All networking (unless you attach a physical NIC via PCI Passthrough) with KVM / QEMU is handled via Linux Bridge. The Linux Bridge is a kernal loaded modue that behaves like a dumb ethernet switch. It does not provide any active network function in macOS context and the only important thing you have to decide is a name for the logical bridge (i.e. br20) and the physical NIC that this will be connected to. In Ubuntu 18.04, 19.04, 19.10 & 20.04 this is managed via the NetPlan configuration.
Here is a example NetPlan configuration for a machine with multiple ethernet NICs installed. You will see that all the network ethernet interfaces bar ens4f0 are IP disabled, Instead all the interfaces have bridges defined: br01, br20, br40 & br50. All the bridges have DHCP4 disabled. If you enable DHCP4 or define a static IP address on a bridge then this IP address will be assigned to the KVM Hosting machines and allow the virtual machines connected to the network bridge to get access to the hosting machine. This is likely to be undesireable for security reasons. It illustrates how virtualisation has signficant impact on how physical network seperation has to be managed. In this example the 192.168.10.4/24 address is used to access the KVM hosting machine.
In my case the logical NICs that the ethernet ports connect to have corresponding seperate ethernet VLAN amd IP subnets. You need to keep in mind what subnet you want your macOS virtual machine to connect to and the bridge this is supported by. The selection of which bridge a NIC is connected to is managed via QEMU configuration.
While ovmf provides the first level of EFI boot for virtual Mac, it does not provide everything you need. The EFI boot process passes control to Clover EFI boot manager which provides support to load the HFS+ and new Apple File System (APFS) file system drivers needed to boot macOS (OS X).
Clover also provides things that make KVM / QEMU look like a real Mac to the macOS software layer.
To use Clover you need to create a small seperate qemu qcow2 virtual disk. This contains the various Clover drivers and their configuration data. The Clover virtual disk becames the boot disk which then loads macOS from the HFS+/APFS virtual disk.
Setting up Clover boot disk is a bit of a chicken / egg problem, as the Clover intaller is a macOS app and the disk you want to do the install on is a virtual disk, but you need to have a bootable Mac to do this...
The way to start is to create the Clover disk via VMWare Fusion macOS virtual machine, which has Clover disk attached as virtual image and then once you have installed Clover onto this then convert the vmdk format disk image to native QEMU qcow2 one. Having Clover on a little disk makes it much easer to work with, than using a CD-ROM boot image. The Clover boot disk is a MS FAT32 formated disk, which is setup based on EFI conventions.
Here is summary information on layout of Clover disk:
The sizes correspond to: 512 MiB GPT Partitioned Disk with
- 200 MiB MS FAT32 - EFI volume
- 310 MiB MS FAT32 - CLOVER volume
Only the the EFI part is required, but having the extra CLOVER volumes is useful as you can put drivers and other things like 'Clover Configurator' here as it may be that you cannot get access to network on initial boot.
To install clover on the disk you simply download Clover installer, run the installer and select the '/Volumes/EFI' (the mount point that partition will be on after rebooting with Clover disk attached) as the installation location. The installer will populate the Clover directory structure and add the files
Clover configuration example (without SMBIOS details):
On KVM the setup is very sensitive to the SMBIOS configuration and this is quite complex. The recommended approach is to use 'Glover Configurator' to create this. Here is a seperate SMBIOS Clover configuration example:
Clover Configurator Mac Clover Configurator For Mac Download
I have found the MacMini6,2 machine type to be reliable and have left my machine type as this for more than 1 year as testing with other machines types resulted in failure to boot.
You can test with Clover Configurator for more recent machines by loading and saving the configuration and then copying into backup a file on the EFI volume. This means you can readily return to a known configuration, by booting using Ubuntu and mounting the EFI volume. When editing the configuration, the important things is to ensure machine uuid and serial numbers are unique to the machine instance.
The Clover Configuration is with the EFI directory: /Volumes/EFI/EFI/CLOVER/config.plist
In addition to setting the Clover configuration, you also need to select a subset of EFI drivers to load on boot.
With Clover V2.5 Rel 5070 here is the set of drivers I have installed (from macOS terminal, on EFI boot disk mounted at /Volumes/EFI):
To know what Clover system has been used to boot from by convention I also do: touch clover-vX.X_rxxxx and touch i-am-MAC-OS in the /Volume/EFI/EFI/CLOVER directory so it is easy to see the Clover version and virtual Mac that is being used. This is very helpful if you have multiple Clover disks attached to the machine when copying configuration across old / new Clover configurations.
With the exception of: HFSPlus.efi and apfs.efi files all the files within the driver directory are part of Clover, the two exception are taken from an actual Mac. These are the HPFS+ (from physical firmware) and APFS (from disk) drivers which are required to read the Apple formatted disk volumes.
The VBoxHfs.efi is a Clover supplied alternate to Apple HFSPlus.efi driver.
When you install Clover you can select to have all the drivers available installed in the /Volumes/EFI/EFI/Clover/drivers/off directory and then selectively move the ones you need into the UEFI directory.
NOTE 1: With KVM based Macs there is no need to get into the black magic of extra kexts (kernel extensions) or ACPI / DSDT (Advance Configuration & Power Interface / Differentiated System Description Table) tweeking.
NOTE 2: The lastest version of Clover are 64-Bit UEFI, in prior version there where as set of 32-Bit and 64-Bit EFI files. In my Clover:
- V2.4 Rel. 44509 - the EFI driver files are in /Volumes/EFI/EFI/CLOVER/drivers64UEFI while
- V2.5 Rel. 5070 - the EFI driver files are in /Volumes/EFI/EFI/CLOVER/drivers
So it appears that the need to specify 64-Bit version has gone.
To covert VMWare EFI Boot disk to QEMU qcow2 one:
To run macOS machine with QEMU / KVM requires very specific set up, summarised here:
- Q35 - Virtual Machine (v 2.11, 2.12 work) [Also I have tested with v 3.1 post installation boot up , but not with a new install]
- OVMF - Firmware which has associated NVRAM storage blob (OVMF_VARS.fd). Each bootable macOS machines needs to have its own NVRAM storage device
- e1000-82545em - network device, connected to bridge br10 in below example [or vmxnet3 (VMWare virtual NIC driver) testing within 10.12 Sierra onwards]
- SATA - Disk and CDROM only, in this example there are 2 disks attached, the Clover Boot disk and the virtual MacOS one
- USB Keyboard
- EvTouch USB Graphics Tablet
- VGA Graphics
In addition the Mac VM is very sensitive to CPU type and features, for Catalina here are details of CPU configuration:
The macOS machine also needs to get its special applesmc configuration:
NOTE: See 'Mac OS X Internals - A Systems Approach' Bonus chapter to get above programmically on your Mac.
My approach is to use the Virtual Machine Manager to create initial configuration, then start machine to save the configuration and then edit the configuration to set the detailed CPU, Video & OVMF_VARS.fd configuration:
- sudo virsh edit MAC-NAME - to edit final configuration details.
As part of initial boot do an escape at Clover startup and change the Clover resolution value to match the config-plist value (in this example: 1024x768)
Here is example of complete configuration for (Catalina Mac):
Once you have completed editing using virsh, exit the editor and restart machine with all the correct configuration.
Once you have got a running macOS running, then for each new machine just copy the working Clover Boot disk and OVMF_VARS.fd files into new location for this new machine and then on initial bood go into Clover Configurator to edit the configuraton (serial numbers and UUID) so that it has its own unique identify.
If you you have configured you kernel correctly (see above grub configuration), then this is trivial. Simple grab the PCI Resource via Virtual Machine Manager GUI and reboot the machine.
I have successfully attached: SmallTree 10Gbe and Areca RAID controllers to QEMU / KVM Virtual Mac.
It is relatively easy to move physical Mac to Virtual and back again. The tools for this include:
- qemu-img - to convert images
- Carbon Copy Cloner - to copy bootable images
- OS Bless Command - to re-bless a HD volume to make it bootable
References & Links
After much effort and testing based on the following information from: Kraxel's, Kholia, Gordon Turner and Clover sites:
Kraxel - did a lot of ground work to get MacOS running on KVM, most of which has flowed into upstream KVM / QEMU and so this is historical now
Kholia - keeps onging testing and configuration tweeking information as MacOS goes through its release cycles
Gordon Turner - has some useful pointers that where easier to follow than some of Kholia's instructions
Clover - provides the MacOS EFI implementation tweeks required to bt MacOS running on KVM
Clover Configurator - only availeable as a binary executable, so you have to make a trust decision on whether to use it
My earlier notes on Insanely Mac
Mac OS X Internals - A Systems Approach by Amit Singh provides most of what you need to know about EFI and OS X (now macOS) boot process and has bonus chapter on SMC keys needed to boot OS X
Clover EFI bootloader v5.0 r5127
Clover is open source based on different projects: Clover, rEFIt, XNU, VirtualBox. The main is EDK2 latest revision.
Clover Configurator For Windows
The Clover EFI software comes with its own installer package, which means that the entire process is reduced to simply following the on-screen instructions. Naturally, you will have to provide the credentials for your computer’s admin account.Noteworthy is that you have the option to personalize the bootloader’s installation: you can choose to install Clover EFI for UEFI booting only, you can install Clover EFI in the ESP, you can apply a custom theme, decide which drives or scripts should be deployed, and so on.
Powerful software solution for booting a custom macOS installation, and improving its performance
Furthermore, Clover EFI also allows you to integrate a custom preference pane in your System Preferences window. As a result, you will be able to effortlessly update the bootloader, to change the Clover theme, or to adjust the number of log files and backups Clover EFI should keep.
Clover EFI is a great tool to have around if you are running macOS on a non-Apple computer that integrates a UEFI motherboard: the installer replaces the default bootloader, integrates powerful drivers, and allows you to customize both the macOS behavior and appearance.
Main features:
- Boot into macOS 10.xx, Windows EFI and Linux EFI;
- It's EFI bootloader provides RuntimeServices for OS that impossible for Legacy Bootloaders;
- Mostly Clover do automatic detection of hardware and set all properties by default. But user can change them by editing config.plist;
- With Clover you may restart into other OS from Startup Disk pane in System preferences;
- UUID written into config.plist will be the same as in OS;
- SMBIOS will be corrected to standard 2.6;
- ACPI will be corrected to standard 4.0;
- Custom DSDT will be loaded from booted partition or from EFI folder;
- DSDT patching on the fly by fixes and by patterns;
- Customizable RestartFix and Sleep/Wake fixes and PCIRootUID value;
- Graphics Properties Injector for ATI, NVidia and Intel for wide range of supported cards. Also customizable;
- USB fix (LegacyOff, Ownership, Builtin, clock-id) up to USB 3.0;
- HDA injector and Ethernet builtin injector;
- CPU turbo and P- and C-states generator;
- ACPI tables loading (SSDT-xx, APIC, BOOT, SLIC, SLIT, SRAT, UEFI...);
- Extra kernel extensions loading;
- Kernel and kext patching on the fly;
- Set NVRAM variables for different purpose;
- Default boot after timeout, customizable GUI, saving screenshots from GUI typing F10;
- Saving boot.log in OS and preboot.log from GUI by typing F2.
Clover Configurator Mojave
Clover since version r3251 turns off SIP like this:What's New:
Version r5127:- Package is compatible with BigSur.
- Debug.log will have time stamp in his name.
- Some minor bugs fixes.
Screenshots:
Clover Configurator Mac
- Title: Clover EFI bootloader v5.0 r5127
- Developer: SergeySlice
- Compatibility: OS X 10.5 or later
- Language: Multilangual
- Size: 11.86 MB
- visit official website