Итак, если гостевая система Windows XP или 2003 изначально была установлена с использованием одного виртуального процессора, то дальнейшее добавление виртуальных ядер в конфигурации домена никак не повлияет на увеличение процессоров в самой виртуальной машине. Дело в том, что при установке Windows было использовано ядро системы, которое работает только с одним процессором. На форумах советуют переустановить систему. Но можно сделать все грамотно и быстро.
первым делом, убедитесь, что в конфигурационном файле домена у вас установлены параметры:
kernel = "hvmloader" builder='hvm' vcpus=2 (и более) acpi=1 apic=1
далее нам необходимо взять с дистрибутива Windows следующие файлы ядра для многопроцессорных систем:
halmps.dll, ntkrnlmp.exe, ntkrpamp.exe
не забываем, что в дистрибутиве эти файлы запакованы, и выглядят так:
halmps.dl_, ntkrnlmp.ex_, ntkrpamp.ex_
для распаковки используем утилиту expand.exe, которая обычно находится в том же дистрибутиве ([компакт-диск]:\I386\expand.exe) следующим образом:
cd [компакт-диск]:\I386\ expand halmps.dl_ c:\Temp\halmps.dll expand ntkrnlmp.ex_ c:\Temp\ntkrnlmp.exe expand ntkrpamp.ex_ c:\Temp\ntkrpamp.exe
если файла ntkrpamp.exe у вас нету (а он нужен обязательно), то можно его поискать в сервис паках на жестком диске, или в Интернете. Также прикладываю сюда все три файла для Win2k3:
halmps.dll (779 Загрузок)
ntkrnlmp.exe (659 Загрузок)
ntkrpamp.exe (734 Загрузки)
далее нам необходимо ОБЯЗАТЕЛЬНО сделать резервные копии файлов текущего ядра:
copy c:\windows\system32\hal.dll c:\windows\system32\hal_backup.dll copy c:\windows\system32\ntoskrnl.exe c:\windows\system32\ntoskrnl_backup.exe copy c:\windows\system32\ntkrnlpa.exe c:\windows\system32\ntkrnlpa_backup.exe
также следует выполнить поиск данных файлов по всей папке WINDOWS и переименовать их, т.к. при замене нами файлов ядра они автоматически восстановятся из копий, находящихся в DLLCache, и папках установки сервис паков
делаем замену системных файлов таким образом,
чтобы halmps.dll — стал hal.dll,
ntkrnlmp.exe — ntoskrnl.exe,
ntkrpamp.exe — ntkrnlpa.exe:
copy c:\temp\halmps.dll c:\windows\system32\hal.dll copy c:\temp\ntkrnlmp.exe c:\windows\system32\ntoskrnl.exe copy c:\temp\ntkrpamp.exe c:\windows\system32\ntkrnlpa.exe
завершающим этапом будет двойная перезагрузка, после чего мы получим систему с количеством ядер, ограниченным лишь сборкой системы (Web Edition, Standard, Enterprise, и т. д.)
также, если при установке системы в конфигурационном файле домена у вас не был задан параметр acpi=1 то домен просто перестанет автоматически уничтожаться (выключаться) при команде на выключение и остановится фактически работать с сообщением «Теперь питание компьютера можно отключить». Если есть идеи, как это побороть — вэлкам в комментарии.
по материалам:
http://ru.wikipedia.org/wiki/Ntoskrnl
http://www.linuxforums.org/forum/red-hat-fedora-linux/136863-xen-how-add-vcpus-windows-guest.html
http://support.microsoft.com/kb/810903/ru
http://forum.oszone.net/thread-59111-3.html
[для поисковика: xen; xen open source; windows xp, 2003; vcpus; ядро, процессор; hal, ntoskrnl, ntkrnlpa]