Yesterday, I had an unbelievable amount of “fun” with VMWare – just what was needed for a Sunday…
This week I’m starting a project which will see me working with a group of colleagues on the other side of the Atlantic. It’s all Message Broker-related, and I just happen to have a Windows XP VMWare image with WMB v6 installed. I’d recently installed VMWare 5.5.2 on my host system, and I wanted to make sure that I had all the right levels of the middleware installed in the image.
When I first started the VM, there were a number of warnings, including one about the processor speed not being detected correctly, and a cryptic one about my laptop’s BIOS not reporting the correct NUMA settings. I went ahead and booted the virtual machine, only to find that a minute or so after logging on, it would throw a blue screen and reboot itself.
I remembered that I’d recently changed a BIOS setting to do with Intel processor virtualisation, so I went back and changed that again. No luck. I tried updating the BIOS via Lenovo System Update. Again, no change.
The VMWare knowledge base was a mine of information, although sadly the two KB articles referred to in the original warning popup didn’t seem to clarify what the problem actually was… eventually, I updated the config.ini file for VMWare as follows:
host.cpukHz = 2160000
host.noTSC = TRUE
pstc.noTSC = TRUE
host.TSC.noForceSync = TRUE
processor0.use = TRUE
processor1.use = FALSE
If I understand the 30 or 40 Google and VMWare knowledge base hits I went through, these settings should fix the CPU speed to match the host machine; get the host and guest CPU clocks to be synchronised; and force the VM to only use the first core of the CPU.
Unfortunately, even after incrementally adding these settings, the VM would continue to reboot itself / blue screen. I kept trying to change the settings to prevent it from restarting on a Windows STOP error, but I never seemed to be able to apply the change before the next reboot. In the end, I booted the VM into safe mode and then changed that setting. Even when I did manage to read the stop error, I couldn’t find anything definitive which explained what was causing it, but I did find something about Windows XP SP2 and Data Execution Protection (DEP) causing problems with some drivers. After another reboot into safe mode, I disabled DEP for the guest, and that seems to have resolved the issue – no more repeated STOP errors.
I’d love to know what recent change caused this. It could have been one of several, because I’m still in the process of getting the T60p set up and things change rapidly! My best guess is that it may have been the upgrade from VMWare 5.5.1->5.5.2 , because I’m reasonably sure that the image was working fine before that (and even after resetting the multicore settings in the BIOS, the problem persisted). Now I’m going to try rolling back a few of those hard-coded settings in the config.ini file, because I don’t think I always want to restrict my virtual machines to a single core.
Well, at least it is working, and now I know the BIOS is up-to-date!