...and a New VM for Mom
Christmas is the time for giving, and for many people this means technology. It's certainly no different in my family—Dad got a new Gigabit Ethernet rig, my little brother got some games, and my niece got a portable DVD player. Mom? She got a new VM.
This probably needs some explanation. My mother is a professor of ancient civilization, and being in the educational profession means that she does a lot of research writing, some of which involves citations of ancient languages in their original form. This isn't too much of a problem with modern operating systems and applications that are capable of using Unicode character sets and encodings, but until just a few years ago, most operating systems and applications had to rely on platform- or even program-specific encoding technologies, and this was particularly true with dead languages like Latin and ancient Greek (the latter of which has different glyphs than modern Greek). As such, most of the manuscripts and papers that she wrote just a few years ago used program-specific character technologies.
Some of these tools, such as the old WinGreek, were married to specific technologies, such as a particular version of Microsoft Word for Windows, which in turn only ran on Windows 3.x. Thus, my Christmas present for Mom was to migrate her old systems into VMware Player so that she could still work with the original materials and programs, but using her everyday (modern) system, with the legacy stuff running in a virtual machine.
This was actually a bit more challenging than it sounds, given that some of her equipment is around 15 years old. For example, she had a Toshiba T4850CT laptop and an IBM PS/2-E mini-desktop (a laptop in a nonmobile form factor, basically), both of which were limited to PCMCIA cards for system I/O, and neither of which had built-in support for CD-ROM drives or networking capabilities (never mind USB). Meanwhile, the Toshiba laptop had 8 Mbytes of RAM, while the PS/2-E had less than 4 Mbytes.
Normally, I would simply remove the hard drives and use imaging software to create a snapshot of the drive, but that was a no-go in this situation. The hard drive in the laptop uses an older thick form factor that physically won't work with any of my other laptops and requires a special controller to get power over the IDE interface. As for the PS/2-E, the case was locked and Mom had long since lost the key. If I was going to do this, I had to use software.
Even though I have a multiboot rescue CD that is capable of working on these classes of system, the lack of CD-ROM drive support meant that it wasn't possible to use those tools in that form factor. Next I considered using the imaging tools from floppy, but Acronis True Image required multiple floppy disks to create a bootable image and also required more memory than either system had (Acronis uses a customized Linux-based kernel, which is very nice, but it also has high system requirements). Eventually I was able to get a single-floppy install of Norton Ghost 2003 (since discontinued) working with a Belkin direct-connect cable (a bidirectional, host-to-host parallel cable) that I picked up at Staples on Christmas Eve. In this setup, I booted the Toshiba laptop under the Ghost agent, and then used her modern PC to suck the contents of the hard drive into an image file across the direct-connect link. From there it was a simple process of creating a new VM in VMware Workstation, and then using ghost to restore the image to the new VM.
This didn't work on the PS/2-E system, however, because it did not have enough memory to run the Ghost agent. For that machine, I used the old DOS interlnk utility to create a host-to-host network connection across the direct-connect cable, then mounted the old PS/2-E hard drive from within the modern PC. Once that was done, I was then able to use the old msbackup utility to create a backup of the system, and then was able to restore that backup to another VM.
I spent another day or two doing cleanup work, installing networking, and doing other minor tweaks to get the systems integrated into their new homes, and I still need to do a lot more. For example, I need to upgrade the systems to Windows for Workgroups 3.11 (look out, eBay, here I come), without breaking her legacy applications. Another problem is that Windows 3.x doesn't have support for the HLT instruction that puts the CPU into "idle" mode when nothing else is happening, so these VMs run the CPU at 100% whenever they are "on," which prevents her from doing much of anything else even with her modern kit, so I need to find a way to tame the CPU under Win 3.x. I also need to consolidate her files and get her VMs integrated into their normal backup schedule. All told, this is shaping up to be quite the project.
But still, it's a lot better than worrying about the calls that would come whenever one of her ancient machines eventually took the inevitable nose-dive. As difficult as this has proven to be, it certainly would be a lot harder if the machines weren't working, so all told this is time well-spent.
This whole process also has got me to thinking about how common this kind of problem must be. There are millions of old systems out there running on ancient hardware without any of the luxury technologies that we take for granted today, such as old NetWare servers and OS/2 application servers and SCO servers, and ... and many of those systems date back to the early '90s, with system specs that are appropriate to that era. Yet recovery tools are becoming harder to find for this class of machine—imaging software now routinely requires more memory than the average workstation had back then, and new versions often assume technology that simply didn't exist back then.