Switching from Windows to Linux using VMware Player

If you didn't just recently start using a computer, chances are your first time using Linux comes after switching from Windows. For most people this involves two key challenges: getting used to a different windowing interface; and learning to use new applications. These days the first challenge is getting ever easier with the KDE and Gnome desktops continuing to improve and distros adding better hardware configuration tools. It's the second challenge, however, that still continues to confound many of us.

Years of training in Photoshop is hard to replace overnight, and even though programs like the GIMP are feature equivalent in the areas that most users will ever need, there might be that one feature that you can't live without.

Features don't make up the entire story though. Sometimes converting data from one program to another is difficult and you can't throw away all of the work that has already been done. Quicken users often point to this issue. Historical data can be a chore to replicate and makes it hard to start anew.

The other problem I have run into is based more on aesthetics. In addition to being functional, many programs appeal to us based on their looks, and their interface contributes greatly to how easy it is use. Home theater programs fall into this category for me. I know that programs like Freevo and MythTV are available, but getting over the hump of setting them up when my previous system works well is difficult. Not to mention the fact that my family would need to agree to a switch.

New Linux users aren't the only ones facing these challenges. I'm always amazed to hear when people are still using Windows 98, ME, or 2000, even though XP has been out for five years. For some it's not wanting to spend the money for an upgrade, but many are also held back by applications that won't run under the newer version.

Other Strategies

Using applications like the Firefox web browser and the OpenOffice.org office suite is one of the easiest ways to begin a transition to Linux. By switching to programs that can be used in either environment you can ease into the change.

But every application type doesn't have both Windows and Linux versions, so other methods are needed. Wine is a free way to run Windows apps directly in Windows. I won't go into a lot of detail about it here, but they key to remember is that not all programs will work. A quick search of the application database on the Wine website can tell you how others have faired with your app and version.

Like Wine, Crossover Office and Cedega do not require a copy of Windows to run. Both use Wine as a base, but add value by making it easier to use. Cedega's focus is exclusively on games, and is the best way to go if your favorite game does not have a native Linux version.

Benefits of Virtualization

Wine and Crossover Office are great efforts, but neither works on every program. Sometimes it is just easier to dual boot Windows, but the reboot part can be a pain. The solution is using a virtualization program like VMware Player. VMware Player is a free program that allows you to run Windows from within Linux, or Linux from within Windows.

Virtualization is great because it allows you to isolate your Windows and Linux environments so you can get the most from both. Making a backup of your virtual environment is as easy as copying a single file. If your Windows install gets compromised by a virus or spyware, just delete it and copy over your previous disk image.

If you are interested in Linux, but want to take it for a test drive first, then a virtual machine is just the thing you've been looking for. A LiveCD is another good tool, but it doesn't allow you to customize and install new software. A good first step can be creating a Linux virtual machine on your Windows system. This is also a good way to run Linux on your desktop or laptop at work. Running Linux this way doesn't bring the full benefits, but it does allow you to easily learn the available applications and familiarize yourself with the desktop environment.

Running Linux in a virtual machine is fine, but running Windows that way is much better. Chances are those one or two apps that you just can't live without will work to perfection, and accessing your virtual machine only requires selecting a different window instead of rebooting.

The main weaknesses of this approach are drivers and performance. Overhead from the virtualization process can result in lower performance, but for most day-to-day programs the difference is not noticible. The exceptions have to do with too little memory or 3D graphics. Each instance of Windows running in a virtual machine requires memory to run, which means that you may need up to 512MB of your memory allocated to it. Less will still work, but it can cause excessive hard drives accesses which can really slow overall system performance. Because of this I recommend at least 1GB of RAM installed in your computer before doing this kind of work.

The second item I mentioned was 3D graphics. Because VMware's graphics driver is used instead of one from Nvidia or ATI, 3D performance will suffer. For a home user this typically means games. If a graphically intensive game is your reason for still running Windows then I suggest maintaining a dual boot or trying the aforementioned Cedega. Hopefully this will not be required in the future, but for now it is a necessity.

Create a VMware Appliance

Now that you've decided to run Windows on Linux, the first order of business is creating a .vmx file. This is a simple text file that is called by VMware Player to start the virtual machine and contains all of the configuration information for your new "computer". You can directly cut and paste the lines below into a blank .vmx file using Notepad in Windows or any basic text editor in Linux.

config.version = "7"
virtualHW.version = "3"
memsize = "384"
ide1:0.present = "TRUE"
ide1:0.fileName = "auto-detect"
ide1:0.deviceType = "cdrom-raw"
floppy0.fileName = "A:"
Ethernet0.present = "TRUE"
sound.present = "TRUE"
sound.fileName = "-1"
displayName = "Linux"
guestOS = "otherlinux"
priority.grabbed = "normal"
priority.ungrabbed = "normal"
powerType.powerOff = "default"
powerType.powerOn = "default"
powerType.suspend = "default"
powerType.reset = "default"

floppy0.present = "FALSE"
sound.virtualDev = "es1371"

ide0:0.present = "TRUE"
ide0:0.fileName = "disk.vmdk"

The file above will auto detect the presence of a CD-ROM. If you want to use an iso image then add the following two lines. image.iso should be replaced by the path and name of your image file.

ide1:1.fileName = "image.iso"
ide1:1.deviceType = "cdrom-image"

The next job is to create the virtual disk. If you have QEMU installed you can create a disk image using the following command. The x should be replaced with the size of the disk in gigabytes. Initially the actual size of the file will be very small, but it will expand as needed when used.

qemu-img create -f vmdk disk.vmdk xG

If you don't have access to QEMU then you can try going to the VM Builder website and create one there.

Software Installation

Installing Windows or Linux in a virtual machine is no more difficult than installing it directly on a system, and can even be easier. Partitioning hard drives can often be a stresser for users trying to configure Windows and Linux on the same drive, but with a virtual disk there is nothing to mess up since the OS is free to take up the entire drive. To get things started the first step is to insert your Windows CD into your drive. Next, you can double-click the .vmx file you created to load VMware Player. Follow the prompts as usual until installation is complete.

After completing the OS install it's time to load your key apps. Just like the previous step, these can be installed direct from a CD or downloaded and run from within the Windows virtual machine. Now that those are installed you are done and ready to go.


If gaming isn't what is holding you back, a VMware virtual appliance will allow you run your critical Windows apps without needing to dual boot your system. This makes it easier to switch between them and maintain productivity. It also affords an easy way to keep the old program handy until you discover suitable Linux replacements for all of your programs.