The macOS Mojave installer contains a new plugin, MetalCardRequired.bundle
, which prevents installation on any system with a GPU incompatible with Apple Metal, even where another GPU that is compatible is present. In the case of VMware Fusion, no Metal compatible card is detected and installation is not possible.
Edit the .vmx
file and change board-id.reflectHost = "TRUE"
to board-id.reflectHost = "FALSE"
. The installer check for compatible Metal card(s) should pass, and installation can proceed.
- Begin installing macOS Mojave to an external drive using a Mac with a Metal compatible card.
- Shut down after the installer completes the main file copy phase which takes 20-30 minutes.
- Remove and attach the drive to a booted Mac.
- Zero the free space on the main volume.
- Unmount all associated volumes.
- Image the entire drive using
dd
. - Convert the raw image to VMware VMDK format using
qemu-img
.
Zeroing, imaging, and conversion instructions are as follows, where the volume name is "Mojave".
# attach drive and mount volumes
cat /dev/zero > /Volumes/Mojave/wipefile; rm /Volumes/Mojave/wipefile
diskutil unmount /Volumes/Mojave
diskutil list # examine to determine device number, e.g. /dev/disk999
sudo dd bs=102400000 if=/dev/rdisk999 of=Mojave.dd
sudo chown $(whoami) Mojave.dd
qemu-img convert -O vmdk Mojave.dd Mojave.vmdk
When intending to keep the raw disk image, use gzip
or similar to compress the zeroed free space (the growable VMDK will not allocate space for the zeroed data).
pigz --fast Mojave.dd || gzip --fast Mojave.dd
Create a custom VM and select the option to use the existing virtual disk created previously. The VM will boot directly into the final installation stage for user account creation.
The VMware Tools graphics kernel extension may not successfully load despite manually allowing it to do so via the System Preferences Security & Privacy pane. A workaround is to manually add the VMware Team ID to the approved list in NVRAM. This must be done from Recovery Mode (not configured by default on VMware Fusion) or bootable macOS installation media. The latter is used for example.
- Start up the VM while holding the Option key, and select the appropriate boot device.
- Open Terminal from the Utilities menu.
- Enter the following command:
spctl kext-consent add EG7KH642X6
- Reboot.
The graphics kernel extension VMwareGfx.kext
will now load successfully. This can be verified by reviewing Software > Extensions using the System Information application.
In the event NVRAM is cleared, these steps will need to be performed again.
Write zeroes to a temporary file on the guest disk, then remove it.
cat /dev/zero > wipefile; rm wipefile
Shut down the guest and quit VMware Fusion. Then, run the following commands on the host to shrink the guest disk.
sudo "/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager" -k "/path/to/disk.vmdk"
sudo chown $(whoami) "/path/to/disk.vmdk"