How to get Catalina Beta 6 running on VMware Fusion 11.1.1

Method 1: Having an operational Catalina beta 5 (19A526h) or earlier vm already


1 - Obtain the full beta 6 installer wrapped in a disk image (installinstallmacos.py does this nicely)

2 - Have a working Catalina install on a vm, beta 5 (19A526h) or earlier

3 - Add an extra disk the working Catalina machine, format the disk as HFS (replace as appropriate but I assume disk1)

sudo diskutil eraseDisk JHFS+ CatalinaBeta6 disk1

4 - Install Catalina beta 6 to the new disk

sudo installer -pkg [path to]/Install macOS Catalina Beta.app/Contents/SharedSupport/InstallInfo.plist -target /Volumes/CatalinaBeta6 -verbose -dumplog

5 - put the prelinkedkernel aside

sudo mv "/Volumes/CatalinaBeta6 1/System/Library/PrelinkedKernels/prelinkedkernel" "/Volumes/CatalinaBeta6 1/System/Library/PrelinkedKernels/prelinkedkernel_apple"

6 - put the AppleIntelMCEReporter.kext aside

sudo mv "/Volumes/CatalinaBeta6 1/System/Library/Extensions/AppleIntelMCEReporter.kext" "/Volumes/CatalinaBeta6 1/Users/Shared/AppleIntelMCEReporter.kext"

7 - generate a new prelinkedkernel

kextcache -c "/Volumes/CatalinaBeta6 1/System/Library/PrelinkedKernels/prelinkedkernel" -K "/Volumes/CatalinaBeta6 1/System/Library/Kernels/kernel" -l -- "/Volumes/CatalinaBeta6 1/System/Library/Extensions" "/Volumes/CatalinaBeta6 1/System/Library/Extensions/IOACPIFamily.kext"

8 - reboot from freshly installed system

Method 2: Starting from scratch


[ Build a USB booter ]

In order to get Catalina running on Fusion we must have a prelinkedkernel available that includes the IOACPIFamily.kext. Unfortunately the Apple supplied one does not so we have to build our own. In order to build a prelinkedkernel we have to use the command kextcache running on Catalina. So we're in a bit of a catch-22. Fortunately we can build a USB boot stick out of the files in the installer app and boot into a Catalina base system on a physical Mac (without having to do a full install of Catalina mind you)

Attach the beta 6 InstallESD.dmg and Pacifist from https://charlessoft.com to extract the "kernel" file from the Core.pkg ( /System/Library/Kernels/kernel )
copy the kernel to your USB stick

#!/bin/bash

PATHTOBASESYSTEM="BaseSystem.dmg"

PATHTOBASESYSTEMCHUNKLIST="BaseSystem.chunklist"

PATHTOUSBSTICK="/Volumes/USBSTICK"

mkdir $PATHTOUSBSTICK/com.apple.catalina.booter

hdiutil attach $PATHTOBASESYSTEM

cp /Volumes/macOS\ Base\ System/System/Library/PrelinkedKernels/prelinkedkernel $PATHTOUSBSTICK/com.apple.catalina.booter/prelinkedkernel

cp /Volumes/macOS\ Base\ System/System/Library/CoreServices/boot.efi $PATHTOUSBSTICK/com.apple.catalina.booter/boot.efi

cp /Volumes/macOS\ Base\ System/System/Library/CoreServices/SystemVersion.plist $PATHTOUSBSTICK/com.apple.catalina.booter/SystemVersion.plist

hdiutil detach $PATHTOBASESYSTEM

defaults write $PATHTOUSBSTICK/com.apple.catalina.booter/com.apple.Boot "Kernel Cache" \\\\com.apple.catalina.booter\\\\prelinkedkernel

defaults write $PATHTOUSBSTICK/com.apple.catalina.booter/com.apple.Boot "Kernel Flags" "root-dmg=file:///com.apple.catalina.booter/BaseSystem_modded.dmg -v"

plutil -convert xml1 $PATHTOUSBSTICK/com.apple.catalina.booter/com.apple.Boot.plist

cp $PATHTOBASESYSTEM $PATHTOUSBSTICK/com.apple.catalina.booter/BaseSystem.dmg

cp $PATHTOBASESYSTEMCHUNKLIST $PATHTOUSBSTICK/com.apple.catalina.booter/BaseSystem.chunklist

sudo bless -folder $PATHTOUSBSTICK/com.apple.catalina.booter -file $PATHTOUSBSTICK/com.apple.catalina.booter/boot.efi -label CatalinaBooter -verbose

Boot any Mac supporting Catalina from the USB stick
Once booted open  Terminal

mount -uw /Volumes/Image\ Volume

kextcache -c /Volumes/Image\ Volume/com.apple.catalina.booter/prelinkedkernel_vm -K /Volumes/Image\ Volume/kernel -l -- /System/Library/Extensions /System/Library/Extensions/IOACPIFamily.kext

Boot back in to regular macOS and rename $PATHTOUSBSTICK/com.apple.catalina.booter/prelinkedkernel to something else and rename $PATHTOUSBSTICK/com.apple.catalina.booter/prelinkedkernel_vm to $PATHTOUSBSTICK/com.apple.catalina.booter/prelinkedkernel

Build a virtual booter for Fusion

hdiutil create -srcfolder $PATHTOUSBSTICK/CatalinaBooter -format UDRW /Users/Shared/CatalinaBooter

Generate a vmdk file called CatalinaBooter.vmdk ( 1178426 is the number of bytes consumed by CatalinaBooter.dmg divided by 512. Replace as appropriate ) 

# Disk DescriptorFile
version=1
encoding="UTF-8"
CID=a285aa11
parentCID=ffffffff
createType="monolithicFlat"

# Extent description
RW 1178426 FLAT "CatalinaBooter.dmg" 0

# The Disk Data Base 
#DDB

ddb.adapterType = "lsilogic"
ddb.virtualHWVersion = "6"


Create a new vm
Drag the Install macOS Catalina Beta app onto the Window
Choose Apple -> macOS 10.14 as the machine type
Ciick customize settings
Choose where to save the vm

Navigate there in Finder
Right click the vm in Finder to show contents
edit the vmx file
delete any line starting with "board-id"
add the following 2 lines:
board-id.reflectHost = "FALSE"
board-id = "Mac-94245B3640C91C81"
Mount “Temporary Installation Source Disk.dmg”

Replace the following paths with our customized prelinkedkernel

/Volumes/Install\ macOS\ Catalina\ Beta/.IABootFiles/prelinkedkernel
/Volumes/Install\ macOS\ Catalina\ Beta/System/Library/PrelinkedKernels/prelinkedkernel 

Unmount “Install macOS Catalina Beta”
Launch the vm
Start installation

First reboot - we’re hanging

Shutdown the vm
Attach the CatalinaBooter vmdk
Power on to firmware
Boot from the CatalinaBooter boot.efi
Once booted opened Terminal and copy the prelinkedkernel in place

cp /Volumes/Image\ Volume/com.apple.catalina.booter/prelinkedkernel /Volumes/Macintosh\ HD/macOS\ Install\ Data/Locked\ Files/Boot\ Files/prelinkedkernel

Reboot from Macintosh HD
Installation commences HUZZAH!

Second reboot - we're hanging again

Boot from CatalinaBooter
Open Terminal

cp /Volumes/Image\ Volume/com.apple.catalina.booter/prelinkedkernel /Volumes/Macintosh\ HD/System/Library/PrelinkedKernels/prelinkedkernel

mv /Volumes/Macintosh\ HD/System/Library/Extensions/AppleIntelMCEReporter.kext /Volumes/Macintosh\ HD/Users/Shared/AppleIntelMCEReporter.kext

Reboot and REJOICE!

Method 3: Combining the two

That's a lot of work. Can't we do better? Well we could try to create a minimal booter and install the OS as a package directly from there.

Sort of like this: https://gist.github.com/macsimom/47be8b00f561cf17ed3547474db3b53b

I actually ended up preferring this method. Although it requires a physical Mac and a USB stick/drive it is the least storage demanding and most efficient I think.

Comments