Wednesday, March 17, 2010

Adding Multi processor support to a 32 bit Windows 2003 VirtualBox Image

Say you have an existing Windows 2003 R2 Virtual Machine with all of your favorite software installed.  When you installed the machine only had a single processor and now you are using a Virtual Environment that supports multiple processors.  Both processors will show up in the device manager but the OS is not using them (See task manager).  To remedy this issue, you need to replace the HAL.  After you complete Windows setup, there is not an out of the box way to replace the HAL.  This has only been tested on Windows 2003 R2 Sp2 but should work for all XP/Win2003 flavors. 

Disclaimer: I am not responsible for broken machines or nuclear war.  Information is provided as is.

Note: Requires the existing HAL be ACPI based or this will blow up your machine.

Retrieve the following HAL libraries from the Service pack folder (C:\WINDOWS\ServicePackFiles\i386) and rename them accordingly:

ACPI Multiprocessor PC
- halmacpi.dll (renamed to hal.dll)
- ntkrpamp.exe (renamed to ntkrnlpa.exe)
- ntkrnlmp.exe (renamed to ntoskrnl.exe)

· Drop the renamed files into the system32 folder and shutdown. 

· In VirtualBox’s Machine Settings, I enabled  IO APIC in the System > motherboard tab.

· On the Processor tab I changed the number of processors to 2

· Start the Virtual Machine

· Prompted me for a reboot after first log in

· After reboot, both CPU’s can be seen in the task manager.