Jump to content

Problems installing Windows NT 3.51 in Virtual PC 2007


Recommended Posts

Anyone had any luck trying to install Windows NT 3.51 Workstation or Server under Virtual PC 2007 with a multi-core processor?

For example on the AMD FX-3800 processor running Windows Vista Ultimate x64, after attempting to install Windows NT 3.51 on a FAT or NTFS partition with the Virtual PC.exe process having all four cores enabled, this example error message appears in a blue screen:

STOP: c000221 (Bad Image Checksum)
The image advapi32.dll is possibly corrupt. The header checksum does not match the computed checksum.

Restart and set the recovery options in the system control panel
or the /CRASHDEBUG system start option. If this message reappears,
contact your system administrator or technical support group.

The temporary solution would be to allow Virtual PC 2007 process to use only one processor. For instance, I used Process Explorer and right =click Virtual PC.exe, set the Processor Affinity to only use CPU 0. By setting the Processor Affinity to use only CPU 0 under Windows NT 3.51, I was able to install Windows NT 3.51 successfully.

Once I close VirtualPC 2007 and restart it, VPC gets defaulted to use four cores which in retrospect that causes data corruption on the Windows NT 3.51 guest to appear. Other OSes such as MS-DOS, FreeDOS, Windows 3.0, Windows 3.1 and OS/2 Warp all work without problems.

It seems to me that Windows NT 3.51 guest under Virtual PC 2007 doesn't even like multiple cores.

Is there a permanent solution to overcome this issue? I'm sorry if my comment clearly didn't make since or that I wasn't being all that specific, but I'm tired and I'm heading for bed soon.

Update 1: Nevermind. I solved it when I stumbled upon this article regarding running Virtual PC 2007 on multi-processor and/or multi-core processors. Have a look: http://virtuallyfun.superglobalmegacorp.com/?p=154

I've learned that operating systems such as Windows for Workgroups 3.11, Windows 95 and even Windows NT 3.51 won't work correctly leading up to long latency, disk and data corruption errors to a point where the operating system will not even boot at all.

When Microsoft Virtual PC was a Connectix product it was mean to run on a single CPU or single core (up to 4.29 GHz). And now since newer computers with multi-core processors are replacing older computers with single core processors, the fix would be to set the Virtual PC.exe CPU affinity to a single core before any virtual machines are started.

Now to overcome this limitation, I downloaded a utility called Start Affinity. It can be found on this page: http://www.adsciengineering.com/StartAffinity/

StartAffinity is a freeware tool that is designed to start software by restricting it to certain CPU affinity masks. Since Virtual PC is not designed for multi-processor/multi-core computers, I had to enter this command to make sure Virtual PC 2007 always starts on CPU processor 0:

C:\StartAffinity\StartAffinity.exe "C:\VirtualPC\Virtual PC.exe" 0

I hope that that setting the CPU affinity to use only core 0 solves the data corruption/failed installation of Windows NT 3.51.

Update 2: For some reason, StartAffinity shows the command prompt window for a brief moment upon starting Microsoft Virtual PC 2007 with only Core 0 enabled. To get rid of the command prompt window, I had to modify the shortcut properties and add this line:

C:\HStart\hstart.exe /noconsole /idle "C:\StartAffinity\StartAffinity.exe "C:\VirtualPC\Virtual PC.exe" 0"

By using HStart with the /noconsole and /idle switches, HStart will make StartAffinity start without the command prompt window and lower the CPU priority to idle status. The Hidden Start utility can be found on this page: http://www.ntwind.com/software/hstart.html

If there are any questions regarding this thread, let me know. :)

Edited by ppgrainbow
Link to comment
Share on other sites


Anyone had any luck trying to install Windows NT 3.51 Workstation or Server under Virtual PC 2007 with a multi-core processor?

For example on the AMD FX-3800 processor running Windows Vista Ultimate x64, after attempting to install Windows NT 3.51 on a FAT or NTFS partition with the Virtual PC.exe process having all four cores enabled, this example error message appears in a blue screen:

STOP: c000221 (Bad Image Checksum)

The image advapi32.dll is possibly corrupt. The header checksum does not match the computed checksum.

Restart and set the recovery options in the system control panel

or the /CRASHDEBUG system start option. If this message reappears,

contact your system administrator or technical support group.

The temporary solution would be to allow Virtual PC 2007 process to use only one processor. For instance, I used Process Explorer and right =click Virtual PC.exe, set the Processor Affinity to only use CPU 0. By setting the Processor Affinity to use only CPU 0 under Windows NT 3.51, I was able to install Windows NT 3.51 successfully.

Once I close VirtualPC 2007 and restart it, VPC gets defaulted to use four cores which in retrospect that causes data corruption on the Windows NT 3.51 guest to appear. Other OSes such as MS-DOS, FreeDOS, Windows 3.0, Windows 3.1 and OS/2 Warp all work without problems.

It seems to me that Windows NT 3.51 guest under Virtual PC 2007 doesn't even like multiple cores.

Is there a permanent solution to overcome this issue? I'm sorry if my comment clearly didn't make since or that I wasn't being all that specific, but I'm tired and I'm heading for bed soon.

Update 1: Nevermind. I solved it when I stumbled upon this article regarding running Virtual PC 2007 on multi-processor and/or multi-core processors. Have a look: http://virtuallyfun.superglobalmegacorp.com/?p=154

I've learned that operating systems such as Windows for Workgroups 3.11, Windows 95 and even Windows NT 3.51 won't work correctly leading up to long latency, disk and data corruption errors to a point where the operating system will not even boot at all.

When Microsoft Virtual PC was a Connectix product it was mean to run on a single CPU or single core (up to 4.29 GHz). And now since newer computers with multi-core processors are replacing older computers with single core processors, the fix would be to set the Virtual PC.exe CPU affinity to a single core before any virtual machines are started.

Now to overcome this limitation, I downloaded a utility called Start Affinity. It can be found on this page: http://www.adsciengineering.com/StartAffinity/

StartAffinity is a freeware tool that is designed to start software by restricting it to certain CPU affinity masks. Since Virtual PC is not designed for multi-processor/multi-core computers, I had to enter this command to make sure Virtual PC 2007 always starts on CPU processor 0:

C:\StartAffinity\StartAffinity.exe "C:\VirtualPC\Virtual PC.exe" 0

I hope that that setting the CPU affinity to use only core 0 solves the data corruption/failed installation of Windows NT 3.51.

Update 2: For some reason, StartAffinity shows the command prompt window for a brief moment upon starting Microsoft Virtual PC 2007 with only Core 0 enabled. To get rid of the command prompt window, I had to modify the shortcut properties and add this line:

C:\HStart\hstart.exe /noconsole /idle "C:\StartAffinity\StartAffinity.exe "C:\VirtualPC\Virtual PC.exe" 0"

By using HStart with the /noconsole and /idle switches, HStart will make StartAffinity start without the command prompt window and lower the CPU priority to idle status. The Hidden Start utility can be found on this page: http://www.ntwind.com/software/hstart.html

If there are any questions regarding this thread, let me know. :)

I recompiled StartAffinity with TinyCC and have no-console flag set.

https://mega.co.nz/#!6cdRRCLQ!YfIM2F4j4DHPgglfuwZcuEVOLTIwp7LqJNgFYvJfW-g

Link to comment
Share on other sites

Thanks so much for the help everyone. Like I said before, I already solved this issue by using StartAffinity and HStart. :)

With StartAffinity, I made VirtualPC 2007 start with only Core 0 active. This problem applies to Windows NT 3.51 and neither Windows NT 3.1 nor Windows NT 3.5.

Link to comment
Share on other sites

BTW I wrote another starter to auto-select most idle core for the program that requires single-core.

https://mega.co.nz/#!GYlGjDCZ!VQGTLKL2Cjr6XCxI4jb2786KaynIMbJh3Sd-sDftTsM

As it reads HKEY_PERFORMANCE_DATA for measuring CPU usage per core, it takes 1 second before starting program.

And it keeps running for 2 seconds after starting program for setting active core again because some programs try to set itself to use Core 0 upon start.

Link to comment
Share on other sites

  • 6 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...