Professional Documents
Culture Documents
1.0 Introduction
1.1 Background
VMware products allow guest operating systems to be run on a variety of hardware and operating
systems. Currently only VMware Fusion can run virtualized Mac OS X out of the box, and then only
the Server version due to EULA restrictions imposed by Apple. This new package allows Mac OS X
versions to be run as virtual guests on VMware’s Windows and Linux products, and on the ESX and
ESXi hypervisors.
The package supplies a VMware tools image, darwin.iso, which is suitable for running an Apple
Darwin based operating system within VMware. This image is used as a bootstrap for the guest and
is derived from the work done by David Elliott on boot-132, and the others that have also worked in
this area such as the Voodoo team. The background can be found at David Elliott’s web site
http://www.tgwbd.org/darwin/.
All the VMware products transparently mount the boot CD as in VMware Fusion. This behaviour is
hard coded into VMware products and cannot be changed. Darwin.iso contains the boot-132 code
and Mac OS X extensions to boot on version 7 of the VMware virtual hardware chassis. As VMware
uses signed SHA-1 digests to ensure the integrity of the VMware tools ISO images, we need to re-
sign all of the tools so that we can replace or insert the darwin.iso into the relevant program
directory. We do this using our public and private keys, as naturally VMware do not publish their
private key for obvious reasons. This was originally explained in this post on the web.
currently issues with Nehalem based processors, which VMware are working on. If it is not
compatible then this package will not work with the vanilla installers. It can be used for other
distributions but has not been tested and is not supported.
To summarize:
VT-x present
VT-x enabled in BIOS
64-bit – can run 64 & 32-bit versions of Leopard
32-bit – can run 32-bit version of Leopard
File Description
AppleAC97Audio.kext.zip Audio driver
darwin.iso VMware Darwin tools ISO image
libeay32.dll Windows OpenSSL Shared Library
manual.pdf This document
openssl.exe Windows OpenSSL
readme.txt Text file with important information
setup.cmd Windows setup command
setup.sh Linux/Mac OS X/ESX(i) setup script
ssleay32.dll Windows OpenSSL Shared Library
tools-key.pem Replacement private key
tools-key.pub Replacement public key
2.0 Installation
2.1 Windows
You will need to be comfortable with using the command prompt with Administrator level privileges.
To setup the system follow these steps.
The main settings to ensure are configured during the setup of a new guest are:
1. Create a FreeBSD virtual machine in 32 or 64-bit format depending on whether you want to
run the 32 or 64-bit version of Mac OS X. Fusion users can directly select the Mac OS X
version from the options menu.
2. Memory should be 1024MB as a minimum.
3. Disks should be created with about 16GB as a minimum size and using either:
a. IDE
b. SCSI with LSI Logic SCSI Adapter
4. Network adapter must be Intel E1000 which should be configured if FreeBSD selected as a
starting point.
5. Ensure that USB 2 is enabled in the guest. This can now be included on ESX 4.0 guests.
6. CD/DVD is also mandatory for the guest, and also I suggest you configure it to point to the
DVD disk or image you will be using during the installation process.
Power the guest on and off to allow some settings created at runtime to be added to the VMX file.
1. Guest operating system needs to be changed to allow internal virtual hardware needed to
support the Darwin kernel. The setting will be dependent on what you want to run.
An example is:
guestOS = "darwin-64"
2. Guest operating system name needs to be commented out for ESX(i), by adding a comment
character “#” at the front of the line:
#guestOSAltName = "FreeBSD (64-bit)"
ich7m.present = "TRUE"
4. Tell the virtual hardware whether to pass through the AppleSMC controller to the guest OS.
If running on a real Mac this should be TRUE otherwise set it to FALSE.
smc.present = "FALSE"
5. Enable the virtual hardware USB emulation of keyboard and mouse. (Note this is not
dependent on the host keyboard and mouse configuration.)
keyboard.vusb.enable = "TRUE"
mouse.vusb.enable = "TRUE"
Finally, add the guest back into the Inventory on Server and ESX(i) systems. If you later decide to
modify settings of the guest there are 2 things to be aware of:
1. ESX(i) will display this harmless warning message which can be safely ignored .
2. Workstation on Linux will crash as it does not deal with the new “guestos” parameter. You
will need to manually change it back to “freebsd” or “freebsd-64” before making changes.
Sorry it is a bug in the VMware code and cannot be patched.
You should then be at the main installer screen for language selection. Work through the setup as
for any other system. If you need to install as 32-bit version of Mac OS X, pass the “-legacy” flag from
the boot options screen. Remember to use Disk Utility from the menu to partition the virtual disk
before progressing into the installer.
1. Open a terminal session and get the uid from the id command
2. sudo nano -w /Library/Application Support/VMware Tools/services.sh
3. Edit the line
mount -t vmhgfs .host:/ '/Volumes/Shared Folders'
to
mount -t vmhgfs -o uid=<XXX> .host:/ '/Volumes/Shared Folders'
4.2 Video
VMware do not provide accelerated video drivers for running Mac OS X, and so you won’t get Quartz
Extreme support and Core Image works in software mode. Also at this time Workstation will not
automatically resize the screen when entering or leaving full screen mode. Fusion does this
seamlessly, and it is due to an extension to the VMware SVGA II specification which Fusion supports
and Workstation does not. To change screen resolutions you will need to pass the resolution at boot
or setup a default resolution in com.apple.Boot.plist. There are plenty of tutorials on how to do this
on the web. You can setup multiple resolutions in separate configuration plist files and select them
at boot using the “config” boot switch.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
<key>Graphics Mode</key>
<string>1280x1024x32</string>
</dict>
</plist>
4.3 Sound
Sound is a problem in that VMware emulates a Creative AudioPCI ES1371 card and the only know
driver for this was produced by Maxxuss. I have included that version in the package but
performance is variable, especially when running on a Linux platform. To use this, copy the extension
to the guest and install as normal for extensions.
An alternative solution I have used is the Rogue Amoeba Airfoil driver and network speakers. I have
acceptable performance running on a Windows XP host with this, and can recommend it. I do
suggest that you try it first as sound performance for VMware is highly variable. Please note that I
have no affiliation with Rogue Amoeba Software.
keyboard.vusb.enable = "FALSE"
If you have mouse issues the same can be achieved be editing this setting:
mouse.vusb.enable = "FALSE"
If you want to make the keyboard more useable due to a PC layout then I suggest using Ukulele to
find a more suitable keyboard layout. Also the Apple key can be mapped to a Windows/Linux key in
the Settings Keyboard dialog.
5.0 Troubleshooting
Here are some hints to help with troubleshooting.
Boot with -v flag and see if there are any error messages
After a software update to Mac OS X itself boot once with -v -f -x flags immediately after
installation
If you have a Nehalem based CPU it may not boot the guest. Try adding these 2 lines to the
VMX file:
monitor.virtual_exec="hardware"
monitor.virtual_mmu="software"
Acknowledgements
Apple – great OS
VMware – great products
InsanelyMac forums – help and feedback
Voodoo Team – boot, kernel and extensions
History
26/06/09 - Version 1.0