Virtual Choices on the Mac
Volume Number: 23 (2007)
Issue Number: 02
Column Tag: Virtualization
Virtual Choices on the Mac
VMWare brings their wares to Intel Macs
By Ben Greisler
In the November 2006 edition of MacTech, Mary Norbury introduced us to the Macintosh virtualization product Parallels. For many Mac users this was their first exposure to virtualization. Virtualization shouldn't be confused with emulation, which is the complete interpretation of an environment including the processor. An example of this is VirtualPC running on PowerPC (never mind the name; VPC for PPC is an emulator, not a virtualizer).
Virtualization doesn't emulate a processor, but allows multiple instances of an OS, or multiple OSes, to have access to the same processor or pool of processors while isolating the environments that the OSes are running in. This is a very simplified view of what virtualization and emulation do, and most products do some amount of both. The discussion of emulation versus virtualization could fill this magazine and then some, so we are going to concentrate on the latest virtualization product to hit the Macintosh world, VMware's Fusion.
While Parallels is an impressive product coming from an impressive group of developers, Fusion is what will grab the attention of enterprise and large education organizations, as they are probably already familiar with the VMware product range. VMware's ESX Server, Workstation and Player already have mindshare in groups using virtualization. While Fusion is still in beta, and we will have to wait to see what VMware decides to do with the product, it is still interesting to put it through its paces and see what we have.
The test machine is my often abused MacBook Pro 2.16 Core Duo with 2GB RAM and a 7200 RPM 100GB hard drive. I don't have a Core 2 processor available to me, so 64 bit testing was not possible. As testing started about 24 hours after the beta was released to the public, changes and updates will probably come quickly. The following information is based on Fusion build 36932.
The Fusion beta is available at http://www.vmware.com/products/beta/fusion/, and after filling in a quick questionnaire you will be presented with the EULA. Once you agree, you will be brought to a page that has the serial number for the beta software and a link to the actual download (an 111 MB .dmg).
Installation is a straightforward .pkg file. Double click and follow all of the normal software installation steps. Note that in the mounted .dmg, you will find a readme, license information and an uninstaller script. You may want to copy the script over to a safe place in case you ever need it. I did it as I have a habit of throwing away the installer packages to save space on my hard drive and trust me, once you start downloading all the pre-made VM appliances available out there, you will need the space.
Pre-made Virtual Appliances
One of the big attractions to VMware is the existence of their Virtual Appliance Marketplace http://www.vmware.com/vmtn/appliances/. You can get to the website via the above URL, the VMTN button on the Welcome Screen or "Download Virtual Appliances" under the File menu. This website is a collection of free and for fee pre-built, pre-configured virtual machines. Want to try out Smoothwall, but didn't have too much extra time to devote to the machine setup and installation of it? Just download the pre-built VM. How about wanting to compare Ubuntu to Red Hat? Download the VM's for each, fire them up and compare away. It is very convenient and quick.
The website is indexed and searchable. I suggest just skimming through the entire list to get an idea of what is out there. Some VMs have been certified by VMware using a standardized criteria set. Their goal is to allow developers to submit their VMs for certification so users will have confidence in the VMs and have support available to them. There is also a rating system with a one to five star choice. To read comments about the VM, click on the "Comment on this Appliance" link on the right side of the page under the star rating.
Once you pick a VM, download it in the manner provided. This could be http or BitTorrent. Other download methods may be available, but everything I saw was one of those two. I did find that the Torrent methods weren't quite as quick as I would have expected, but there are probably very few people sharing out the files. In fact one VM I downloaded came from only two partners.
It pays to read the notes provided on the information page, the comments and the readme files. Because this is a community effort for most of the appliances, there isn't as much standardization as there could be for the location of import information such as the login usernames and passwords.
Most of the VMs come compressed as a zip. Expand the file and place it into the "vmware folder". The location of the folder can be defined during installation of the app, but will default to the users home directory. Once the VM resides in the "vmware" folder, you can open the VM using the Open button in the Welcome Screen, or under the File menu. Easy as that.
Figure 1: Opening a pre-built VMWare Image
Once a VM is running, you are presented with its window and a group of buttons across the top of it. Starting from the left side:
Figure 2: Control buttons on VM Toolbar
Power Off: This button provides an equivalent to the actual power button (OFF) of a physical machine. If you click it, it provides a dialog box confirming that you want to shut down the guest operating system.
Suspend: This allows you to close the VM while saving the state that it is in. This provides the ability to start a VM without having to go through the booting process of the VM leaving you right where you were. Once pushed it will show a progress bar for the duration of state saving and then eventually show a black screen. It is up to the user to close the window all together or push the Resume button to start the VM again.
Power On/Resume: This button provides the equivalent to an actual power button (ON) of a physical machine. It shows "Resume" when the VM is suspended.
Settings: Clicking this will allow you to change a number of system settings for the VM you have loaded. All of the settings give you the choice to "Connect this device" and "Connect automatically when powering on". Keep in mind that physical hardware can only be in use by one VM at a time, so for example, you won't be able to connect the optical drive to three VMs while they are all running.
Shared Folders (Figure 3): To add a shared folder you need to click on the "+" button at the bottom of the window and supply a name and path to the shared folder. This relies on VMware Tools being installed. Even at that, I had issues with getting shared folders working. I didn't beat it up too much as this is beta and I expect that things will get better.
Figure 3: Shared folder settings.
Removable Devices (Note: Some of these choices will not be available depending on the VM):
Ethernet (Figure 4): It is here that you can configure the VM to connect to the physical network or to share the host's connection via NAT. If you choose NAT, the VMware virtual DHCP server will provide the address. Pay attention to which choice you want as much as you would on a real, physical machine.
Figure 4: A virtual machine's Ethernet settings.
The following removable devices are supported, but have no configuration options besides on or off: sound adapter, CD-ROM, floppy drive, hard disk and USB controller.
System Hardware Memory: The assigned memory can be adjusted in this window. There will be a recommended value but you can increase this if you have the available RAM. You have to be very careful with this setting as you need to account for how many VMs you have running and how much RAM you assign as not to force your physical machine into swapping. This will drag the speed down for all applications and the host machine. You will want to visit your command line and look at the behavior of memory on your host machine. Using tools like Activity Monitor or top, make sure your pageouts aren't too high and adjust VM memory as needed.
Processors (Figure 5): You can assign one or two processors to the VM. This will be set when the VM is made. This is an advantage over Parallels, which can only use one processor, or a single core, at a time for a given VM.
Figure 5: SMP capabilities of a VM.
Full Screen: Clicking on this will toggle full screen mode. To get out of full screen mode, place your mouse at the top of the screen and the tool bar will come into view. Click on View and "Toggle Full Screen", or you can use the command-return key combination.
Notice that the CD-ROM, Floppy and Ethernet devices have green dot indicators when they are connected to the physical device or in the case of Floppy, the floppy image. This is handy when you have multiple VM's running and you need to access a physical device that is currently connected to another VM.
Building a new Virtual Machine
Unlike the free VMWare Player for Windows, Fusion allows you to create virtual machines. The process is fairly straightforward.
1. Using the New Virtual Machine Assistant (Figure 6), choose the operating system you will be using. Pick whether you have the installation on a physical CD or in an ISO. If you are using an ISO, provide the path to it.
Figure 6: Creating a VM
2. You will then be asked for a name for the VM and a location for it to reside. The default is in a folder named "vmware" in the root of the users home folder.
3. Under System Settings you will define the size of the virtual disk. A recommended default will be assigned, but you can change it to whatever you want. As of this version there is no easy way to expand an existing virtual disk so you will want to carefully consider the size you want. You will also set the memory allocation and number of processors -- the latter being an advanced option that currently doesn't exist in Parallels. It would be useful to restrict a VM to one processor if you plan on running multiple VMs simultaneously.
4. Once you have completed the previous steps, you will get to the point where you actually install the OS. You have configured the VM and you will have your choice of installing the OS immediately or wait until a later time.
5. At this point the VM will start and because the product is still beta, a warning will pop up explaining that debugging is running and may affect performance. You can permanently dismiss this warning if you wish. [Ed. Note: this is a little disappointing, even for a beta. Running debug code that affects performance should be optional.]
6. The VM will behave like a standard physical machine and installation will start (Picture 11)
7. Once installation is complete, you will have a working OS within the VM
Installing VMware Tools
The VMware Tools provide better graphics performance, drag and drop support, time sync between host and VM, automatic cursor control as it travels in and out of the VM, and a better behaved mouse in some OSes (within the VM). It is highly recommended that you install the VMware Tools package.
Installing the package in Windows Vista or XP is as easy as clicking on a menu item. Make sure the guest OS in running within the VM and pull down the Virtual Machine menu. Choose Install VMware Tools and a wait a moment while the tools package is mounted in the guest OS. A regular installation dialog will ensue with the caveat that, "The tool package isn't certified by Microsoft", forcing you to acknowledge a number of "Do you really want to do this?" type queries. Follow the directions and the process will complete.
In Linux or any of the xNIX'es, you follow the same general process, but when you click on the Install VMware Tools button, a virtual DVD-ROM is mounted in the guest OS. You will be presented with two packages, a tar and an rpm. In this case, I'm using Ubuntu Linux, and I expanded it out. I changed directory to the resulting folder and ran the installer: "sudo ./vmware-install.pl".
Using VMware Tools
To configure VMware Tools in Windows, there is an icon for VMware Tools in the taskbar. In a Unix variant, navigate to /usr/bin and run vmware-toolbox as root. In either case, a Properties box will pop up with a number of choice that may differ with the guest OS you are running. Note that the help buttons are enabled, but may include information for versions of VMware that is not correct for Fusion and at this time, we can't really say what will end up in the production version.
Options: (Figure 7) You can choose to keep the guest OS synced with the host OS, notify if an upgrade is available and or show the VMware Tools in the taskbar (Windows only Unix tools only allow for time sync).
Figure 7: Guest OS options with VMWare Tools installed.
Devices: This allows the user to connect or disconnect devices from the VM, just like the icon at the top of the VM window.
Scripts (Figure 8): At this point in time we probably shouldn't change the defaults here. While the help pages give us information about the scripts, they also warn that it will only work with certain versions of VMware. That said, this is beta software and none of the notes in the help pages make reference to the beta. We can't tell what will result if we make customized scripts. While I was tempted to start experimenting, we are too early in the beta cycle to know if it is worth the effort.
Figure 8: Preloaded and custom scripts for a given action
Shrink: This is where we can shrink partitions. Simply pick the partition you want to shrink and click Shrink. The partition will be prepared and when finished preparing it you can perform the shrink at that time or wait until later. I suggest reviewing the help pages for your specific installation for recommendations on this topic. This process will reduce the amount of space that the virtual disk takes up on the host machine. There are many notes about what can be shrunk and what can't be, but they also refer to versions of VMware that do not apply to the beta. For example they note that VMs with snapshots can't be shrunk. Also, the help notes state that the disks can be defragmented, but there are no tools for that in the current beta.
About: Information about VMware Tools and version number.
On the first run of a VM, you may get a warning box asking you what to do about the UUID because the location of the configuration file has changed. The directions are self-explanatory, but you won't go wrong by choosing "Create a new identifier". The UUID is comprised of a 128 bit integer based on the path to the VMs configuration file and the physical machines identifier. If you want to get into the details, you should keep the UUID if you moved the VM, but create a new one of you made a copy, and are still using the original VM. You can use Always Create if you are using one VM as a template and keep moving it to new locations. This will make a new UUID for each location. This is similar in concept to Always Keep but used if you want to keep the same UUID each time you move the VM.
When you start a VM when another VM is running, you will get a dialog box that lets you know that some devices on the host machine may not be available to the VM. You may need to toggle the buttons for the devices on or off as necessary to get the resource you need, like an optical drive. You may also get a warning that a certain device may not be available at all. This may be due to a pre-made VM that was build on a machine that had a certain device available, such as a floppy drive, and is now being run on a host machine that doesn't have that same device.
Keep in mind that this is the first public beta of Fusion. VMware has not said what their production plans are, or if we are looking at something representative of the final product. It is tempting to want to put this into production, but it is too early. I ran into one kernel panic when something went bonkers with my Vista install.
It is tempting to compare Fusion with Parallels. I think it would be a mistake at this point, not knowing what VMware has up their sleeve. I can say that right out of the box Fusion worked better than Parallels did at its first release, but there are also less choices and configurations to play with. Some things that I noticed is that Fusion seems to take less system resources than Parallels, but that could be just the way I have configured my virtual machines. Running Windows VM's on Parallels seem to really drag down the host system whereas Fusion doesn't impact the CPU as much.
VMware has the advantage of having a mature product to draw code from and experience making it work. They also have the advantage of an established base of expertise and the pre-made appliances. I am glad that VMware brought out Fusion but I hope they don't limit this to a lower level product. I would really like to see them produce something along the lines of ESX for the Apple platform. We also need to see if they are allowed to virtualize OS X itself, but that is a political issue that is yet to be resolved at the time of writing this article.
The end result is this: We now have two major choices for virtualization on the Mac platform. I don't include Qemu (qemu.org) as it is primarily an emulator, not virtualization. We are much further ahead than we were a year ago. This is all just great stuff for acceptance of the Mac platform in areas that that it hasn't been in before. Let the developers know what you think and what you want.
Ben has worked Apple based technology integration projects from Maine to Japan while learning all the way. When not collecting frequent flyer miles he spends his favorite time with his wife and 2.5 year old daughter at their home outside of Philadelphia. He can be reached at firstname.lastname@example.org