Skip to content

Instantly share code, notes, and snippets.

@esutton
Last active January 12, 2023 05:25
Show Gist options
  • Save esutton/5bd487b9e657ecd91cd66cdd247b3fae to your computer and use it in GitHub Desktop.
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
@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