VMs and Old OSes

Here are a few things I’ve found running VMWare 6 to host my main work environment:

Win2K and large SATA drives

I initially started using Win2K as the host environment for the VM, given it is more lightweight than XP. I found that even Win2K SP4 didn’t see my entire 300GB drive, instead cutting it short at 139GB. This is both in the installer and the drive manager once installed.

Fortunately I had just started and didn’t have any partitions set up yet. Turns out that out-of-the-box Win2K does not see large partitions and it would have corrupted any large partitions had it mounted them. Its fixable by creating this registry key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi\Parameters\EnableBigLba [DWORD] = 1

Guess not enough people have corrupted large drives under 2K for MS to make this a default in a hotfix. In any case I wouldn’t like to install Win2K cold on a large drive with existing partitions on it, by the time you get to hack the registry, the other partitions might be trashed.

Dropped network transfers

I persisted with Win2K and soon discovered the networking between the guest VM and the host (bridged mode) was really flaky; large file transfers would fail inexplicably with silly errors. It turns out that Win2K’s networking was freaking out because data was flowing between the VM and the host at speeds faster than the physical “real” interface (100mbit) could support. Win2K has some kind of “check” for this which fires even though the data isn’t actually going over the physical interface.

The fixes for this included hacking in a new virtual ethernet adapter for VMWare (which bridges at the MAC level) and using a separate “host only” adapter for the guest-to-host sharing. The second way worked fine but I decided to give up on 2K as a host and went back to XP as the host OS.

Big differences between Uniprocessor and Multiprocessor Win2K VM HALs.

My guest VM is Win2K and I initially installed it with one CPU enabled under VMWare, so it installed a Uniprocessor kernel/HAL. All worked great so I thought it might be good to try a dual CPU VM. Adding the CPU isn’t enough, you have to use Device Manager in the guest to change the computer from ACPI Uniprocessor to Multiprocessor (update the driver, manually select the alternate HAL). This enabled the VM to see multiple CPUs but I noticed something very nasty.

Running Winamp or ZoomPlayer now used 100% of both real cores. Changing the VM back to a single virtual CPU (still with a multiprocessor HAL) just meant I now had one real core maxxed out. After I switched the VM back to the ACPI Uniprocessor HAL (device manager again) it now uses a couple of percent for Winamp and about 15% for 640×480 video stretched to 1280×1024, like I’d originally observed. Not bad if you remember its a VM!

I guess the multiprocessor HAL needs more of VMWare’s attention to manage when doing I/O, even with a single virtual core.