Vous êtes sur la page 1sur 10

White Paper: Upgrading CPU's for non-ACPI Compliant Systems (W2K/3) Document Version 1.

By Mike Laverick RTFM Education Contact: mikelaverick@rtfm-ed.co.uk

ESX Version: 2.x Author: Mike Laverick Audience: Expert Style: Bit techy with some humour, not a po-faced article. I use unhappy faces to flag up events and experiences that are less than pleasant. I use a happy face to flag up something which is very advantageous. Objective: This article discusses procedures required to upgrade a single-cpu physical machine to a multi-processor virtual machine. This is supported on some OS such as Windows 2000, but NOT supported on Windows XP or Windows 2003. I show how its still possible to upgrade with these operating systems with a script. Also, as my single cpu physical server does not support ACPI, this alters the procedure significantly Disclaimers & Acknowledgements: In this document I express some personal opinions which may disagree with this you right. But please dont flame me with your disagreements! On the other hand if you feel that there is technical error in this document then I implore you to tell me so. I dont want to be responsible for any disseminating misinformation in any of my RTFM Guides or White Papers!

Upgrading CPUs for non-ACPI Compliant Systems (W2K/3)


It is possible to P2V a single processor system to make multi-processor virtual machine However, you can face BSOD issue based on selecting the wrong options of non-ACPI and ACPI options One of the key design features of Windows is that it supports multiple hardware platforms without the need for complete different versions of the OS. This support is accomplished through the HAL, which is implemented via the kernel-mode hal.dll module. All Windows components access hardware via the HAL, and multiple HALs are available that are specific to different hardware platforms. The HAL is chosen when the OS is installed (hence, why you can't take a disk from one machine and run it in a machine of a different hardware platform). The available HALs are listed here: o Standard PC (non-ACPI) - Hal.dll o MPS Uniprocessor PC - Halapic.dll o MPS Multiprocessor PC - Halmps.dll o Advanced Configuration and Power Interface (ACPI) PC - Halacpi.dll o ACPI Uniprocessor PC - Halaacpi.dll o ACPI Multiprocessor PC - Halmacpi.dll The installation process selects the correct HAL and copies it to the %systemroot%\system32 folder as hal.dll. The last three HALs in the list are the most common If you are upgrading from a single processor system to multi-processors you must have compelling reasons to do so, as SMP actually can (counterintuitively) run slower than a single processor system Before we begin I was put on to this support article from Microsoft which help clarify matters greatly http://support.microsoft.com/default.aspx?scid=kb;en-us;Q234558 Credit must go to P2V Forum Users - djc49939, Stamaraster and of, course Boydd When I first started looking at this I incorrectly assumed that the P2V Assistant was responsible for the upgrades (as it is for downgrades). Actually, it more technically correct to say that the virtual machine definition (held in the VMX file) is responsible for the upgrade. What also muddied the waters and made life difficult was that my physical machine is not ACPI aware To do the upgrade, basically you ask for 2-CPUs in the definition of the Virtual Machine, and then upgrade the HAL.DLL (by changing the ACPI driver) Before even considering the upgrade from 1-CPU to 2-CPU you need to examine capabilities of the virtual machine it does seem to be the case in Windows 2000, that P2V machine inherits some of the capabilities and limitations of the physical machine My P2V is of physical machine that doesnt support ACPI. After a P2V the virtual machine is also does not support ACPI. As I understand it ACPI is a motherboard feature and I didnt expect this behaviour in the virtual machine.

So, before you begin the upgrade its best practise to confirm at the Virtual Machine whether it supports ACPI or not otherwise you will have same problems that I had! Critically, there are two types of multi-processor HAL.DLL, one for a ACPIcompliant system (called ACPI MultiProc), another for a non-ACPI Complainant system (called MPS Multiproc PC) WARNING: I strongly urge you to backup your P2Vd Virtual Disks before attempting the following or set your disk to be in undoable mode. If you get the wrong driver you WILL get a BSOD. Or as MS put it. You can use this procedure only to upgrade from a single-processor HAL to a multiple-processor HAL. If you use this procedure to change from a standard HAL to an ACPI HAL (for example, after a BIOS upgrade) or viceversa, unexpected results may occur, including an inability to boot the computer [bold added for emphasis]

Technically, what I am doing IS supported by VMware. However, VMware do not support Windows XP and Windows 2003 UP to MP but it can be done

Determining if you P2Vd Virtual Machine Supports ACPI Note: There are number of ways of finding out whether your virtual machine support ACPI Firstly, does the virtual physical machine power down to a cold state or are you left with the It is now safe to turn off your computer message. For example with Windows 2000 when the virtual machine shutsdown you get this message

Secondly, in Device Manager what is the current ACPI driver? You can see this in Device Manager, under + Computer, like so:

Standard PC according to MS is the following Any Standard PC, non-ACPI, or non-MPS. Could be a 386, Pentium, Pentium II, or Pentium III. This seems to be correct for me as my target P2V is a Dell Optiplex GX1 with a Pentium III processor If you have these messages you have non-ACPI compliant system therefore you need to upgrade the HAL to MPS Multiproc PC. If you didnt have these messages then ACPI MultiProc would correct You only have two choices so you cant go wrong if the first doesnt work shutdown the VM and discard your changes (if you have set the disk to be undoable) or restore from backup

Upgrading the HAL.DLL 1. When you create the virtual machine ask for 2-CPUs 2. On first boot, if you look in Task Manager the OS still is using only one-CPU. This is because the HAL.DLL has not been updated 3. Right-Click My Computer and Choose Properties 4. Expand + Computer, and right-click Standard PC 5. Choose Properties 6. Select the Driver Tab in the dialog box and Click the Update Driver button 7. Click Next in the Wizard and choose Display a list of the known drivers for this device so I can choose a specific driver 8. Choose Show all hardware of this device class 9. Under the category of (standard computers) choose MPS MultiProcessor PC, like so:

Warning: If you select the wrong model from the list this will almost certainly cause a BSOD! 10. Choose Yes to the driver warning dialog box:

Note: Windows will copy the new drivers across. Choose Yes to reboot. Scary huh? 11. After the reboot task manager should show 2-CPUs where once it showed only 1-CPU Note: This should also work for Windows 2003 systems initially set-up with a single-cpu. Remember this isnt an issue for Windows XP Professional as SMP is NOT support in ESX for Windows XP Professional Enforcing a Graceful Power Down Note:

Even after upgrading the ACPI drivers, a virtual machine like this will still not power down gracefully you still get It is now safe to turn off your computer A work around for this problem is outline in Answer ID 1006 by adding gui.exitOnCLIHLT = TRUE to the .vmx file If you are manually adding this entry using nano or vi, the entry should be gui.exitOnCLIHLT = TRUE

Dealing with Windows 2003 Note: Ive tried doing the same procedure with Windows 2003 but through the GUI it wouldnt let me later I looked at the PDF guide for VMware and discovered what I was trying to do was unsupported. Technically, this is not supported Ive highlighted these in Yellow

It is also not supported by Microsoft either this outlined in MS KB 309283 which states.

If an incorrect HAL is forced during Setup or by using a System Preparation Image (Sysprep), you can see the correct list of HALs only if you perform a new installation of Windows XP or Windows Server 2003. You cannot change to a HAL other than what is listed in Device Manager. Device Device Manager does not permit the change from a Non-ACPI HAL to an ACPI HAL. You must use a new install of Windows XP or Windows Server 2003 for this kind of change. Change from an ACPI HAL to a NonACPI HAL only for troubleshooting purposes. One fix to this problem is to perform what Microsoft call a in-place upgrade or in other words a re-installation of Windows. This procedure is outlined in MS KB 315341 So I decide to ignore this and use Microsofts DevCon to force the appropriate HAL to be used as you were able to do previously in W2K but was removed in W2K3/XP. The reason being was that I was worried that in-place upgrade would destroy a lot of my configuration information. Microsoft caveat the in place upgrade quite heavily these quotes are taken from MS KB 315341 o You may lose data that is stored in the All Users folder and default program templates and settings that are stored in the Default User folder after you reinstall, repair, or upgrade Windows XP. You may be missing Start menu shortcuts, items in the Startup group, and documents, pictures, or music files that are stored in the Shared Documents folder. you perform an in-place upgrade of Windows, all existing restore points are removed and a new system checkpoint restore point is created after the in-place upgrade is completed. Do not perform an in-place upgrade if you may have to use System Restore to restore your computer to a previous state Backup copies of your registry files (in the %systemroot%\Repair folder) are also replaced after the in-place upgrade is completed. The registry files in the Repair folder are either from the first time that you started Windows XP or the last time that you used the Backup utility to back up your System State. Copy these registry backups to another location before you perform an in-place upgrade if you may have to use them after the in-place upgrade is completed If your computer requires a third-party mass storage device driver or HAL, make sure that you have a copy of the files on a floppy disk before you perform a repair or in-place upgrade

The sample script is below and this did the trick Notice how in this script I am using MPS_MP because my server does not support ACPI. If you virtual machine did support ACPI you would use ACPIAPIC_MP in the last three DevCon lines

@echo off cls rem Author: rem URL: rem Email: Mike Laverick http://www.rtfm-ed.co.uk support@rtfm-ed.co.uk

echo ==================================================== echo ==Upgrading Standard PC to Multiprocessor PC ====================== echo ==================================================== echo. echo Please Wait devcon sethwid @ROOT\PCI_HAL\0000 := !E_ISA_UP !ACPIPIC_UP !ACPIAPIC_UP !ACPIAPIC_MP !MPS_UP !MPS_MP !SGI_MPS_MP !SYSPRO_MP !SGI_MPS_MP > nul devcon sethwid @ROOT\ACPI_HAL\0000 := !E_ISA_UP !ACPIPIC_UP !ACPIAPIC_UP !ACPIAPIC_MP !MPS_UP !MPS_MP !SGI_MPS_MP !SYSPRO_MP !SGI_MPS_MP > nul devcon sethwid @ROOT\PCI_HAL\0000 := +MPS_MP > nul devcon sethwid @ROOT\ACPI_HAL\0000 := + MPS_MP > nul devcon update %windir%\inf\hal.inf MPS_MP > nul echo Done! echo. echo ==================================================== echo ==Script Completed======================================= echo ==================================================== echo. echo ==================================================== echo ==Press any key to reboot the Virtual Machine======================= echo ==================================================== pause > nul devcon reboot

Attempting a In Place Install Warning: This proceed can destroy data and configuration settings. I urge you to consult the MS KB article to find out what the risks are and how you can protect yourself from them. If in any doubt switch the VM to be in Undoable Mode You may need the OEM/Corp Licensing Keys during this procedure This procedure works with W2K/XP/W2K3 1. Attach the Windows CD ISO to your VM Virtual CD-ROM 2. Boot up the Virtual Machine 3. When the Press any key to boot from CD message appears on the screen, press a key to start your computer from the Windows CD. 4. You receive the following message on the Welcome to Setup screen that appears: This portion of the Setup program prepares Microsoft Windows to run on your computer: 5. To setup Windows now, press [ENTER] 6. Press [ENTER] to set up Windows 7. On the Windows Licensing Agreement screen, press [F8] to agree to the license agreement 8. Make sure that your current installation of Windows is selected in the box, and then press R to repair Windows

9. Follow the instructions that appear on the screen to reinstall Windows. After you repair Windows, you may have to reactivate your copy of Windows Note: At the end of this process my Standard PC settings where update to ACPI Multi-Processor

Vous aimerez peut-être aussi