A Beginner's Guide to VMware Fusion

Version 25

    Disclaimer: This is a personal document and is not official or endorsed by VMware. Feedback, suggestions, and edits are welcome.

    This document is intended for someone new to Fusion, and possibly  someone who is new to Macs in general. It describes basic  terminology/concepts, where to find things, and notes on using virtual  machines.

    If you want to be notified of changes and additions to this document,  you can use the "Receive email notifications" action in the sidebar on  the left. People can't seem to stop using the comments section  inappropriately, so I've locked it. For any concerns about this  document, please PM me instead.

    Another good resource for beginners is the free eBook Take Control of VMware Fusion 3 (oriented towards Fusion 3, obviously).

    More advanced users may be interested in A Power User's Guide to VMware Fusion.

    Terminology

    Virtualization software lets you run multiple operating systems at once. A hosted product (such as Fusion, Workstation, Server, and Player) runs on top of another OS, called the host.  In the case of Fusion, the host is OS X. The OS (such as Windows XP,  Ubuntu 7.04, or most x86 OSes) that you run inside the virtualization  software is called the guest.

    As a side note and comparison, bare metal virtualization (such as ESX/ESXi/vSphere) gets rid of the host OS to improve performance and reduce security vulnerabilities.

    See Glossary of Virtualization (and Computing) Terms for a more complete list.

    Where to Find Things

    Fusion and vmware-vmx Processes

    When Fusion runs a virtual machine, there are actually two processes  involved: the Fusion GUI and vmware-vmx. The GUI takes care of things  like accepting input and drawing to the screen, while the vmware-vmx  process does the heavy work of actually running the guest. If you ever  want to see how much CPU Fusion is taking up, remember that you need to  consider both processes. vmware-vmx is a root-owned process, so to see  it in Activity Monitor you have to choose to view All Processes.

    If you force quit Fusion, this only kills the GUI process; the  vmware-vmx process continues running. If you really want to force quit  all of Fusion, you need to kill vmware-vmx as well. Note: If it's  just the guest that's not responding, you can tell Fusion to shut down  or restart it by holding option and selecting Virtual Machine > Power  Off or Virtual Machine > Reset. This is similar to pulling the power  cord on a physical computer.

    Virtual Machine Files

    For non-boot Camp virtual machines, Fusion puts virtual machines (VMs)  in "/Users/yourusername/Documents/Virtual Machines/" by default. Boot  Camp virtual machines are located in  "/Users/yourusername/Library/Application Support/VMware Fusion/Virtual  Machines/". You can also see the location of a virtual machine in the  Virtual Machine Library by hovering the mouse over the listing - the  location should pop up in a tooltip.

    Another simple way to locate your VM while open is to Control-Click on  the VM windows icon.  This will bring up a pop-up box showing all of the  enclosing folders to your virtual machine.  Clicking on its proximal  containing folder will open it in a new Finder window.

    VMs are packaged up in bundles a.k.a. packages, which is  OS X's way of showing things that really belong together. Other examples  of bundles include most applications and installers. Fusion bundles  have the extension ".vmwarevm" (OS X may hide this by default). You can  examine the contents of a bundle by going to the bundle in the Finder,  ctrl-clicking it, and choosing "Show Package Contents"

    By default, bundles contain the files that describe a virtual machine. These files include:

     

    • A virtual disk file (*.vmdk)
      • This can be a single large file or many 2GB chunks, depending on how  you set up your disk. If you have a snapshot, there will also be more  of these.
    • A configuration file (*.vmx)
      • This is a plaintext file describing the virtual machine, such as  which files it uses, how much RAM it gets, and various settings. Since  it's a plaintext file, you can use your favorite text editor to modify  it, but be sure that the virtual machine and Fusion is not running when you do this. Note that editing the .vmx file is not  supported and can cause problems if you don't know what you're doing.
    • A BIOS file (*.nvram)
      • This contains information such as the virtual machine's boot order
    • Log file(s) (vmware.log)
      • This is a plaintext file that contains information on the most  recent run of the virtual machine, and corresponds to the vmware-vmx  process. The next-most-recent is called vmware-0.log, then vmware-1.log,  and finally vmware-2.log. If you ever have a problem with Fusion, you  may be asked to provide this file.


    Other files are created when you run the virtual machine. These include:

     

    • Lock files (*.lck)
    • Memory file (*.vmem)

     

    Other Files

    • Fusion UI log ("/Users/yourusername/Library/Logs/VMware Fusion/vmware-vmfusion.log")
      • Just as the vmware-vmx process creates vmware.log, the Fusion UI  process creates this log. Like vmware.log, this is a rotating log.
    • Tools images ("/Library/Application Support/VMware Fusion/isoimages/")
      • You shouldn't normally have to deal with these, Fusion should  automatically take care of connecting them to the guest when you choose  Virtual Machine > Install VMware Tools.
    • User-wide configuration, essentially .vmx defaults. Individual .vmx  files override this. ("/Users/yourusername/Library/Preferences/VMware  Fusion/config")
    • User-wide preferences, mostly UI controls. Individual .vmx settings  do not override this because these settings do not apply to individual  VMs. ("/Users/yourusername/Library/Preferences/VMware  Fusion/preferences")
      • Note the difference between the config and preferences files is  mostly by convention, it's possible (but bad practice) to mix entries  between them. This doesn't always work, though.

     

    Working With Virtual Machines

    With the exception of Boot Camp virtual machines, VMs are just files  (albeit very large ones that happens to be able to run other programs).  Because of this, you can back them up by simply making a copy to  external media (Warning: FAT32 has filesize limitations) and restore  them by copying back. You delete them from your computer by deleting  them in the Finder (you can remove them from the Virtual Machine Library  by selecting the entry and pressing Delete).

    Boot Camp virtual machines are a little different, because instead of  having a virtual hard disk, the VM uses the Boot Camp partition. Thus  you can't simply copy the virtual machine to make a backup.

    Fusion (the application) is distinct from virtual machines. Updating or  uninstalling Fusion does not affect any virtual machines you have, just  as updating iTunes does not affect your mp3s and updating Word doesn't  affect your documents. When changing the version of Fusion (or any  VMware product), it's good practice to shut your virtual machines down  first (e.g. don't suspend a virtual machine then open it with a  different version of Fusion). While it'll probably work, we don't  guarantee it.

    Important: Whenever you do file operations (move, copy, edit, delete, etc.) to a VM, make sure it is powered down and Fusion isn't running. You don't want to change the data out from under Fusion.

    Virtual Machine Settings

    See also Choosing the Right Virtual Machine Settings

    Disk Size

    When selecting disk size, there are two big considerations. The first is  how much space the operating system needs. Some guest OSes need lots of  space -- I believe Vista wants 7 GB -- while at the other end of the  spectrum, Linux Live CDs don't need any. The other concern is how much  space you need. If you're just surfing the web and downloading the  occasional file, you might not need much extra space. On the other hand,  if you're going to be doing things like working with databases, editing  video, compiling large programs, etc., you might want lots more space.

    I's OK if you selected a size that's too small - unlike a normal  physical disk, it's possible to expand a virtual disk. This is a  slightly involved process, and Pat Lee has written a good step-by-step  guide Resizing Virtual Disks With Step by Step Instructions (a similar procedure works for other guest OSes). You can also add  additional virtual disks later, which is an easier way of increasing  space. However, the easiest of all is to get it right from the  beginning.

    Disk Type

    Virtual disks can be monolithic or split, and sparse or preallocated.  These options can be found under the Advanced disk options triangle in  the Virtual Hard Disk step. It is possible to convert between these  options later using vmware-vdiskmanager, but it may require a lot of  extra space. The default type is monolithic-sparse. My personal  recommendation is split-sparse.

    Monolithic disks means the virtual disk is one file, while a split disk means the virtual disk is broken up into chunks of at most 2GB each.  The split type should be used any time you want to keep the VM on a  limited filesystem (such as FAT32) that does not understand large files.  The split type also makes certain operations easier - for example,  compacting a monolithic disk requires as much additional space as the  entire virtual disk, but compacting a split disk only requires an  additional 2GB. In some cases, split disks are also easier to repair  (i.e. fewer steps) if something goes wrong.

    Sparse disks start off small and grow as needed to the maximum size you specified. Preallocated disks are always the maximum size that you specified. Sparse disks are nice  because they don't take up space until they need it, while preallocated  disks may avoid fragmentation problems on the host. Sparse disks can  also be compacted (say you start off with 4 GB of data, write 6 GB more,  then delete 5 GB - you could compact a sparse disk back down to 5 GB)  by using VMware Tools in the guest. One caveat is that you can't compact  a sparse disk if you have a snapshot.

    RAM Size

    It's important for the guest to have enough RAM to be able to do  whatever it needs to, and also important for the host to have enough RAM  to be able to do whatever it needs to. It's a bad idea to allocate too  much or too little RAM to the guest. As with choosing virtual disk size,  the correct choice depends on the guest OS and what you want to do with  the VM. The choice of guest determines the minimum RAM you should give  it, and the amount of RAM your computer has determines the maximum RAM  you should give the guest. Other considerations include what you plan on  doing in the host - if you're going to be running Photoshop, iTunes,  Mail, VLC, etc. all at the same time, you might want to consider leaving  more RAM for OS X. When the virtual machine is off, you can change the  RAM allocation under Virtual Machine > Settings > Memory.

    Virtual machines love RAM - once you've tweaked settings, the most cost-effective way to improve virtual machine performance is usually to install more RAM on the host.  This has two advantages - you can give more RAM to the guest or OS X.  If you give it to the guest, your guest applications can use it. If you  give it to OS X, OS X can use the RAM as a cache to improve disk  performance in the guest.

    If you experience stuttering in iTunes or pauses when switching back and  forth between the guest and OS X, try disabling disk caching by  choosing VMware Fusion > Preferences > Optimize for Mac OS  application performance.

    VMware Tools

    By itself, Fusion has a very low-level view of the world - it sees CPU  instructions, not programs; disk blocks, not filesystems; etc. This  keeps things simple ("all" we have to do is correctly virtualize  hardware without worrying about what's the guest is trying to do), but  it makes it hard to do certain things that require higher level  knowledge. Some examples include copying files directly into or out of a  guest, being more efficient than regular drivers, and being able to  tell when the mouse enters or exits the guest. To get around this,  Fusion uses a helper in the guest called VMware Tools. Tools gives  Fusion the high-level knowledge to take shortcuts and do things it  otherwise couldn't.

    Installing Tools

    The general way to install Tools is as follows:

    1. Make sure the guest has an optical drive. If you cannot add one, it  may still be possible to install Tools by getting the files in some  other way, perhaps over the network, but that is beyond the scope of  this document.
    2. Make sure the virtual machine is running and logged in; you will need administrator privileges in the guest.
    3. Connect the appropriate Tools image by selecting Virtual Machine  > Install VMware Tools. The Tools CD should appear in the guest.
    4. The next step varies depending on the guest and your setup, but some general guidelines are:

    Windows: Tools should install automatically unless you've  disabled autorun, in which case you'll have to run D:\setup.exe (or  wherever your optical drive is) yourself.
    Linux: Installing is a two step process: Unpack and install the  tools, then configure them. If you're using a RPM-based distro (e.g. Red  Hat), use the .rpm, otherwise use the .tgz by unpacking it and running  vmware-install.pl as root. To configure tools, run  vmware-config-tools.pl.

    More detailed instructions (including instructions for Solaris/Netware/FreeBSD) can be found at http://pubs.vmware.com/guestnotes/

    Determining Which Version of Tools You Have

    On Windows, open the VMware Toolbox by clicking on the VMware-three-boxes logo ( http://communities.vmware.com/images/status/statusicon-vmware.gif ) in the taskbar. On Linux, run vmware-toolbox (some options require  running as root). In either case, go to the About tab and look for  "Version X.y.z, build-NNNNN"

    How To Shrink

    Note: You cannot shrink a disk if it has snapshots.

    Open the Toolbox as in the previous section, select the Shrink tab,  select the partition(s) you want to shrink, then press the Shrink  button. Fusion will think for a while as it figures out which parts of  the disk are actual data and marks parts which aren't needed anymore,  then ask you for a confirmation. Accept and Fusion will finish shrinking  the disk. The entire process may take some time (on the order of an  hour), especially if you have a large, empty disk. Other running  programs on the host may also slow down the process.

    Starting a VM...

    ...in One Click

    You probably already know you can open an application by opening a  document that is associated with the application. Remembering that a  virtual machine is still a document (just a very large one that's  capable of running other programs), you can do things like putting the  VM on the right side of the Dock and launch it in one click.

    ...in Unity or Fullscreen mode

    In 2.0, when you suspend, Fusion remembers the last view mode you used  and changes back to it when you resume. So instead of powering off your  virtual machine, you can suspend it and next time you come back, it will  be in the proper view mode.

    In 1.x, things were a little different.
    Once you've run a VM in Unity, the .vmwarevm bundle should have a folder  named "Applications" that has small helper applications representing  guest apps. If you open one of these, it should start the guest program  (after powering on the VM and switching to Unity, if these have not  already been done). You can also put them in the Dock. So to start in  Unity, just start the VM via the helper app you want to use.

    An alternative that also allows starting up in fullscreen is to use AppleScript: AppleScript to Run Virtual Machine and switch to Full Screen View or Unity View at Login.

    ...at Login

    If you go to System Preferences > Accounts > yourusername >  Login Items, you can select applications or documents to open at login  time. You can of course put a virtual machine here, too.

    ...at Boot Time

    See HOWTO: Run a Virtual Machine at Boot

    Sharing Virtual Machines Between Users

    First, the caveats: Only one person can be using the virtual machine at a  time (and Fast User Switching doesn't count). Suspending (and possibly  snapshotting) the VM will probably cause other people to not be able to  use the VM.

    Important: Whenever you do file operations (move, copy, edit, delete, etc.) to a VM, make sure it is powered down and Fusion isn't running. You don't want to change the data out from under Fusion.

    To do this, the main things you need to do are:

     

    • Move the virtual machine to a shared location so other users can access it
      • An example of this is /Users/Shared/
    • Change permissions so that any user can access the virtual machine
      • For OS X 10.4 In the Finder, select the virtual machine and select  Get Info. Then change "Ownership & Permissions > Others" to "Read  & Write". (I'm not sure if you need to do this for Group Access  also). You also need to do this to the contents of the VM - remember the  bit earlier about how to get inside a bundle? Do that and repeat the  Get Info correction on everything in the bundle.
      • For OS X 10.5 In the Finder, select the virtual machine and select  Get Info.  Click the disclosure triangle beside "Sharing &  Permissions".  Then click on the lock on the bottom right and  authenticate with your password.  Click the + sign on the left side of  the window, click on the user you want to access the virtual machine and  click "select".  Once the user is added give that user Read & Write  permissions.  The changes are usually applied to the items in the  virtual machine package but you should Ctrl+Click the virtual machine  and show package contents then verify the files have the same change  applied.


    Fusion doesn't scan your hard drive for virtual machines, it just  remembers ones it's seen before. So in order for the shared VM to appear  in another user's Virtual Machine Library, you need to either open the  shared VM in Fusion as that user or drag-and-drop it to that user's  Library.

    Remember that if you've moved the virtual machine from it's original  location then you'll need to re-add it to your own Virtual Machine  Library so that the new location is taken into account.

    Sharing Virtual Machines Between Platforms

    Fusion uses the same virtual machine format as Workstation 6 and Player  2. Generally speaking, you should be able to move a virtual machine  between these programs.

    The fine print is that there's the usual cross-platform caveats (i.e. OS  X uses "/Users/yourusername/", Windows uses "C:\Documents and  Settings\yourusername\My Documents\", Linux might use  "/home/yourusername/"), so absolute paths in the .vmx need to be  corrected. Not all features are in all products (e.g. Fusion lacks  Record/Replay, Workstation lacks Unity, etc.), and hardware may be a  problem too (e.g. Macs don't have a parallel port).

    Older virtual machines, such as those created in Workstation 5, should  also work in Fusion (and the other current versions), they'll just be  missing newer features such as USB 2. You can upgrade older VMs by  choosing Virtual Machine > Upgrade Virtual Machine. If you need to  use a Fusion-created VM with an older VMware product such as Workstation  5 or Server 1, you need to downgrade the VM. Fusion doesn't have this  capability, but Workstation 6 does.

    Fusion doesn't scan your hard drive for virtual machines, it just  remembers those that it has seen before. If you have an existing VM  you'd like to use, you need to open it in Fusion or drag-and-drop it to  the Virtual Machine Library window before it will show up there.

    Working With Multiple Displays


    Fusion supports spanning the full screen view over multiple displays in  guest OSes with a compatible display model.  Guests OSes known to work  include Windows XP and Vista, Ubuntu 8.04 and above (and presumably any  Linux distribution using an Xorg version supporting the same display  model).  Windows 2000 is known not to work.

    Multiple display support is not a VM hardware setting.  It is enabled at  run-time via the View / Use All Displays in Full Screen menu option.

    Further Reading

    There is a lot more useful information in various resources. Here's an incomplete list:

    Official Documentation

     

    Unofficial Documentation