Recently when working with a client we encountered a situation where it would be beneficial run a Mac VM on our Mac laptops, so I decided to investigate. I was in luck! It turns out this is actually really easy to do.

To get started, download Yosemite from the App Store.

Fair warning: the download is ~5.5GB. It took me about half an hour to download, but depending on your connection speed your mileage may vary.

My Setup

  • 2015 Macbook Pro
  • 16 GB RAM
  • 2.5 GHz i7
  • 512 GB SSD
  • VirtualBox v4.3.x

The following instructions are heavily borrowed from frdmn's notes blog with additional notes added as needed.

Creating the Mac OS X Disk Image

  1. Install iesd, to customize OS X InstallESD:
    gem install iesd
  2. Turn install image into base system:
    iesd -i "/Applications/Install OS X Yosemite.app" -o yosemite.dmg -t BaseSystem
  3. Convert into UDSP (sparse image) format:
    hdiutil convert yosemite.dmg -format UDSP -o yosemite.sparseimage
  4. Mount the InstallESD:
    hdiutil mount "/Applications/Install OS X Yosemite.app/Contents/SharedSupport/InstallESD.dmg"
  5. Mount the sparse image:
    hdiutil mount yosemite.sparseimage
  6. Copy the base system into the sparse image:
    cp "/Volumes/OS X Install ESD/BaseSystem."* "/Volumes/OS X Base System/"
  7. Unmount InstallESD:
    hdiutil unmount "/Volumes/OS X Install ESD/"
  8. Unmount the sparse image:
    hdiutil unmount "/Volumes/OS X Base System/"
  9. Unmount both mounted disks:
    diskutil unmountDisk $(diskutil list | grep "OS X Base System" -B 4 | head -1)
    diskutil unmountDisk $(diskutil list | grep "OS X Install ESD" -B 4 | head -1)
    • If you have difficulty/receive an error, you can also do this in Disk Utility. "Right" click on the disk image (either InstallESD.dmg or yosemite.sparseimage) and then select Eject Disk Image. Repeat for the other disk as needed.
  10. Convert back to the UDZO compressed image format:
    hdiutil convert yosemite.sparseimage -format UDZO -o yosemitevagrantbox.dmg

Common Error

What to do if you encounter the this error on the last step:
hdiutil: detach failed - No such file or directory

  1. Remount the sparse image file. One way do to this is to open Finder and double click on the sparse image file.
  2. Use hdiutil detach instead of hdiutil unmount:
    hdiutil detach /Volumes/OS\ X\ Base\ System/
  3. Re-run hdiutil convert command.

Creating the VM in VirtualBox

  1. Click "New" or ctrl+N/cmd+N to create a new VM
  2. Give it a name, select Type: Mac OS X and Version: Mac OS X (64-bit) if these are not populated for you (they will be if you use "Mac" in the name). Click continue.
  3. Default of 2 GB of RAM is adequate for a quick test, but if you plan on using the VM for more than 5 seconds I recommend 4 GB if you can spare it. Otherwise the lag is really frustrating. In any event, click Continue.
    • Note if you change the RAM to 4 GB you will need to change your chipset later.
  4. If you do not already have a virtual hard drive leave the default selection and click "create".
  5. I used VDI, click Continue.
  6. I left the disk as dynamically allocated. Click Continue.
  7. I left the default 20 GB. Click Create.
  8. If you upped your RAM, "right" click on the new VM and click "Settings". Then go to System -> Motherboard to change the chipset to PIIX3. Feel free remove "Floppy" from the boot order while you're in there.
  9. "Right" click on the new VM and click "Start".
  10. Select the disk image as an "optical disk":
    Select disk image
    • You do not need to create an ISO, although if you do it will still run normally. If you would like to create an ISO just run this command:
      hdiutil convert yosemitevagrantbox.dmg -format UDTO -o yosemitevagrantbox && mv yosemitevagrantbox.cdr yosemitevagrantbox.iso
  11. Wait a few minutes while the installer runs. Grab a coffee?
  12. Once the installer starts go ahead and select your language.
  13. Go into Disk Utility and create a formatted partition. Instructions for how to do this are in the "Creating a formatted partition..." section below.
  14. When prompted, install on the partition you created in the previous step.
  15. Go through prompts as normal (iCloud, etc.). I personally didn't sign into iCloud/etc. for a test VM.

Creating a formatted partition with Disk Utility

  1. Start Disk Uility:
    Start Disk Utility
  2. Select 1 Parition:

  3. Name & Apply the partition+format:

  4. Click Partition:
    Partition

Make sure to use the partition for the install:

Install Partition

What next?

Enjoy your test VM! Create and destroy at will! Muhahahhaaha.