Introduction
Recently I had to create a MacOS virtual machine for testing purposes. Previously you could use an inbuilt feature in VMWare Fusion to create a bootable virtual machine via this:
However, the changes in Ventura made this option impossible. When I tried it out, it just kept churning and nothing happened. Sadness.
Luckily all was not lost, you can still create a MacOS VM via downloading the installer, and you can also customise the version of the OS before downloading it. Sadly though, this isn’t possible for M1/M2 Macs, only for Intel.
Magic incantations
Download installer
Download the installer using this command:
softwareupdate --fetch-full-installer --full-installer-version 13.3
The version number can be changed to download the version of MacOS desired.
Create and attach DMG
After the installer has been downloaded, we need to convert it into an image.
hdiutil create -o /tmp/macOS -size 15945m -volname macOS -layout SPUD -fs HFS+J
hdiutil attach /tmp/macOS.dmg -noverify -mountpoint /Volumes/macOS
These commands create a DMG file in /tmp and mount it. The size is 15945 MB which should be sufficient for Ventura.
Copy installer to DMG
Now that the DMG has been created and mounted, we can run the installer to get it to create installation media on the DMG.
sudo /Applications/Install\ macOS\ Ventura.app/Contents/Resources/createinstallmedia --volume /Volumes/macOS --nointeraction
Change the installer name as required.
Convert to ISO
For the last step, we’ll need to convert it to ISO format in order to get VMWare Fusion to install.
hdiutil detach -force "/Volumes/Install macOS Ventura"
hdiutil convert /tmp/macOS.dmg -format UDTO -o ~/Desktop/macos
mv ~/Desktop/macos.cdr ~/Desktop/macos.iso
After these commands we can safely eject the previously created DMG and delete it to free up some space.
Create VM in Fusion
We can now create the VM in fusion by dragging the ISO into the “Install from disc or image” area.
After waiting for a long time to churn, we manage to boot into our fresh VM.
Graphics acceleration is non existent unfortunately, so performance is pretty slow. But at least you get a VM to do whatever testing you need on!