Può capitare, nel migrare una macchina fisica in vmware, o nel riprogettare i carichi di lavoro delle virtual machine stesse, di avere dei sistemi windows dotati di cpu multiple non necessarie e di voler reimpostare questi sistemi a singola cpu.
Mike Laverick ha scritto un ottimo documento a riguardo, comprensivo di uno script che realizza tutte le operazioni necessarie e che trovate di seguito.
Unico prerequisito, installare i Support Tools per avere a disposizione l’eseguibile DevCon.exe presente nello script.
@echo off
:DRIVER_HAL_UPDATE
SET HAL=
IF %NUMBER_OF_PROCESSORS%==1 (
devcon.exe /find @ROOT\ACPI_HAL\0000 | find /i “Multiprocessor” > NUL && SET HAL=ACPIAPIC_UP
devcon.exe /find @ROOT\PCI_HAL\0000 | find /i “Multiprocessor” > NUL && SET HAL=MPS_UP
) ELSE (
devcon.exe /find @ROOT\ACPI_HAL\0000 | find /i “Uniprocessor” > NUL && SET HAL=ACPIAPIC_MP
devcon.exe /find @ROOT\PCI_HAL\0000 | find /i “Uniprocessor” > NUL && SET HAL=MPS_MP
)
IF NOT “%HAL%”==”” (
ECHO.
ECHO —————————————-
ECHO Installing %HAL% HAL
ECHO —————————————-
ECHO.
devcon.exe 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
devcon.exe 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
devcon.exe sethwid @ROOT\PCI_HAL\0000 := +%HAL%
devcon.exe sethwid @ROOT\ACPI_HAL\0000 := +%HAL%
devcon.exe update %windir%\inf\hal.inf %HAL%
devcon.exe ReScan
ECHO.
ECHO —————————————-
ECHO Rebooting
ECHO —————————————-
ECHO.
devcon.exe Reboot
) ELSE (
ECHO.
ECHO —————————————-
ECHO Correct HAL Detected
ECHO —————————————-
ECHO.
)
GOTO :EOF