Some days ago we hosted a head to head review of Bochs, VMWare Workstation and VirtualPC. I received a number of emails asking why I haven't included Netraverse's Win4Lin in the article. The main reason was because Win4Lin is not an emulator in the "traditional" sense of the word; neither it runs under Windows XP, where our previous test were conducted. In fact, Win4Lin can only run Dos and Win9x/ME, under Linux. We got hold of the brand new version of Win4Lin, version 4.0, and here is our review accompanied by some screenshots we grabbed for you.

Installation

The installation of the package can be done either by executing its binary on a Win4Lin CD-Rom, or by downloading it off the web, after purchasing or registering the product online. The install application is about 8 MB, and by being graphical, it is easy to either upgrade or make a first-time installation. The installer will require to install a new kernel on your system (do not worry though, your old kernel is also available via the LILO menu during booting) and after you reboot with your new kernel, you will find two new menu items under the KDE or Gnome menus. One is the application that loads Windows and the other one is the further installation and setup options. This second menu is what you will need to load. Shortly after, you will be asked to insert your Windows CD so the Windows installation will start. Win4Lin only supports Windows 95/98/98SE and Millennium. The installation of the Windows operating system will only take 15-20 minutes, because the installation .cab files will be copied to your hard disk and then launched locally. It is amazing to see Win4Lin installing Windows, much faster than a real Windows installation.

The only additional manual setup I had to do was to add support for "backing store" on my XF86Config-4 file by adding a single line of text, because otherwise the Windows window was not refreshing correctly.

Usage and Features

After everything is setup, you can launch your Windows either by double clicking the first mentioned menu item on your Win4Lin launch menu, or by opening a terminal and typing: 'win' or 'fwin'. The 'win' command will open a window on your current X11 session and load Windows in it, while 'fwin' will load a brand new X11 session with Windows loading in full screen mode.

And there you are, with Windows 9x under Linux. Of course, the question everyone is asking is how fast Win4Lin is. Well, the answer is that it is extremely fast! It is almost as fast as running it without the Linux layer underneath. I was indeed caught in a surprise seeing Windows 98SE "flying" by running almost in a native speed either under an X11 window or on full screen. In fact, I had never seen before Windows98 SE loading in 4 seconds and shutting down in 3 (Win4Lin does not load drivers and other dlls that are not needed under the already functional Linux environment, so that helps overall).

It is truly bliss to be able to run QuickTime under Linux, having Internet Explorer, Ms Office, PaintShopPro, even AOL, and at the same time being as fast, in contrast to slower VMWare (which is the fastest compared to VPC and Bochs). Also, through Win4Lin's option application you can do many more things, like assigning COM ports, changing the way Windows should behave under X11, allocate more RAM for your Windows (up to 128 MB, default was 24 MB - I recommend at least 64 MB), changing the Autoexec.bat and config.sys and much more. One of the great features (and also a dangerous one) is that you can assign Linux directories as drive letters under Windows. For example, you can assign your /home/YourUserName/music/mp3s/ directory as drive letter D:\ under Windows. However, if you manage to get a destructive Windows virus, which deletes files on your hard drives, there won't be nothing preventing you from losing data, so be careful which directories you assign as shared. Another nice feature is the fact that all the Windows files (c:\Windows\system\, etc.) are accessible under your Linux filesystem as well, stored by default on /home/YourUserName/win/. Your virtual Windows is using the underlying Linux filesystem to store its files, in contrast with the other emulators who create a huge bootable image file for their virtual machines.

Deep Down Under

The technique the Netraverse folks are using is a rather impressive one, and also different than what VMWare or Virtual PC does. So, what they do really, is changing some system calls in the kernel (hence the need for a custom Win4Lin kernel) and then they are loading a DOS-alike environment in the form of a "server". When you load Windows9x, Windows thinks that it runs on top of DOS and not on top of Linux! Some specific drivers and services, like the NIC driver, the graphics card driver, keyboard and mouse, I/O operations etc, are not exactly emulated as VMware or VirtualPC do, but instead they "pass through" all of their requests to the underlying server. Then, the server is making sure that these calls/requests are executed by the real Linux hardware and drivers.

It would be sufficient to say that Win4Lin is something between WINE and VMWare. It loads a whole copy of Windows in a virtual machine (like VMWare does), but it is utilizing its extended Linux integration techniques to run, like WINE does. Someone would say that Win4Lin is the best of both worlds and techniques.

The way Win4Lin works, has its ups and downs. The good part is that Windows is almost as fast as in a real installation, leaving any other virtual machines or even WINE itself, in the dust. The down part is that this technique can only load Windows operating systems that are mostly relying on DOS. Having support for WindowsNT/2000 and XP is a completely different kettle of fish. And of course, it can't run any other alternative operating system other than specific versions of Windows.

Drawbacks

As with every product, there are always some rough edges. For Win4Lin, these rough edges would possibly be its inability to run applications, video or games that require direct access to the graphics hardware, through DirectX and DirectDraw. I was unable to run any 2D DirectDraw game, DivX that required overlay, while QuickTime had fall back to the "failsafe" (and slower) GDI for rendering.

I have also experienced some crashes, mostly at the end of installing applications, like Microsoft Works, while I had some graphics glitches that went away after enabling the "backing store" feature on XFree. The other (mostly annoying) problem is that because Win4Lin provides the font rendering, instead of the native Windows font rendering engine, it gets some fonts wrong. For example, when viewing www.OSNews.com with IE, the fonts are huge! I had to fallback to 'Text Size->Smallest' from its View menu in order to make IE behave font-wise as it normally does under a "native" Windows installation. Another improvement I would like to see is the Win4Lin installation part: after you have successfully loaded the new Win4Lin kernel and rebooted, it is not clear how a user can proceed with the Windows installation.

Netraverse are hard at work providing patches for most Linux distributions and their kernels, but not all Linux distros are supported. For example, they are still working on Red Hat 7.3 support, while there is no patch for Gentoo Linux.

Conclusion

All in all, I am very impressed with Win4Lin. In fact, this application is among the very few which got me extremely impressed the last few months. It is so cool seeing Windows running under Linux in almost native speed, and it is also cool when resizing the Windows window under X11, to have the Windows resolution change on the fly and get accommodated in the new window sizes (the special Netraverse graphics driver supports many non-VESA resolutions to please every window size)!

There are many ways to run Office under Linux: WINE, VMWare, CrossOver Office Plugin. However, none comes close to running Office as natural or as fast as with Win4Lin. More over, you are able to run many other applications, from IE to Paint Shop Pro, Photoshop or your accounting software.

If you are a developer who is looking into developing operating systems or testing software among a large number of different OSes, get VMWare. If you are a user or a developer who wants to run or develop Windows applications under Linux with few or no headaches and speed loss, go ahead with Win4Lin. You won't regret it!

Win4Lin requires the ownership of a valid Windows 9x/Me CD. You can buy a boxed or a web version of Win4Lin for $90, however, I would personally welcome a lower price for the web version.