Jan 12, 2009

Fire Up VMWare

A Slashdot story pointed out the Windows 7 Beta release was made public, so I downloaded the DVD image, made up a quick VMWare image, and installed the new Windows for play.

Sometimes I’d have a spare PC laying around that I’d use as a lab to install from the ground-up, but lately I’ve been using VMWare virtual machines instead. Doing this gave me the idea that others might be interested in doing the same, but be hesitant due to FUD regarding using a virtual machine.

For the purposes of this discussion, and largely in any conversational context, a virtual machine is a bit of software that runs on your computer that allows “running another computer” at the same time. This is not dual-booting, but putting another OS “in a window.”

I use this in a variety of ways. It provides an excellent way to test a clean system, or to create a test server that goes with a development environment. It gives a safe sandbox for testing software on its intended target. Or, as today, it allows opportunity to play with a new OS without otherwise affecting a machine. It impacts only time and hard drive space in a very recoverable way; when done testing, delete the folder in which it was running, and it’s as if it was never there.

There are a number of virtual machine solutions out there. Microsoft offers a free product. Xen is an open source effort. Sun offers a free product called xVM. And there’s the leader of the pack, VMWare.


I’m sure there are other virtual machines with which this will work, but I prefer VMWare’s free player. It has been the only virtual machine with which I have had consistent success on all of the host systems I’ve used and with all of my attempted guest systems. Once built, the virtual machines are rather portable, and their files allow creating snapshots making it easy to return to a milestone.

Getting started with VMWare is pretty easy. In addition to the free VMWare Player, they offer VMWare Server for free. One can also download a trial version of the VMWare Workstation. All of these are available from the vmware.com website for the price of an e-mail address and the answers to a couple of simple questions. The three products have their benefits, and their penalties.

VMWare Server offers a constantly running foundation for keeping guest systems running. The intent is to offer a vessel to host many systems on the same hardware. It works OK for a development guest system as well, as there’s no requirement that the guest be any kind of server. There’s a console through which one can interact with the guest as if desired. The penalty for running VMWare Server is that it is always running. This can strain the host OS if it is also intending to do some heavy lifting.

VMWare Workstation is the lighter-weight counterpart to VMWare Server. Its primary role is to allow firing up another OS “in a window.” On the whole, it’s a great foundation, and if one is inclined, this is a fine system to purchase. Its downside is that until purchased, the license received will expire after just thirty days.

VMWare Player is just about as good as the other two. It can play virtual machines constructed by either VMWare Workstation or VMWare Server, but it cannot create its own.

When looking at the virtual machines created by the VMWare software, they’re actually quite simple. There’s a couple of files representing hard disks, possibly CD or DVD images, the memory snapshot (if suspended or while running), and the key text file that defines the virtual machine and the interactions of the other files.

If desired, one could research and learn the details of the text file (VMX, if you want to search on the Internet). One can use VMWare Workstation or VMWare Server to create the VMX and other files, or use the services at easyvmx.com to create the files for you.

The combination of EasyVMX and VMWare Player make for a good compromise making a good place for throwing together test systems.


There are a couple of pretty simple options at EasyVMX. The defaults can generally be used, but a couple of the options aren’t really obvious until after running VMWare software for a little bit of time. Here’s a quick run through of some things to pay attention to in the beginning.

The RAM of the virtual machine is really RAM. It is able to be put into the host OSs virtual memory, but that will dramatically negatively impact both OSs. It is recommended to choose an amount of RAM sufficient to run the guest, but also to allow room for the host. The amount of room remaining for the host needs to leave room for the host to run as well as to run the VMWare software itself. A good test is to start the player, without opening a guest, and peek to see what the OS is using. Double that and use that number for the upper limit of the guest. So on my 4GB laptop, Windows sits idle at 400MB used with VMWare waiting for me to pick a guest to open; this leaves about 3.5GB to allocate to a virtual machine, so I usually choose about 1-1.5GB. On my other machine, which has only 2GB, but on which LINUX sits idle at 200MB, I can still comfortably get away with 1-1.5GB.

The hard drive created by the software (especially by EasyVMX) is an expandable image. That is, you choose an upper limit for the drive (say 10GB), and the guest will see that as the actual size for the drive as it sees it. This is nice, especially when downloading the virtual machine image from EasyVMX. An option when creating a new virtual machine with the VMWare software is to immediately allocate the HDD, but this will result in a large mostly empty image.

The network “card” presented to the guest OS is important as the guest OS needs to have a driver. There is a VMWare proprietary card that works well with most LINUX installations, or when the VMWare Tools can be installed. There’s also an Intel-like driver that more OSs can install, especially important is its compatibility with Windows.

The other networking thing, which can be changed after starting the guest, is whether to bridge, use NAT, or run host-only, or, of course, no networking. No networking is easy; the virtual machine is an island and no network traffic can get to or from it. A host-only configuration allows the guest and host to network together through a private network that looks to both sides as regular TCP/IP. Similar is the NAT option, but this will allow the guest to connect to whatever network the host has access; this is useful for environments where it may be difficult to have DHCP or static IPs assigned to the guest, and is a good second choice to the bridged option. Bridging exposes the guest to the network on which the host is participating; this allows other participants in the network to have access, and also gives the guest the closest network experience to the host.

Other devices are available, such as serial and parallel ports, how to interface with USB, and even a sound card. These can generally be safely turned off during the creation of the virtual machine, or even later during the use of the machine.

Once the VMWare software is installed, a virtual machine image is created, and a DVD or CD image is available, the host is ready to fire up and install a guest. Any kind of install or live disk image can be used.

Regarding the CD or DVD image, there’s a little bit of chicken and egg, or cart and horse if you prefer. There are two ways to resolve the “which ISO” issue when creating the VMX image. For either, I put a faux name in for the ISO when in the web site form. The first solution is to edit the VMX file provided and change the fake name to the real name before starting the machine. The second is to start the machine with the fake name, which doesn’t cause a failure, and then by using the Devices menu of the VMWare Player select the correct ISO. I choose to edit the file before starting to be sure that the ISO is mounted before the VM “boots” allowing the disk to be recognized without any trouble. It can always be added by the menu (or button on status bar) after in case of error or for other reasons.

Windows 7 Beta

Getting the beta was pretty straight forward. Visiting Microsoft’s website, finding the Windows 7 page, and even the “download beta” link was easy enough. A quick log-in (or sign-up) in the Microsoft Live suite is required, and then it uses a third-party download manager (with no obvious option), but such is their way. The download took almost an hour, which was disappointing even though it’s a DVD image; I suspect there was throttling on the far side, either due to their bandwidth in general, or because of the volume of testers downloading.

Once the DVD image was downloaded, I copied the file into the directory where I extracted my EasyVMX files, edited the VMX file, and fired up VMWare Player. It correctly noticed there was no OS and fired right up from the mounted DVD, starting the Windows install.

The Windows 7 Beta install was very much like other Windows installs. Hit the Next button a bunch of times. The only questions it asked were about my desired language, timezone and time, how to do updates, what kind of network, and to create an initial user and password. The install took about 20 minutes, which was about half as long as downloading the DVD image.

The Intel network adapter and fake VGA adapter were found right away by the Windows installer, and it even used the sound card without prompting.

First Actions

After coping all of the files and initially rebooting, Windows 7 Beta showed a simple desktop with a fish on the background. The desktop has a recycle bin and a “send feedback” shortcut. The taskbar as a familiar Windows logo start button, and a couple of other program icons like a quick-launch area. One seems to be for the Internet Explorer, one for Windows Explorer, and a last for Windows Media Player. Largely the interface looks like other versions of Windows.

Clicking on the start menu button brings up a Vista-like menu showing a few of the hotter programs, and the standard quick-links and All Programs menu.

Clicking on the Internet Explorer brings up Internet Explorer version 8 (Beta 2, it looks like). Even inside the VM it opens pretty quickly and loads pages at the speed I’d expect from the host. I throw a quick random test at it and post that I’m running Windows 7 Beta on a quick twitter.com note.

Occasionally a warning flag pops up warning that no anti-virus software has been installed. Nice of them to consider that it needs to be done right away, but sad that it needs to be done right away. I figure this is a good place to start, so I hit free.avg.com and get the latest AVG. It downloads quickly and installs without a hitch. It even quickly grabs its updates, and sends the warning flag away. No special Windows 7 version, just the regular 32-bit Windows version.

First Impressions

After the first ten minutes or so, it seems that Windows 7 Beta is a next-step from Vista, but nothing visually groundbreaking. There seems to be little in the way of device management, default installed software, or even the interface that differs greatly. There are a few more games, and a couple of extra tools, but nothing outstanding, despite the beta representing a release of Windows 7 Ultimate.

It is true that running inside the VMWare Player reduces the apparent hardware, so the Aero interface (or its replacement) isn’t available. Looking at the device manager shows that the entire virtual machine has been recognized and nothing needs a special driver. Since I’m running in VMWare Player and not VMWare Workstation or VMWare Server, there’s no option to add VMWare Tools, which does include some special drivers.

There are a few different things in the Control Panel, but I’ve not as deeply investigated the Windows Vista Control Panel to be sure what’s really new here. It’s been a while since I’ve had to get up to my elbows in Windows, and I admit I’m a little rusty.

It’s fair to note that I’ve not been keeping up with the proposed changes in Windows software since the disappointing difference between the plan for Vista and its reality. This, however, isn’t meant to be a lesson in Windows 7, but an introduction to getting it running in a virtual machine.

About the Author

Object Partners profile.
Leave a Reply

Your email address will not be published.

Related Blog Posts
Natively Compiled Java on Google App Engine
Google App Engine is a platform-as-a-service product that is marketed as a way to get your applications into the cloud without necessarily knowing all of the infrastructure bits and pieces to do so. Google App […]
Building Better Data Visualization Experiences: Part 2 of 2
If you don't have a Ph.D. in data science, the raw data might be difficult to comprehend. This is where data visualization comes in.
Unleashing Feature Flags onto Kafka Consumers
Feature flags are a tool to strategically enable or disable functionality at runtime. They are often used to drive different user experiences but can also be useful in real-time data systems. In this post, we’ll […]
A security model for developers
Software security is more important than ever, but developing secure applications is more confusing than ever. TLS, mTLS, RBAC, SAML, OAUTH, OWASP, GDPR, SASL, RSA, JWT, cookie, attack vector, DDoS, firewall, VPN, security groups, exploit, […]