There is no dearth of software that can help you run that indispensable Windows app over Linux. Win4Lin has managed to survive through the years as an inexpensive tool for people who like to pay for support. The recently released Win4Lin 5, available for $30 a pop, has shrugged off the shortcomings of its predecessor and delivers on its "near native-performance" promise.
When I reviewed Win4Lin 4 last year, the software wasn't easy to work with, thanks to its half-baked graphical user interface and over-reliance on the command line. It was on the edge of usability, with poor hardware support. Win4Lin 5 promises improvements on all these fronts, along with special pricing for desktop users, especially those running Ubuntu.
I tested W4L on two dual-core machines, a 2.0GHz E4400 with 1GB RAM and a 1.8GHz E6300 with 2GB RAM. Both machines were running Mandriva Spring 2008.1 and Ubuntu 7.10 as the host OS, and I couldn't see any performance difference between the two distros.
Like previous versions, W4L 5 is based on the open source QEMU processor emulator and its KQEMU performance accelerator component. You can install W4L from both RPM and .deb precompiled binaries, which are available for both 32-bit and 64-bit architectures. Installation is well documented for popular distros like Fedora, openSUSE, Debian, CentOS, Ubuntu, and Mandriva, and involves fetching the GCC compiler and kernel sources from a distro's online repository and installing the binaries with either the rpm or dpkg command. W4L is designed to run only Windows as a guest operating system. You can install several Windows guests, but can run only two simultaneously.
W4L 5 features a simple, well-laid-out, and easy-to-navigate GUI that lets you specify global settings that apply to all guest instances under W4L, install Windows guests, and tweak various guest settings.
When installing a Windows guest, you can use sliders to alter the RAM assigned to the guest and set the maximum size of the virtual drive. In addition to installing Windows from the CD/DVD drive, you can also install from an image. The users guide suggests users make an ISO image of their Windows optical media and use that instead of the disc to cut down on install time. You can also install Windows from a Windows Upgrade CD, but in this case you'll have to point the W4L installer to the location of the original Windows for verification purposes. W4L also allows you to run an unattended Windows installation by asking you to enter the product key in the guest installation interface before it installs the software.
W4L runs Windows inside of a window on the desktop, which when resized automatically adjusts the Windows resolution to fit the screen. This worked perfectly on my 17- and 19-inch widescreen monitors, and when running in full screen mode, Windows automatically resized to occupy the whole screen. W4L also automatically configures sound playback and recording, but you can alter the guest settings to force it to use ALSA, OSS, or EsounD sound servers.
In addition to the sound servers, there are lots of settings you can tweak to customize your Windows guest session. You can change the amount of RAM assigned to the guest as well as the keyboard locale for multilingual inputs, enable devices like virtual diskette drives, and add functions like the "print to PDF" option. In addition to using physical optical drive devices, W4L also allows you to use ISO and UDF images and make them look like physical CD/DVD media to Windows. You can do this from the W4L GUI as well as from inside a running Windows guest by pressing the Shift-F12 key combination. That lets you specify images for the CD/DVD drive, run the guest in full-screen mode, and send the Ctrl-Alt-Del key combination to the Windows guest. I was having trouble using ISO images on Windows XP. Leonardo E. Reiter, CTO of Virtual Bridges, the developers of W4L, says this was because of a bug in XP that doesn't properly detect the CD changing. I was able to use the ISO images after following the workaround documented in the users guide.
W4L also sports an interesting option to run the guests in "snapshot" mode. According to the documentation, in this mode, changes to the guest are lost when the session ends, which helps "prevent normal Windows degradation that happens over time, such as registry corruption and general performance loss." But changes made to user settings and documents are saved irrespective of whether the guest is running in snapshot mode or not. You can also back up and restore guest sessions from the W4L interface with the click of a button.
By default all W4L guests can copy and paste text to and from Linux hosts. If you want to copy and paste files, you'll have to do this via the shared folders feature, which displays host folders inside the Windows guest.
Good hardware support
W4L 5 has much improved hardware support compared to its previous version, which wouldn't even install on my dual-core machines. Basic devices like onboard sound cards, wired and wireless Ethernet cards, and USB and PS/2 keyboard and mouse all work. To increase volume in the Windows guest you have to increase it on the host, because W4L doesn't talk directly with hardware, and instead relies on the Linux host to patch hardware calls through.
This is also why the previous W4L release could work only with printers that worked on Linux. But with W4L 5 you can also use printers that don't work on Linux. However, I couldn't get my non-Linux-compatible printer to work by following the instructions in the manual. After installing the Windows drivers in the guest, every time I tried printing a test page, the operation failed, saying it was "unable to create a print job."
With this version, Windows guests can now read and write to removable USB devices such as pen drives, cameras, and music players. But due to W4L's indirect-access-to-hardware approach, you have to access these devices through folders mounted by the host. W4L creates shortcuts to several mount points, including /media, /mnt, and /home, under Start -> Programs -> My Host Computer, to allow access to files on these devices.
I installed several Windows apps on top of the W4L guest, including Microsoft Office, Adobe Reader, VLC media player, and trial versions of Visual Studio and Quicken. I found no noticeable delay in launch times when these apps were launched from within the virtualized guest environment as compared to their native launch performance. All apps also performed equally well with hardly any lag or performance bottlenecks.
But the best advantage of W4L is that it allows you to run Windows apps without running a full-blown Windows session. You can create a launcher for a Windows application installed in a Windows guest on the Linux desktop. Then all you need to do is edit the Windows guest properties and enable Remote Desktop Protocol connectivity. This will run the Windows guest in the background, awaiting RDP calls. When you run the Windows app from its icon on the Linux desktop, it connects with the Windows guest via RDP and runs the application. In Win4Lin parlance this is known as a floating Windows application.
When you first run a floating Windows app it takes several seconds (depending on the resources of your physical and virtual machine) to load the necessary files. On both my dual-core machines, it took 10 to 15 seconds to launch Microsoft Word initially. Once the Windows OS bits were running in the background, subsequent launches of all apps were almost instantaneous. The app opens in a window like any other native Linux application and behaves like one too, respecting desktop borders and not overlapping the taskbar when resized.
In this release, W4L offers more positives than shortcomings. Performance-wise, this release surpasses any previous Win4Lin release. Despite relying on Linux for access to hardware, Win4Lin 5 now also supports USB devices and, purportedly, Linux-incompatible printers, although I couldn't get it to power my sole non-Linux printer. Users who need Windows to run an application or two will enjoy the floating apps feature.
With Win4Lin 5, Virtual Bridges has almost bridged the gap to expensive virtualization solutions, and now has a great platform to build on. In addition to the non-Linux printers, it could improve the software by adding better support for Linux-incompatible hardware like gaming devices, wireless cards, and Linux-compatible 3-D hardware.
If you need to keep Windows around to run one critical application and like to have the ability to pay for support, Win4Lin 5 should be on your list of virtualization choices.