Jan 10, 2006 3:43 AM
How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor
How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[b]Problem description[/b][/u]
It's commonly heard that you cannot revert a Windows Server 2003 back to Uniprocessor after upgrading to Multiprocessor - and then upgrade to Multiprocessor again. There are some "hacks" that involve manually replacing system files or editing .inf files, but these are, of course, unsupported. How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorThe solution described here involves no hacks, no scripting, no manual file replacement, no file editing, and even no command line! It only uses supported mechanisms available on the GUI, so I guess it should be a supported operation.[/u]
How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[u]Warning:[/u] The solution described here has only been tested on Windows Server 2003 machines on ACPI VMs.[/b]
How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[u]Common pitfalls[/u][/b]
It's considered good practice to start with uniprocessor machines and, only if needed, upgrade them to SMP. This is usually done by powering off the VM, adding a second CPU and powering it on. Windows Server 2003 does, then, detect the second CPU and convert it to an How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC[/i] by itself, and all sems to be OK. The problem is, if we ever need to downgrade back to How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Uniprocessor PC[/i], we will no longer be able to; if we go back to one CPU, the machine won't "autoconfigure" itself again; it will remain as How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC.[/i] When this happens, the only options we have are either:
\- leaving the machine with the multiprocessor HAL/Kernel and decrease the number of CPUs to 1 (however, using the multiprocessor kernel on a uniprocessor machine involves some additional overhead), or
\- "Update Driver" to the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorAdvanced Configuration and Power Interface (ACPI) PC[/i] HAL/Kernel. Although all seems to work (and, as far as I know, there are no reports of problems arising from its use), there is a lot of FUD about doing this; an official clarification from Microsoft would be nice to have. Moreover, How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorif we install this HAL/Kernel, we won't be able to "Update Driver" to the multiprocessor HAL/Kernel again.[/u]
How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[b]The solution[/b][/u]
The trick, if it can be called so, it to use the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorRoll Back Driver[/i] feature on the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorDevice Manager[/i] instead of How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorUpdate Driver[/i]. It must, however, be used with caution, and there are some operations that must be done previously or it won't work. Step-by-step, here's how it's done:
\- Start from a powered-on Uniprocessor VM.
\- On the Device Manager, below "Computer", select How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Uniprocessor PC[/i], and "Update Driver" to the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC[/i].
\- When asked, power the VM down.
\- Now - and only now! - add the second CPU to the VM configuration.
\- Power the machine on. Check that everything is OK.
\- Upgrade to SMP is complete!
\- Power down the VM.
\- Remove the second CPU from the VM configuration
\- Start the VM and go to the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorDevice Manager[/i]
\- See properties for How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC[/i] and press the "Roll Back Driver" button
\- Reboot the VM when asked.
\- Downgrade to Uniprocessor is complete!
These two operations may now be repeated over and over again.
How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[b]How to handle machines that already have the SMP HAL/Kernel[/b][/u]
The "roll back" trick only works if - expectedly - there's something to "roll back" to. When we install a uniprocessor VM, shut it down, add a second CPU and let plug-n-play do its magic, Windows doesn't make a copy of the previous Kernel/HAL to which we can revert. Also, when we create an SMP VM or P2V an SMP server - which were both installed with the Multiprocessor kernel - there's no Uniprocessor to roll back to. So, the lack of a Uniprocessor HAL/Kernel to which to roll back happens in two scenarios:
\- if the OS has been installed on a SMP machine, or
\- if the Kernel and HAL have been upgraded "by themselves", by just adding a second CPU and rebooting the machine.
However, if you're comfortable with running with the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorAdvanced Configuration and Power Interface (ACPI) PC[/i] Hal/Kernel instead of How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Uniprocessor PC[/i], here's what you can do:
\- Start from a powered-on Multiprocessor VM
\- On the Device Manager, below "Computer", select How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC[/i], and "Update Driver" to How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorAdvanced Configuration and Power Interface (ACPI) PC[/i]
\- When asked, power the VM down
\- Remove the second CPU from the VM configuration
\- Power the machine on. Check that everything is OK
\- Downgrade to Uniprocessor is complete!
\- Start the VM and go to the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorDevice Manager[/i]
\- See properties for How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorAdvanced Configuration and Power Interface (ACPI) PC[/i] and press the "Roll Back Driver" button
\- Power down the VM when asked.
\- Add the second CPU
\- Power the machine on. Check that everything is OK
\- Rollback to Multiprocessor is complete!
Again, these operations may be repeated as many times as you like.
How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[b]Last thoughts[/b][/u]
If you're building a physical Windows 2003 server with only one single-core Intel CPU, you might want to disable HyperThreading before installation, manually select How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC[/i] after installation and only then enable HyperThreading, so you can later revert to How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Uniprocessor PC[/i] if needed.
The most important thing to keep in mind is that How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorthe VM should never be powered on with 2 CPUs and the Uniprocessor HAL, or Windows will upgrade to Multiprocessor by itself and there will be no way back to How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Uniprocessor PC.[/i][/b]
Paulo