Skip to content

Instantly share code, notes, and snippets.

@esutton
Last active January 12, 2023 05:25
  • Star 16 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save esutton/5bd487b9e657ecd91cd66cdd247b3fae to your computer and use it in GitHub Desktop.
Create macOS Catalina Bootable ISO Image
#!/bin/sh
#
# File: macos-installer-to-iso.sh
#
# Create a bootable ISO image from a macOS installer to install VMware ESXi guests.
#
# https://gist.github.com/Kutkovsky/613e29f35d3ef420b23b59ecdf7a28e0
# Debug on: set -x
set -eux
# App Store downloads macOS isntaller to here:
# /Applications/Install\ macOS\ Catalina.app
buildDir=macos-build-iso
installBuild=install_build
target=Catalina
macOsInstallerName="Install macOS ${target}"
echo "Clean..."
if [ -d "/Volumes/${installBuild}" ]; then
hdiutil detach /Volumes/${installBuild}
fi
if [ -d "/Volumes/${macOsInstallerName}" ]; then
hdiutil detach "/Volumes/${macOsInstallerName}"
fi
if [ -d "${buildDir}" ]; then
rm -rf ${buildDir}
fi
mkdir -p ${buildDir}
hdiutil create -o "${buildDir}/${target}.cdr" -size 10000m -layout SPUD -fs HFS+J
sudo hdiutil attach "${buildDir}/${target}.cdr.dmg" -noverify -mountpoint /Volumes/${installBuild}
sudo "/Applications/${macOsInstallerName}.app/Contents/Resources/createinstallmedia" --volume /Volumes/${installBuild} --nointeraction
hdiutil detach "/Volumes/${macOsInstallerName}"
hdiutil convert "${buildDir}/${target}.cdr.dmg" -format UDTO -o "${buildDir}/${target}.iso"
mv ${buildDir}/${target}.iso.cdr ${buildDir}/${target}.iso
rm ${buildDir}/${target}.cdr.dmg
# Now there should be an ISO called Catalina.iso in the `out` folder
# Upload the resulted ISO to vSphere datastore (upload to an ESXi host)
# Create a new VM as Guest OS set to `Other:Apple macOS 10.14 64-bit`. Don't start a VM
# Then compatibility should set to `ESXi 6.7 update 2 and later` and Guest OS to `Windows 10 64-bit`
# Start the VM, make sure that CDROM with datastore ISO (Catalina.iso) is connected
# Disable the Network boot option in vSphere BIOS menu. Restart VM
# Installer should start. You should choose Disk Utility, and initialize the VMware Virtual SATA Hard Drive Media
# (since keyboard ain't work - using existing `Untitled` name)
# Wait util installer completes. VM will not boot. Shutdown VM, change Guest OS profile back to `Other:Apple macOS 10.14 64-bit`
# Once Catalina is installed, download the latest VMware tools and install it.
# It took two reboots for me to completion (will require to unblock security extension)
# Credits to Intel008 and Bogdam from https://communities.vmware.com/thread/611961
# Credits to mkuzmin https://github.com/jetbrains-infra/packer-builder-vsphere/blob/master/examples/macos/setup/iso-macos.sh
# Credits to pat-s https://gist.github.com/agentsim/00cc38c693e7d0e1b36a2080870d955b
@mistacabbage
Copy link

Thanks! This actually worked with macOS Catalina 10.15.4 Build 19E287 and VMware Fusion Professional Version 11.5.3 (15870345). The Fusion vm showed the Apple logo and booted straight into Recovery Mode.

@esutton
Copy link
Author

esutton commented May 14, 2020

@mistacabbage Good to know it works with macOS Catalina 10.15.4 and VMware Fusion Professional 11.5.3 !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment