Run a Linux Client and Keep Your Windows Apps

Linux / Open Source
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

If you read any of the trade magazines, you already know that Linux is hot. Choosing Linux as a server operating system is almost a no-brainer, given that UNIX, from which it is patterned, has a long history in the server market and with TCP/IP-based networking. There is a virtual cornucopia of software available to enhance Linux’s server capability. And Linux, like UNIX, has a reputation for bulletproof reliability.

The same characteristics of stability and reliability that make Linux useful at the server level are equally desirable at the workstation level. Add to these attributes the fact that Linux has much more modest memory and CPU requirements than that other PC operating system, and it’s no wonder that Linux is starting to make headway in the desktop arena.

Of course, a PC isn’t useful because it runs an operating system. It’s useful because it runs applications, which happen to need an operating system to execute. And this is where some would argue that Linux falls short of the mark. IBM had this problem with its OS/2 operating system. Unlike OS/2, which is proprietary to IBM, Linux has the advantage of being open source; no one really owns it. All that creator Linus Torvalds owns is the trademark. Many software companies have noticed the rising interest in the open source model and either have already ported their software to Linux or are planning to do so in the near future. Thus, the relative dearth of commercial software that plagued OS/2 is not really a problem with Linux. Furthermore, with so many programmers hammering out code for Linux, you can find a “work-alike” for most of the packages that you currently use, and much of this software lacks the bugs present in commercial packages.

If the picture is so rosy, then what is the purpose of this article? It’s simple: Every Windows user has a favorite software package that’s available only for Windows. Either that’s the case or there is a software package that you have to use that’s available only for Windows. I’m in the latter camp, and, for me, that package is IBM’s Operations Navigator (OpsNav) for the AS/400. It’s not that I couldn’t live without it (I prefer command lines to GUI interfaces), but IBM has chosen to make it impossible to configure some aspects of the AS/400 without it. (Thanks, guys.) Because I manage a number of AS/400s, I have to be able to configure them. So I’m stuck with OpsNav. IBM has indicated that it plans on creating a Java version of the complete utility, but, until it comes to fruition, I’m going to have to endure a Windows PC. The purpose of this article, then, is to show how you can


have the best of both worlds—how you can use Linux as your primary desktop operating system and take forays into the Windows world only when you need to run one of those “gotta-have” programs.

Dual Boot

The least convenient method of accessing your Windows programs from Linux is simply not to access them from Linux. Linux comes with a program called Linux Loader, or LILO. This program, which is equivalent to OS/2’s Boot Manager or the Windows NT Boot Loader, permits a single computer to bootstrap one of any number of operating systems that may be loaded simultaneously on a single PC. I know the title of this article implies it is about accessing Windows programs while running Linux—I’ll get to some options to do that shortly—but I have to mention this alternative because it provides a method for you to play with Linux while retaining the production environment you currently enjoy (if you do). In fact, the easiest way to start experimenting with Linux is to add a secondary hard drive, load Linux on that, and use LILO to boot your existing operating system or Linux. Linux is capable of reading or writing FAT or FAT32 (VFAT) partitions, so it can share existing data partitions with the Windows 9x operating systems. It also can read NT File System (NTFS) or high-performance file system (HPFS) partitions, so it has limited (read-only) access to native Windows NT and OS/2 partitions. Work is currently underway to provide read/write access to NTFS partitions, but not quite ready for prime time. If you need infrequent access to one or more Windows-based programs, then a multiboot system may be your best, or at least easiest, option.

Remote (Sacrificial) PC with VNC

Occasionally, I dedicate one communal PC to running Windows (and the gotta-have programs) and then accessing it remotely from a Linux X-Windows session. Through the magic of a project called Virtual Network Computing (VNC), you can do that—for free. The scope, performance, and completeness of the software available through this project blows my hair back, and it does so at a rock-bottom price (free).

The package comes in two parts: the VNC server, which gets loaded on the PC to be remotely controlled, and the VNC client, which gets loaded on any machine that will remotely control the server. So far, there are two servers written—one for Windows and one for various UNIX versions and UNIX clones, such as Linux. On Windows, the server can be run as a service, to the extent that you can log onto the Windows box remotely. If the server is running Windows NT, you can even lock and unlock it by sending it the Ctrl- Alt-Delete key combination. And yes, access to the VNC server is password-protected, and the whole session can be directed through a secure shell for encryption in transit across the network.

The VNC client, which is referred to as the VNC viewer, is written in Java. Just about any machine with a Java Virtual Machine (JVM) will be capable of connecting to a server, either directly through the client program or via a Java applet embedded in an HTML page. Believe it or not, there’s even a VNC client available for 3Com’s Palm series of personal digital assistants (PDAs).

Unlike Terminal Server, VNC does not make your Windows box a multiuser machine, so there is only one connection available at a time. But other than that limitation, this is a truly handy program with many uses, such as allowing you to control many computers with one. In addition, any client can control any server, regardless of the operating systems on each. So a Windows box can control another Windows box, and so on.

Virtual Networking Computers is a project of AT&T Laboratories Cambridge. For further information, visit the VNC home page at www.uk.research.att. com/vnc.

The DOS Penalty Box (DOSEMU)


Admit it. Somewhere in your software library you have a DOS-based program that you find handy and that you’d still like to run. You can do that if you’re running Windows. And you can do it if you’re running Linux. The program you’ll need is titled DOSEMU, which is short for DOS Emulator. It’s included in almost all distributions of Linux. The phrase DOS emulator is somewhat of a misnomer because it’s not DOS but the hardware that is emulated. DOSEMU provides a virtual machine in which you can run most recent versions of DOS. Basically, you create a bootable floppy diskette and use it to create a DOS drive image that will be used by DOSEMU. There are some configuration options that you can set to make available the mouse, serial and parallel ports, and even the Linux file system. I’ve had no problems using DOSEMU to run Quicken for DOS Version 8. I can even connect to CheckFree (via modem) from within Quicken without trouble.

If you’re really adventurous, you can run some Windows 3.1 programs using DOSEMU. To accomplish that, you’ll need to run the version of Windows that comes with OS/2—the one that made OS/2 a better Windows than Windows—because the patches that IBM made to allow it to run as a client of OS/2 enable it to run under DOSEMU.

DOSEMU has the advantage of being rather straightforward to set up, and it is my choice for the one or two DOS programs I still run. You’ll need a copy of DOS to use it. If you are one of the few individuals who doesn’t have at least one copy of DOS in your archives (indicating your age to be under 10), you can substitute it with FreeDOS. For further information on DOSEMU, point your browser to www.dosemu.org. Links to FreeDOS are available at the same URL.

Getting Drunk on Wine

A more ambitious project to allow Linux boxes to run DOS and Windows programs is called Wine, which presumably is short for Windows emulator. But Wine isn’t an emulator. It’s a program loader that executes Windows binaries. It’s also a set of libraries that implements Windows APIs using UNIX and X11 equivalents.

To accomplish this magic, Wine creates an environment into which it loads the Windows program and any Dynamic Link Libraries (DLL) imported by it. The code within the program is then executed directly by the CPU. Wine’s only involvement, then, is to emulate any Win32 APIs that the Windows program may call.

Wine has been designed to emulate the complete Win32 API, so it does not require any form of Windows to operate. Unfortunately, the package is not yet complete, and many APIs have been implemented only as stub code, so nothing actually happens when they are called. If you happen to have set up your computer as a dual-boot system in which one of the partitions contains Windows, you can mount that partition and make it available to Wine, which then will use native DLLs to fill in some of the gaps. DLLs provided by software vendors can be used in either configuration.

Complete and accurate documentation about the Windows API is almost as scarce as snowfall in the Amazon. Available documentation can charitably be called incomplete, so what the Wine developers have ascertained has been done through reverse engineering and experimentation. The downside is that, anytime Microsoft desires, it can change some of the APIs, thus thwarting developers. This is the predicament in which IBM found itself with OS/2. IBM had the source for Windows 3.1 and did a splendid job of fixing the bugs embedded in it. The result was an operating system that could run Windows 3.1 programs quite well. Once Microsoft released the Win32 API, which IBM didn’t have the source to, the capability of OS/2 to run Windows programs started to deteriorate. IBM had a tough time keeping up with the “adjustments” that Microsoft frequently introduced.

The upside to reverse engineering is that no Microsoft code is included in the package. This keeps the project unencumbered with copyright issues. And, as the Wine home page (www.winehq.com) mentions, reverse engineering ensures “bug for bug” compatibility.


Wine is a work in progress, like so many open source projects, and the documentation states that it is alpha software and shouldn’t be used in a production environment. That may be true, but consider that, besides running Windows software, the Wine Win32 API library can be used to port existing Windows code to Linux. Corel (www.corel.com) has already used a version of Wine to port WordPerfect Office 2000 to Linux. The port appears to have been successful, so that should give you an idea of the code’s maturity level.

If you have even the slightest interest in running Windows programs under Linux, you need to check out the Wine home page, where you’ll find the program’s specifics. There is also a database of applications that already have been tested under Wine, including an important one to many users in corporate America—the Lotus Notes client for Windows Version 4.6.

Keeping Windows in Jail with VMware

Up to now, all of the Windows-from-Linux solutions I’ve discussed have been free. That’s a price we all like to pay. Actually, you are investing what real estate people call “sweat equity.” The product may be free, but you have to put your time in to get things installed and working properly. If you would rather invest money than invest time, then commercial software is in order. And the ultimate commercial solution has to be VMware.

If you are familiar with SSP running as a guest operating system of OS/400, then you already know VMware’s function. VMware creates one or more virtual machines that run in an X-Windows session. When you need one of your Windows programs, you simply start a VMware session, click the power on button, and the guest operating system boots up within this virtual environment. Operating systems that can be a guest of VMware include DOS, Windows 9x, Windows NT, Windows 2000, and various flavors of Linux and UNIX. If you’d like to try Linux and you currently run Windows NT or Windows 2000, you can acquire a version of VMware that runs on one of these operating systems. You can then load Linux in one of these virtual systems. Figure 1 shows my GNU Network Object Model Environment (GNOME) desktop with one window running Windows NT 4.0.

Setup of VMware couldn’t be easier. For my Red Hat system, I acquired the Red Hat Package Manager (RPM) file for VMware and installed it with a simple command. I then ran the configuration script and answered a short series of questions that configured VMware for my system. Next, I started a VMware session and was immediately introduced to the set up wizard, which, through a few more questions, determined my desires for network access, disk configuration and capacity for the virtual machine, and a few other small details. The last step was to insert my Windows NT CD and click the power on button. The virtual machine booted exactly as a personal computer would, complete with a memory test. The NT CD then booted, and installation proceeded just as though VMware weren’t even involved.

Although I found the installation and execution to be flawless, there are a couple of caveats I need to mention about VMware. The technology that VMware represents is quite remarkable, but it’s only practical if you have the horsepower to run it. Linux is well known for its modest hardware requirements. Windows is known for the opposite. So if you plan on running Windows using VMware, ensure that you have a machine up to the task of running Windows all by itself. I’ve read different comments indicating that the guest operating system runs at approximately 80 percent of the speed that it achieves natively. My testing confirms this. So a little overkill in host system resources will go a long way to making the experience pleasant. Also, VMware is not free and, indeed, may be considered a bit pricey depending on your budget. The company does have several pricing schemes, including a student license, so costs will vary. You can try it before you buy it and draw your own conclusions. For further information or to download the trial product, visit www.vmware.com.


Windows Optional

I’ve demonstrated a number of ways in which you can continue to use your Windows software as you migrate your desktop to Linux. As time goes on, the need to do this will diminish as more vendors jump on the Linux bandwagon. It’s even rumored that, internally, Microsoft has a group porting its productivity suite to Linux, although I’ll believe that when I see it. Meanwhile, until your favorite Windows program is ported, you do have a number of options available. Which one you choose depends upon the fullness of your wallet and the depth of your patience.

REFERENCES AND RELATED MATERIALS

• AT&T Virtual Network Computing Web site: www.uk.research.att.com/vnc
• DOSEMU Main Page Web site: www.dosemu.org
• VMware Web site: www.vmware.com
• Wine Development HQ Web site: www.winehq.com

Run_a_Linux_Client_and_Keep_Your_Windows_Apps05-00.png 409x409

Figure 1: You can run Windows NT in a VMware virtual machine.


BLOG COMMENTS POWERED BY DISQUS

LATEST COMMENTS

Support MC Press Online

$0.00 Raised:
$