One of the nice things about starting your own IT support business is meeting fascinating people who have interesting or unusual requirements: recently, I've been helping a customer to install Win98 on modern hardware, not as straightforward as it sounds!
Although rare, it's not unheard of for people to be running legacy systems in the UK: I know of several companies that use Win98 on closed networks to run machinery and many of them are finding it increasingly difficult to maintain the hardware. Nonetheless, developing bespoke software to run on Win7 or Win8 still makes migration to newer equipment financially unappealing when compared to nursing archaic computer equipment.
"OK", I hear you say, "but what's this got to do with Ubuntu?" Well, although I did manage to get Win98 installed and stable on the XP machine, getting it to communicate with peripherals (such as the dot-matrix printer and a floppy drive!) proved beyond me: it just didn't want to play. Clearly, this was of no use to my customer who then started to make plans to import a machine from the US specifically to run a fifteen year old operating system. It's then that we started discussing the option of virtualizing Win98 on an open-source operating system using one of the freely (and free!) available virtualization programs.
Installing Precise on the WinXP box was easy and the processor had no problem driving VirtualBox. Fortunately, my customer was using WinXP SE (by all accounts, much easier to get running on VirtualBox than the previous version), so getting Win98 running was also simple but we still had several issues to resolve.
The first is purely aesthetic: in VirtualBox, Win98 SE only runs in a low resolution mode (800x600 16 Color). We fixed this using a very useful utility called SciTech Display Doctor. This is no longer supported, but you can find a registration code online that allows you to use the utility beyond its trial period.
Secondly, we had to fix the ACPI idle time issue (see here for an explanation) - we did this using a utility called Rain which, ordinarily, is used to keep over-clocked processors operating at peak efficiency.
Getting the printer to work was no more difficult than using a IEEE 1284 usb-centronics converter. This didn't work out of the box and we needed to hunt down some drivers. Contrary to some of the reviews on Amazon, our cable had no driver disk (for 98 or otherwise). However, by effectively converting our printer to a USB device, all we then had to do was install the VirtualBox extension pack to enable USB support in Win98 and install a brilliant (and still supported!) utility called DOSPRN.
This approach also worked for a USB floppy drive (without the need for DOSPRN), but with USB support, we no longer needed the restricted format of floppy disks: usb thumb drives are completely supported in this setup and the larger capacities are infinitely preferable to 1.44MB of storage!
On the customer's WinXP box, this setup worked - just! However, replicating it on my WinVista machine was much more successful. Having a dual core processor with plenty of spare system memory clearly helps! So, we'll build a bespoke system to host this virtualization and make the whole enterprise a little more future proof. Of course, the host operating system will be Ubuntu Precise, saving the customer a few bob on a Windows installation ;).
Sources & References: