Create a bootable ISO of macOS Catalina 10.15 (Bonus: With bootable USB too!)

By | February 19, 2020

How to make a bootable ISO of macOS Catalina


I’m not kidding, forget about the mess below. Apple has updated and documented this across several macOS versions. Find it at’s article “How to create a bootable installer for macOS

Ignore everything below!!!

I previously wrote up my version of creating a macOS Mojave and Sierra HERE and HERE.

I’m updating it for macOS Catalina 10.15

First, navigate to the macOS Download page in the App Store and choose “GET”. Depending on whethere there’s a local copy or not, you may have to choose “Download” if you are offered it, and wait to download the whole installation app.

When you are done, the Installer will open. Quit the installer (via menu or via command-Q). This will leave the “Install macOS Catalina” installer in your /Applications folder.

Then copy this code and save it as a shell script named “”

#!/usr/bin/env bash
hdiutil attach /Applications/Install\ macOS\ Catalina\.app/Contents/SharedSupport/InstallESD.dmg -noverify -mountpoint /Volumes/Catalina
hdiutil create -o ./CatalinaBase.cdr -size 8.5g -layout SPUD -fs HFS+J
hdiutil attach ./CatalinaBase.cdr.dmg -noverify -mountpoint /Volumes/install_build
asr restore -source /Applications/Install\ macOS\ Catalina\.app/Contents/SharedSupport/BaseSystem.dmg -target /Volumes/install_build -noprompt -noverify -erase
rm -rf /Volumes/macOS\ Base\ System/System/Installation/Packages
mkdir -p /Volumes/macOS\ Base\ System/System/Installation/Packages
cp -R /Volumes/Catalina/Packages/* /Volumes/macOS\ Base\ System/System/Installation/Packages/
hdiutil detach /Volumes/macOS\ Base\ System/
hdiutil detach /Volumes/Catalina/
mv ./CatalinaBase.cdr.dmg ./BaseSystem.dmg
# Restore the 10.13 Installer's BaseSystem.dmg into file system and place custom BaseSystem.dmg into the root
hdiutil create -o ./Catalina.cdr -size 10g -layout SPUD -fs HFS+J
hdiutil attach ./Catalina.cdr.dmg -noverify -mountpoint /Volumes/install_build
asr restore -source /Applications/Install\ macOS\ Catalina\.app/Contents/SharedSupport/BaseSystem.dmg -target /Volumes/install_build -noprompt -noverify -erase
cp ./BaseSystem.dmg /Volumes/macOS\ Base\ System
hdiutil detach /Volumes/macOS\ Base\ System/
hdiutil convert ./Catalina.cdr.dmg -format UDTO -o ./Catalina.iso
mv ./Catalina.iso.cdr ./Catalina.iso
rm BaseSystem.dmg Catalina.cdr.dmg

After creating the shell script, you can make it executable (“chmod +x”) or just run it like “sh”. If you aren’t proficient in running scripts, you probably shouldn’t be messing with this in the first place!

You want to be sure to run this code in a directory that has enough space to hold a few copies of the ~10GB ISO simultaneously. Ideally it’s on fast media as well. And also not part of your cloud storage (iCloud Desktop, Dropbox, etc.). Often your home directory is just fine.

Bootable USB?

Want a bootable USB? Simply use dd to copy the ISO directly to your USB drive. I am not going to give you a real command to copy to do that… dd can be dangerous. But it’s as simple as something like this:

sudo dd if=Catalina.iso of=/dev/rdisk### bs=4m

Good luck!

6 thoughts on “Create a bootable ISO of macOS Catalina 10.15 (Bonus: With bootable USB too!)

  1. Joseph Messenger

    It doesn’t work for Catalina 10.15.4 and above.

    I found this other solution:
    #!/usr/bin/env bash
    # Works only with the official image available in the Mac App Store.
    # Make sure you download the official installer before running this script.

    hdiutil create -o /tmp/Catalina.cdr -size 12000m -layout SPUD -fs HFS+J
    hdiutil attach /tmp/Catalina.cdr.dmg -noverify -mountpoint /Volumes/install_build
    sudo /Applications/Install\ macOS\ –volume /Volumes/install_build –nointeraction
    hdiutil detach “/Volumes/Install macOS Catalina”
    hdiutil convert /tmp/Catalina.cdr.dmg -format UDTO -o /tmp/Catalina.iso
    mv /tmp/Catalina.iso.cdr ~/Desktop/Catalina.iso
    rm /tmp/Catalina.cdr.dmg

    posted in

  2. Bill Plein Post author

    I’ll check it out this weekend and update my post accordingly. Thanks for the heads up.

    ====== later ========

    Well, mine still seems to work but there’s some errors (non-fatal) and some cleanup I should do, BUT the link you sent is more elegant. Thank you! I’ll try that one out. Not sure why they had to increase the size of it to that large but whatever it takes 🙂

  3. Topher

    Just a thought. I’m trying to teach myself the how to use the terminal, ssh, VMWare, and networking. I have learned everything through copying the genius of others, and going through the motions.

    This being said, I didn’t appreciate your comment “If you aren’t proficient in running scripts, you probably shouldn’t be messing with this in the first place!” since I am not proficient in running scripts, but I’m trying to learn.

    Joseph Messenger, thank you for your help, as this is the first set of terminal commands that has succeeded in making the .iso . Now, I’m off to trying to get it to set up a VM machine.

    Thank you both for sharing your knowledge!

  4. Daniel Hudson

    I’ve had trouble with Bill’s Mojave and Catalina ISO creation instructions with the ‘cp -R /Volumes….’ command. It seems that the ‘”/System/Installation/Packages/” target is a symlink, and I suspect that is a problem. I’ve tried this on a Mojave system (running 10.14.6) and a Catalina system (running 10.15.7), and had the same issue at this same place on both Mojave and Catalina ISO creation.

    Am i not doing something right, or is there an error in the script?

    Your work putting these together is greatly appreciated!!!

  5. Bill Plein Post author

    I think that over time the various Install images have changed ad of course this is also dependent on the OS version you are running from. I’m afraid these techniques work at the point they were developed but may fail months later if Apple changes the images.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.