Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save bradleysepos/8afbf990fffbd69dc8f4aedd164cdaec to your computer and use it in GitHub Desktop.
Save bradleysepos/8afbf990fffbd69dc8f4aedd164cdaec to your computer and use it in GitHub Desktop.

macOS 10.14 Mojave Guest on VMware Fusion 11

Metal card required

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.

Workaround 1

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.

Workaround 2

  1. Begin installing macOS Mojave to an external drive using a Mac with a Metal compatible card.
  2. Shut down after the installer completes the main file copy phase which takes 20-30 minutes.
  3. Remove and attach the drive to a booted Mac.
  4. Zero the free space on the main volume.
  5. Unmount all associated volumes.
  6. Image the entire drive using dd.
  7. 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.

Manually enable VMware kernel extensions

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.

  1. Start up the VM while holding the Option key, and select the appropriate boot device.
  2. Open Terminal from the Utilities menu.
  3. Enter the following command: spctl kext-consent add EG7KH642X6
  4. 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.

Shrink macOS guest

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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment