As a student I am quite often confronted with (closed-source) Windows programs. These days there are a few tools that can help running Windows applications on Linux. One of these tools is Win4Lin, Win4Lin allowsone to install Windows 95, 98 and ME under Linux. The Windows NT branch is not supported yet, because Win4Lin sets up a special DOS environmentin which Windows runs.
However, according to the Netraverse FAQ support for Windows versions other than Windows 95, 98 and ME is currently under development. This review summarizes my experiences with Win4Lin 5.1. I use Slackware Linux, so the overview of the installation is based on that.
Win4Lin emulates an environment that is comparable to a usual Windows environment. First of all, Win4Lin adds some hooks add various places
in the Linux kernel, like the scheduler. These hooks are utilized by the mki-adapter module, which provides an interface to the hardware for the
Win4Lin BIOS. The BIOS and the kernel interface provide everything DOS needs to run.
There are a few advantages and disadvantages to this approach. First of all, it some users might not like the fact that Win4Lin makes and
uses hooks in the kernel. Besides that, the user is dependent on Netraverse for kernel patches. Fortunately Netraverse provides new
patches quite quickly after each new kernel release. The big advantage of this approach is that it is much faster than a real virtual machine
(like Virtual PC), hardware access by Windows is just translated to normal conventions of accessing hardware under Linux.
In contrast with VMWare and Virtual PC, Win4Lin does not use a hard drive image. Windows filesystem operations are translated to
operations on the Linux filesystem. This means that Windows is installed on the Linux partition. This makes files from the Windows
installation easily accessible.
Win4Lin supports two types of networking: WinSock (1 and 2) and VNet. WinSock networking integrates with an existing Linux network interface.
This approach requires no configuration, and will suffice for most daily network uses (for instance, web browsing and fetching e-mail). VNet
is a more advanced, but requires a bit more configuration. With VNet a separate IP address is configured for the Windows session. VNet is
required to support file and printer sharing.
Slackware Linux is not supported by Win4Lin, but the installation procedure is relatively simple. First of all you have to compile
a kernel with Win4Lin support, because there are no pre-compiled Win4Lin kernels for Slackware. The Netraverse site has excellent instructions
for patching vanilla Linux sources: here
To install Win4Lin the RPM package manager from the “ap” disk set is required (though some people might prefer using rpm2tgz). Win4Lin can be
installed using one of the following two methods:
- Use the Win4Lin Installer. This method works perfectly, and uses a graphical tool to install and configure both Win4Lin and Windows.
- Download the full Win4Lin RPM with your Win4Lin account, and install it with rpm -i --nodeps package.rpm. The license code can
be entered by executing /opt/win4lin/bin/ask_license.sh afterwards. Finally, Windows can be installed by running the
The Windows installation consists of two steps. The first step is performed as root, and creates an installable Windows image on the
hard disk. The second step installs Windows, this step is done as a normal user.
The first thing that surprised my after launching Windows 98 under Linux was the amazingly short boot time. On my Athlon XP1800+ Windows 98 boots in about 5 seconds. It is worth noting that there are two ways to start Windows/Win4Lin. The “win” command launches Windows in a X window, the “fwin” command starts an X server and runs Windows full screen, which gives the illusion that you are really running plain Windows, with fast boot up times. The good performance is not limited to the boot sequence, applications launch very fast, most of them at comparable speeds as on native Windows.
The largest limitation of Win4Lin is the lack of DirectX support. Even old DirectDraw programs do not work very well. For example, I tried to run some old games like Civilization: Call to power, with no success.
A nice feature, which is hidden somewhere on the Netraverse site, is the Appwrapper program (this can be found under “Miscellaneous Files” in the
member account screen). By replacing the default “explorer.exe” with appwrapper in system.ini, with an application as a parameter the specified
application will run in a Window on the desktop, as if it were a stand-alone Linux application. This feature is particularly useful in environments where one Windows program is used.
Enough talk! Let’s look at some action ;). I cannot test every single program, so here are just two examples I use in my daily life. The first
program you will see in action is Tarski’s World. I am a philosophy student, and logics is an important philosophy subject. So, I need my logic programs. Tarski is a program which gives students an introduction to first-order logic by using visual representations. As you can see, it just works.
Another suite of applications I sometimes need is Microsoft Office. I try to do my work with LaTeX or TextMaker as much as I can, but some documents are just a pain to convert decently. And sometimes I am flooded with so much work that I don’t want to care about conversion, and checking that others can correctly read the file without disruptions, etc. I know I get flamed for this, but in a world where most people are using Microsoft Office and where the time pressure high it is often more pragmatic to use Microsoft Office to do the job quickly (price is not really an issue, because universities have large software contracts over here in the Netherlands, which allow students to use commercial software quite cheaply). So, here is Microsoft Office on Win4Lin.
Configuration and tuning
Win4Lin provides the “winsetup” tool, which can be used to tune some aspects of the Windows environment. For example, normally 20 MB RAM is
reserved for Windows, this can be raised if you run applications that are memory intensive (20 MB should be sufficient for day to day work).
Another interesting feature is the “Drives & Filesystem” configuration, this allow the user to configure arbitrary Windows drives, and map parts
of the Linux filesystem to the drive. For example, in the default configuration the “D:” drive is mapped to $HOME/mydata/. Unlike VMWare Win4Lin does not need Samba to make the local filesystem accessible from Windows.
Netraverse provides an extensive guide with a detailed explanation ofconfiguration options: here
The most recent versions of Win4Lin install a default printer named “Default (local) Printer”, which is configured as an Apple LaserWriter
printer. This is a PostScript printer, and Win4Lin forwards printing jobs to this default printer to the default Linux printer. Thanks to ghostscript
one can send PostScript to a properly configured printer, without caring about the underlying printer language.
Win4Lin is a gem as it stands today. It is fast, configurable and a good solution in many situations. Compared to similar offerings it
is also very affordable, even for home users. In my opinion there are only two gaps that have to be closed. First of all Windows 2000 and XP
support, Windows 2000 is widely deployed in business environments and the TCO rises when Windows 9x/ME licenses have to be bought besides
the Windows 2000 licenses. Windows XP is the de-facto operating system for modern home computers, and many home users have a Windows XP license. The second gap is smaller, and largely applies to home users, namely the lack of DirectX support. Running games on Win4Lin might be out
of reach in the short term, but DirectX support is badly needed for some multimedia applications. As it stands today I rate Win4Lin 8/10, if they manage to support Windows 2000 for the next version, I can’t wait to review it ;).