A First Look at Virtual PC for OS/2

Like many people who hang out on OS/2 mailing lists, eCS news groups, and similar
places, I use a computer at work and at home. Also like many of them, I am forced
to work in a world dominated by software written for Windows. Most commercial software
companies don't seem to think that there is a market for OS/2 software. My office
LAN connects 15 computers, 13 of which run some flavor of Windows. Fortunately,
my own and the router that runs In-Joy Firewall, Weasel and a few other things run
on OS/2 or eCS. I'm able to do almost all of my work for the company with MR/2 ICE,
WordPro, Lotus 123, PM Fax, Home Page Publisher, PMView, and a host of other OS/2
software. I do use Paradox 5 as my database, because I've had it for years and it
works well in a WinOS/2 session.

Unfortunately, the principal software program for our business is Point for Windows,
by Calyx Software. Point is a mortgage loan origination program that's basically
a database manager with lots of forms. When you apply for a mortgage loan in the
U.S., there's a fairly good chance that the forms you sign were generated by Point.
Until about two years ago, Calyx wrote Point to run even on Windows 3.0 systems,
so it performed well in a WinOS/2 session. Recent versions, however, are 32 bit
and use Install Shield 6 as their installer. Since the nature of the business requires
yearly or more frequent changes to the software, I've been stuck using an older
version for quite a while. As I provide support to people who use the newer version,
that's become increasingly more difficult. I long for the day when all Windows software
will install and run on OS/2 or eCS with Odin, but we're not there yet.

Several months ago Kim Cheung and the guys at Serenity Systems announced that
they were working with Connectix, the authors
of Virtual PC (VPC) for everything else, and Innotek,
a well known OS/2 software company based in Germany, to produce VPC/2. Innotek are
the guys who ported Flash 4 and 5 to OS/2. They also make a redundant server software
system of interest to wealthy businesses. If you haven't seen VPC before, it's a
software program that lets your operating system be the host of a guest OS that
runs entirely within a window on your desktop while your primary OS is running.
Connectix sells versions for several operating systems, but OS/2 was not one of
them until recently. You start the Virtual PC and then start one or more of several
operating systems you may have installed within it.

Because of my need to run a Windows program and my obstinate refusal to go over
completely to the Dark Side, I've eagerly anticipated the release of Virtual PC
for OS/2. I've been reading the Innotek Support Fora for VPC/2 for months, and bought
the program as soon as someone listed it for sale on their web site. The first I
found was Mensys, so they got my cash. Others may get more of it after I'm convinced
that it helps me.

You probably want to know everything about VPC/2. This article won't answer all
of your questions. It offers my initial impressions about what VPC/2 does and how
well, or not, it may work for you. If you want more, spend some time at http://ubb.innotek.de/cgi-bin/ultimatebb.cgi?ubb=login.
You'll have to register, but that's relatively painless. You'll have access to the
questions of many users and the answers of both more experienced users and the authors
of the program. One of the nicest things about the OS/2 community is the ability
to talk with software authors. Most of them are eager for feedback, and accept even
negative comments if politely made. In a world of mostly genuinely nice people,
the guys at Innotek are among the best. Additionally, their support site is one
of the most pleasant I've used. It does require a web browser, but it's easy to
use and relatively fast.

Getting the program:

Vendors will eventually sell a shrink-wrapped box with CD and manual. Right now,
you buy the software and download it. It's about a 10 MB download. In my case, with
a cable connection, that was entirely painless. If you're at the end of a long phone
line in the country, it may take longer, or you may want to wait for the CD. Mensys
emailed me the key and the download instructions.

I had to pay for the program to try it. Innotek has announced plans to release
a demo version, which may be time-limited or crippled. That's not a bad thing to
get if only to see whether your hardware will support VPC/2. It could save you 199
Euros just to find out that you can't run it on your system.

Installing the Program:

Once you unzip the download file, you simply run the installer. In seconds you make
a few choices about where you want to put it, and of course read and agree to the
license, and you're done, almost. You will be presented with a screen that offers
to install a Virtual Switch. The default is NOT to install it. If you wish to install
it, and you do, you have to click on the name of your LAN adapter in the window
AND click on the "Change" button beside the window. Just clicking on the
LAN adapter is not sufficient to tell the installer to install the Virtual Switch.
I think that this part of the installer could be improved. But once that's done,
VPC/2 will have a folder on your desktop. You must reboot to activate the program,
because it requires a device driver. The Virtual Switch also makes changes to your
protocol.ini file.

Without the Virtual Switch, VPC/2 allows the "guest" operating system
(the one you're going to install later) to share folders on the host machine by
means of its "Shared Folders" feature. This doesn't use netbeui,
tcpbeui, TCP/IP, or any other networking protocol, but is proprietary. It's also
excruciatingly slow. You do not want to use this feature unless you just can't install
netbeui on your host system. Without Virtual Switch, the guest PC can still access
your network through your current LAN adapter. It just uses TCP/IP only. That will
be enough if all you need is to use Internet Explorer, for example.

If you have to share files on a peer LAN like mine, you need the Virtual Switch.
With the Virtual Switch installed, VPC/2 switches your LAN adapter into "promiscuous
mode", in which it receives everything and lets the operating system sort out
what it wants. That allows you to establish a "separate identity", with
your own computer name and IP address, for each guest PC, so that you can use the
network protocol that your LAN uses if it's not exclusively TCP/IP. The same physical
computer could be several different computers on your LAN at the same time or at
different times depending on how many guests you want to run.

Once you've installed VPC/2 with the Virtual Switch (Yes, I'm obsessed with this.),
you reboot and start the program to enter your key.

Setting up a Virtual PC:

Setting up a guest OS on VPC/2 is simplicity itself. You start by clicking on the
New PC button in the main window. You will be asked whether you want to use an existing
disk image or to create a new one. Connectix sells disk images with the OS of your
choice already installed on them, so you can use one if you have it. Just tell the
program where you put it. If you've already created a guest OS, you can move it
to a different machine. That's possible no matter what kind of hardware the two
machines actually have because the guest OS is installed not on your real hardware
but on the Virtual PC, which is always the same.

Let's assume that you have no disk image and need to create one of your own.
Just pick a name for it. I created a directory to put it in just to keep track of
it, but you can put it on any drive (volume if you're using eCS, WSeb, or MCP) in
any directory in your real PC. Let VPC/2 guide you. It will suggest the amount of
memory you should allocate to the guest OS based on which one you want to install.
The amount of memory it wants to install is more than what you may be using to run
that OS on a separate computer. For example, it suggests that you use 64 MB for
a Windows 98 system. The guest PC emulates an entire computer in memory, as well
as running the guest OS, so don't try to cheat it out of memory. To run a guest,
your computer must have enough RAM to run OS/2 or eCS plus the amount of RAM you
allocate to the guest PC. That may be a limitation for you. I wouldn't consider
trying to run VPC/2 without 128 MB installed on the box. The system I use at work
actually has 512 MB, because I beefed it up when RAM was cheap in anticipation of
VPC/2. RAM is not so cheap as it was a couple of months ago, but it's still cheaper
than a complete PC, so don't scrimp on the RAM.

You want to make sure that the new PC is set to use the Virtual Switch. You may
have to change the address of your printer port. VPC doesn't always seem to recognize
that you have a printer port, and may not pick the right address for it. If the
setup doesn't show the printer port with its correct address, just change the setting
with the pull-down menu. You're probably not going to want to print directly to
the port anyway, but the guest OS needs to think that it has a parallel port to
install a printer.

When you've finished the brief configuration, the guest OS will attempt to start.
Since there's no OS there yet, you'll get a disk error. Put in whatever is needed
to start the installation of the guest OS. If that's Windows 95 or 98, it's a floppy.
My copy of 98SE has a bootable CD, so I put that in. Installing the OS is pretty
much identical to installing it on a real computer. Except it's slower. You will
be installing to a machine that has an S3 video card and an Intel NIC. They were
recognized in both Win 98 and Win2K. My initial problem was the parallel port, but
that can be solved by making sure that VPC/2 has the parallel port set up before
you start the guest OS installation.

After considerable time and the usual number of reboots and scans for hardware,
you will have a working OS. Depending on what type of network you have, you will
have to set up the networking. Our LAN grew as a two-box replacement for a sneaker
net, using things that come with Windows, so it uses tcpbeui and TCP/IP. I like
knowing the address of each box for troubleshooting, so they have fixed addresses.
Install networking, be sure that your workgroup name is correct, assign the guest
OS an IP address or tell it to use DHCP, and you should be in business. Reboot and
use your LAN just as if you had added a physical PC to it.

When the installation has finished and your guest system starts in a window on
your desktop, the first thing you'll probably notice is how small the window is.
I grabbed a corner of the guest window and tried to increase the size, but it wouldn't
move. Unless you're a surgeon who's used to operating on abdomens through small
incisions in navels, you will want more room. The solution is simple. The window
of the guest changes as you change the screen resolution of the guest. VGA produces
the small window that you first see, while 800X600 produces a window of the size
you see on my screen shot. I didn't try anything bigger than that, because I only
use one desktop. If you have Object Desktop or use the Page Mage feature of XWorkplace,
you could put an high resolution window of a Windows guest in one of those desktops
by itself.

Most of us want to use the files we already have in applications we run on the
VPC. There are two ways to do that. VPC/2 has a concept called "shared folders".
This should not be confused with file and print sharing AKA netbeui or tcpbeui.
Access to these shared folders is VERY slow. Don't even think about using that feature
unless you cannot install any other method of sharing files between the host and
the guest. That's why I insisted so much on your installing the Virtual Switch.
Make sure that you have shared the drive/volume/folder on your host PC that you
want to be able to see from the guest OS. You will have to make sure that you create
a user with the same name as the one you gave to the user on your guest OS, and
(on eCS) give that user permission to access those shares. I had not shared my data
drives with anyone else on the LAN, but in eCS (and Warp 4 if you choose to use
the feature) it's easy to share a resource with only the users you want to see it.
This is different from Windows 9x, and requires some attention if you're accustomed
to the typical Doze file and print sharing.

The shared folders feature of VPC/2 is intended to give you a way to share a
folder on your host machine with your guests. The idea is to allow you to do something
like view a Power Point presentation you get attached to an e-mail with Power Point
on your VPC/2 guest. If you share a folder with it, it should be a very small folder
with a very small directory tree. I'd make a folder directly off of the root directory
of a drive, and put very few files into it at a time. The problem, as the guys at
Innotek have explained it to me, is that VPC/2 takes a very long time to find the
files. It moves them, when you want it to, fairly quickly. Just don't use it to
share an entire drive, or you'll be disappointed.

Installing Applications:

Fresh from my triumphant creation of the guest PC and installation of the OS, I
couldn't wait to install the application. I had used VPC/2's shared folders, and
wanted to install the application on one of them and point it to another of them
for the data it needed. I started the installation program. Believe it or not, 8
hours later it was still copying files. The installation never crashed, it just
hadn't finished. Having seen slow installs before, I decided to copy the CD to one
of my partitions that was shared with VPC/2 and run the installation from there.
This time I let it run for 24 hours. It still hadn't finished.

My astonishment that anyone would attempt to sell something that worked this
badly produced a couple of intemperate messages to Innotek that were answered with
surprising grace by the authors. I can't emphasize enough how cooperative these
guys are. They explained the deficiency of the shared folder mechanism of VPC/2,
and suggested that I try a different way of sharing the resources. I bit the bullet
and shared my data drive with the workgroup, but only gave access to it to the VPC/2
guest. Then I unmounted the VPC/2 shared folders and mounted the resources with
Windows' file and print sharing. To say that access to the resources seemed a bit
snappier would be the understatement of this young century.

I started the installation over again, and decided to install everything to the
guest OS. With Point, that's not much of a problem because it uses an .ini file
in the \windows directory to tell it where to look for its resources. After the
installation, I knew that a minute with a text editor would have it pointed where
I wanted it for data files and templates. This time the installation finished in
40 minutes. For perspective, the program usually installs to a Win 9x system in
about 10 minutes. That's acceptable to me for this type of application, as I don't
expect to install it very often.

Finishing the application, I rebooted the guest, edited the VPC's c:\windows\winpoint.ini
file so that Point would know where my data folders really were, and launched the
application. To my surprise and gratification, it ran just like it does on the Win
9x PCs, but much more slowly. It's usable if I don't try to access all 35 or so
data folders, but just. It felt as if my K6 III-450 had magically turned into a
386.

I asked myself how this could have happened. I built this system myself especially
to run Warp 4. It was never cutting edge, because I'm cheap, but it runs eCS very
smartly. We are spoiled by using an OS that's mature and fairly undemanding of its
processor. Many of us have experienced satisfactory performance on 486 processors.
This system has the best socket 7 processor ever made, and the disk subsystem is
Ultra2 SCSI with two fairly fast LVD drives. The CDs run on a separate channel.
However, with VPC/2, it becomes a dog.

The answer is fairly obvious. VPC/2 puts an extremely heavy load on the processor.
Sadly, my beloved K6 III just won't cut it any more. I explained the situation to
my boss, a longtime thrall of Microsoft. He was astonished to see Windows 98 boot
in a window on my PC, and even more surprised to see Point load. I told him that
I needed new hardware to run it satisfactorily, and got the green light to go shopping.

What happened then?:

Having spent slightly more than $200 of my boss' cash to supply myself with an Athlon
XP 1700+ and a board to hold it, and installed them in my box, I bid a fond farewell
to a faithful servant and fired up the new system. There's quite a bit of difference
between a K6 anything and an Athlon XP.

I booted the system and started VPC/2 and then a Doze 98 session. With this kind
of horsepower, VPC/2 moves reasonably quickly, although booting the guest system
is not blazingly fast. It is still Windows! Point should be able to access data
files in 35 different directories on three PCs, one of which is mine. The three
drives have been mounted in Doze 98 with tcpbeui. Access is much quicker, but Point
still takes a long time to start because it has to find all of the directories on
the network as it loads. It works about as fast as it would on a Pentium 166 system
running Doze 98. The guest does not run Windows like it would run if you actually
booted to Windows, nor does the program run as fast as it would run in a WinOS/2
session, if it would run in one like its older sibling, but it's quite usable.

Unsolved mysteries:

There were other problems, however. I noticed that I could not access the network
shares from my host eCS system while the VPC was running. So I shut VPC down and
tried again. You've all experienced what happens to OS/2 when you try to access
a resource that the system thinks should be there but it isn't. Using VPC seemed
to wipe out my access to network connections until I rebooted.

I puzzled over this for a while, and decided to try an experiment. Because I
access a lot of network resources, drive letters are a precious commodity. Several
months ago I bought NetDrive to solve that problem. One of its virtues is that you
can mount all of the network connected drives as directories under only one drive
letter, so I've been using it. Since most of the other boxes on the LAN are Windows,
file and print sharing is done with tcpbeui. But I thought that maybe VPC/2 and
NetDrive might have some incompatibility. I edited my startup.cmd so that it mounted
the resources with net use \\computer\drive commands. When I started VPC/2 again,
I was able to access the shared resources from both systems at the same time, and
they stayed accessible after VPC was shut down or saved. Problem solved, but by
sacrificing something I've also found useful.

I've tried this on another machine running NetDrive that only uses netbeui and
TCP/IP rather than tcpbeui and TCP/IP. Not only do the network drives continue to
be accessible to the host system, they are accessible to the guest system as well.
I can't explain this, but if you have to use tcpbeui, you may have to do without
NetDrive.

Then I noticed that my TCP/IP connection seemed much slower when I was using
VPC/2. I did a series of tests at www.bandwidthplace.com.
I won't reproduce the results here, but my conclusion is that from the time VPC/2
is started until a reboot of the host is done, something significantly lowers the
throughput of TCP/IP networking. I sent those results to Innotek. I tried this,
too, on the other system. While the speed tests on the Win 98 guest were about half
of the speed of the host with the guest open and one third of the speed of the host
with VPC/2 closed, speed was still a lot better than a modem, and the host wasn't
affected after the guest was closed. This was something of a mystery to me. The
systems are very similar hardware, and both run eCS FP1 with TCP/IP 4.3.2.

I solved the mystery by buying an Intel EtherExpress Pro 10/100 NIC. When I
installed that in the system that I'd had the problem with, performance improved
dramatically. The speed tests from within the Windows 98 VPC/2 session were still
much slower than from the eCS session, and it too was slower with VPC running.
But when I closed VPC/2, the speed of the eCS session went back to normal. The
LinkSys LNE 100TX Version 2 is a good NIC if you run OS/2 or eCS, but it doesn't
work right with VPC/2.

Conclusions:

Does this work? You're damned right it does. I've dreamed for quite a while about
being able to use a MS Windows program without rebooting and while I was doing something
else. You can definitely do that with VPC/2.

Will this work for you? It will if you have the hardware to support it. Innotek
recommends a minimum of a K6 III or Pentium II or III, running at a minimum of 266
MHz, and recommends 500 MHz. It undoubtedly will run on a K6 III 450, but you won't
like the way it performs unless all you need to do is run Internet Exploder. If
you really need this to work well, treat yourself to something more modern.

Is this as good as Odin? That's hard to say. If your application will run properly
under Odin, you will likely be able to run it without buying the hardware needed
to run VPC/2. And it will probably run faster under Odin. If it doesn't run properly
now, it probably will some day soon. How urgently do you need the program to run?
Also, does the program you want to run have an installer that only works with a
real Windows system?

VPC/2 is not really a competitor to Odin. Odin, after all, is intended to run
Windows applications. If you need to run a Linux application and you don't like
the way it runs on XFree86, you can always install a virtual PC running Linux and
use it in that. Some day, Odin and Everblue may let us install and run every Win32
and Linux application directly on our OS/2 or eCS desktops. Today they don't. If
you'd like to do something very near to that today, and don't mind investing in
a little modern hardware, you should take at least a demo ride on VPC/2. My hat's
off to the guys at Innotek for solving one of my more vexing problems, and someone
will get more money from me, when I have it, for another copy or two of this marvel.