Hi all, I came up with a much simpler method of installing Snow Leopard (non-Server) in Parallels (20 or earlier, since 26 doesn't support Snow Leopard), or VMWare Fusion (including the current one, 25H2; it's free, if you can navigate Broadcom's very corporate feeling site).
It involves a script which makes small modifications to the Snow Leopard install DVD (but not Snow Leopard itself).
Let me know if it works for you!
The basic idea of operation is this: The very first thing the VM looks at when starting up a 10.6 VM is whether /System/Library/CoreServices/ServerVersion.plist is present on the boot drive. If not, it won't run.
But, if you just leave that file there, then Snow Leopard is confused and thinks it's Server and tries to get the wrong updates and has other issues. So, the file has to be present during immediate startup, but absent while running.
What the AppleScript does is install a bash script into /etc/rc.local (which runs during Snow Leopard startup), and also /etc/rc.shutdown.local (which runs during Snow Leopard shutdown), into the Snow Leopard DVD image, and also copies /System/Library/CoreServices SystemVersion.plist on the DVD image to ServerVersion.plist, allowing the DVD image to start in the VM.
The bash script on the DVD, during both startup and shutdown, sees whether the Snow Leopard HD is present, and if so, copies the HD's SystemVersion.plist to ServerVersion.plist, so the HD can start up in the VM. It also creates new bash scripts for /etc/rc.local and /etc/rc.shutdown.local on the Snow Leopard HD, so that when it starts up, the startup script deletes ServerVersion.plist, so Snow Leopard isn't confused while running, and the shutdown script copies it back, so it can start up in the VM next time.
If you have to force stop the VM, ServerVersion.plist will be absent, so you'll need to boot from the DVD image again, which will fix it (immediately, just by virtue of booting it, because it has its own script that runs at startup that puts the file into the virtual Snow Leopard HD, if present).
Steps:
- make or obtain a Snow Leopard DVD image -- the entire disc, not just the volume. If using Disk Utility, select Format: DVD/CD master
- copy and paste the AppleScript below into Script Editor, and run it, to make the needed changes to the image
- set up an ordinary unconfigured VM in Parallels or Fusion containing one virtual HD
- select the virtual HD to have a higher boot order than the virtual HD (Parallels), or as the startup disk (Fusion)
- for the the virtual optical drive, select the modified image you made
- start up the VM. Ignore that it says Snow Leopard Server; it's cosmetic. You'll be installing regular Snow Leopard.
- choose Disk Utility from the Utilities menu to format the HD as Mac OS Extended (Journaled) (necessary for VMWare; not necessary for Parallels, but it can't hurt to double-check)
- install Snow Leopard to the virtual HD
- when the VM reboots, set up Snow Leopard's initial screens. (If you find yourself back on the installer DVD, disconnect the virtual optical drive, and reboot.) Eject the Snow Leopard installer DVD.
- run Software Update repeatedly until there are no more updates.
- install VM Guest tools if desired.
- Parallels: you need to use the guest tools for version 19. You can get this without installing version 19:
- download Parallels 19
- open the disk image
- from the Go menu in Finder, choose Go to Folder, and enter "Parallels Desktop.app/Contents/Resources/Tools" (note the *lack* of slash at the start; don't put one one in).
- copy "prl-tools-mac.iso" to somewhere safe (and rename it to something clearer if you like, like "Parallels 19 Guest Tools for Mac.iso" or something)
- eject the Parallels 19 image
- attach prl-tools-mac.iso to the virtual optical drive, and run the installer. Ignore any warnings.
- after reboot, eject the Parallels Tools DVD
- Fusion: You need an older version of Guest tools. You can get it from here. Attach it to the virtual optical drive, run the installer, and eject the Tools DVD after reboot.
- if VM ever refuses to boot or complains it's not the Server version of Snow Leopard (e.g. because you forced the VM off), boot from the DVD image again (you may need to adjust boot order); as soon as you get to the screen asking you to pick a language, just turn off the VM, change the HD to once more be the boot device, disconnect the virtual optical drive, and start up. (In other words, simply booting the DVD image will fix the virtual HD.)
- final note: the only even sort of functional browser for Snow Leopard *in a VM* that I've found is Arctic Fox version 45.2 (direct download: 64-bit or 32-bit). Later versions, as well as cousins InterWeb and Powerfox, don't display any text. This is only an issue in VM's, and it affects all of them (Parallels, Fusion, VirtualBox). Additional problems stem from expired SSL root certificates. There's discussion and possible resolution here about that, but the truth is you're just better off using your host OS browser and then using either the VM's shared folder feature, or macOS File Sharing, to install any downloads into the VM.
Finally, the AppleScript. Just have a Snow Leopard image ready (in .cdr, .iso, or read/write dmg format), paste this code into Script Editor, and run it. It should be self explanatory; you just choose the image file, and it makes the modifications. Then you attach the modified image file to the VM's virtual optical drive, and start up from it.
Code:
repeat
set dvdVol to ""
set volName to ""
set dvdImagePath to ""
activate me
set dvdImagePath to quoted form of POSIX path of (choose file with prompt "Please select a Mac OS X 10.6 installer disk image:" of type {"iso", "cdr", "dmg"})
set partitionScheme to (do shell script ("/usr/bin/hdiutil imageinfo " & dvdImagePath & " | grep partition-scheme | head -1 | cut -d ':' -f 2 | tr -d ' '"))
if partitionScheme is not "Apple/ISO9660" then
display dialog ("This disk image looks like it only contains the Mac OS Extended partition of the original DVD. Please use an image of the entire original DVD, with all partitions." & return & return & "If you are making the image from a DVD using Disk Utility, choose \"Show All Devices\" from the View menu, and in the left column, select the drive containing the volume, not the volume itself." & return) with icon caution buttons {"Cancel", "Try Again"}
else
set mountResult to (do shell script ("hdiutil attach -imagekey diskimage-class=CRawDiskImage -readwrite " & dvdImagePath))
set volName to (do shell script ("tr '\\r' '\\n' <<< $'" & mountResult & "' | grep Volumes | cut -d '/' -f 5"))
-- set volName to (do shell script ("cut -d '/' -f 5 <<< $'" & volLine & "'"))
if volName is not "" then
set dvdVol to ("/Volumes/'" & volName & "'/")
exit repeat
end if
do shell script ("diskutil eject " & "/Volumes/'" & volName & "'")
end if
end repeat
set rclocaldvd to ("#!/bin/bash
# Scan all /Volumes entries and look for a SystemVersion.plist containing '10.6'
while read thisVol; do
[[ \"${thisVol: -3}\" != \"DVD\" ]] &&
grep -q \"10.6\" /Volumes/\"$thisVol\"/System/Library/CoreServices/SystemVersion.plist 2>/dev/null && {
vol=/Volumes/\"$thisVol\"
break
}
done <<< \"$(ls -1 /Volumes)\"
if [[ \"$vol\" != \"\" ]]; then
echo \"/bin/rm /System/Library/CoreServices/ServerVersion.plist\" > \"$vol\"/etc/rc.local
echo \"/bin/cp /System/Library/CoreServices/SystemVersion.plist /System/Library/CoreServices/ServerVersion.plist\" > \"$vol\"/etc/rc.shutdown.local
cp \"$vol\"/System/Library/CoreServices/SystemVersion.plist \"$vol\"/System/Library/CoreServices/ServerVersion.plist
fi")
do shell script ("diskutil enableOwnership " & dvdVol) with administrator privileges
do shell script ("echo '" & rclocaldvd & "' > " & dvdVol & "etc/rc.local") with administrator privileges
do shell script ("echo '" & rclocaldvd & "' > " & dvdVol & "etc/rc.shutdown.local") with administrator privileges
do shell script ("chown root:wheel " & dvdVol & "etc/rc.local " & dvdVol & "etc/rc.shutdown.local") with administrator privileges
do shell script ("/bin/cp " & dvdVol & "System/Library/CoreServices/SystemVersion.plist " & dvdVol & "System/Library/CoreServices/ServerVersion.plist") with administrator privileges
do shell script "diskutil eject " & dvdVol
activate me
display dialog "Done. Start up your VM with the installer image, and use it to install Snow Leopard to the VM's virtual hard drive. Ignore that it says Snow Leopard Server during installation; it will still install standard Snow Leopard." buttons {"OK"} default button {"OK"}