nutsandbolts

VMware Fusion 101: Introduction to Tools

I've previously alluded to how difficult it is to figure out what's going on in the guest by examining the instruction stream. Yet Fusion can do all sorts of nifty things such as drag-and-drop, Unity, HGFS shared folders, and so on – there's no way Fusion can do all that on its own. So how do we do it?

Enter VMware Tools. Tools is code that lives in the guest and allows us to peek inside. Instead of Fusion staring at a stream of reads and writes and adds and so on to try to figure out what's going on, Tools can just ask the guest OS. Doing things at the right layer makes things so much simpler!

Tools it a bit more than that, though. One of the benefits of virtualization is portability – you can move a virtual machine between computers (in some cases, even as the virtual machine is still running). But what if the first and second computers have different hardware – how can the virtual machine possibly cope if it starts off on a Mac mini, gets suspended, and resumes on a Mac Pro (or maybe even a computer running Windows or Linux and using VMware Workstation, VMware Player, VMware Server, or so on).

Virtual machines don't see the physical hardware directly (which would cause portability problems). More importantly, nearly all hardware expects to be controlled by exactly one OS – even if the guest could see the physical hardware, it would cause lots of problems. Instead, the guest sees a set of emulated hardware that doesn't depend on the actual hardware; Fusion takes care of translating appropriately.

All hardware, even virtual hardware that doesn't really exist, needs drivers for OSes to know how to talk to them. For some of the virtual hardware (for example sound) we emulate existing physical devices, the guest can use standard drivers provided by the OS or third parties. For other virtual hardware (for example video) we use our own "hardware" that doesn't exist in the physical world. While it obeys a basic set of commands, it needs drivers to get all the features (such as 3D acceleration). These drivers are a part of Tools.

Generally speaking, you want to install Tools in the guest, instructions can be found in Fusion's Help. We have Tools for a wide variety of guest OSes – Windows of course, and Linux, and OS X, and Solaris, and FreeBSD, and even Novell Netware. Not all versions of Tools have the same capabilities (we obviously give priority to more commonly used guests), but all are useful.