It was done on two cores processor intel. windows xp sp2 rus.
1. Let`s start from variant when
you have core with ACPI (here and later i use core in means of
windows core-type of computer but not processor core).
it may be changed: device manager-hardware-computer-"multiprocessor`s computer with ACPI (for example) -upgrade driver-no-not this time- installation from pointed place- do not make finding i chosse driver myself. choose needed core in popup window. There are such cores as:
"Standart computer"
"Computer with ACPI"
"Singleprocessor computer with ACPI"
"Multiprocessor computer with ACPI"
"Singleprocessor computer with
MPS"
"Multiprocessor computer with MPS"
and there is one too:
"Multiprocessor Compaq SystemPro или 100% compatible"
Possibly it is needed remove sign "only compatible devices". but it rarely enhance number of accessible cores. Usually it is enough that set of cores that can be seed in popup window. I had accessible such cores as:
"Standart computer"
"Computer with ACPI"
"Multiprocessor computer with ACPI"
"Multiprocessor computer with MPS"
If there is no needed core in list
then it will appears after changing HardwareID: рис
рис
If we change HardwareID on
acpiapic_mp ->
appears string "Multiprocessor computer with ACPI"
acpipic_up -> "Computer with ACPI"
acpiapic_up
-> "Singleprocessor computer with ACPI"
mps_mp ->
"Multiprocessor computer with MPS"
e_isa_up ->
"Standart computer"
mps_up -> "Singleprocessor
computer with MPS"
possible values HardwareID can see in
WINDOWS\inf\hal.inf
Although you can point "acpiapic_up"
and in the list will appears all six types of cores. after rebooting
in device manager-computer will appears two records. One of this is
associated to core on which work computer now(active), another is
trace from previous core(nonactive). To differ each other is simple.
Right mouse button - on working core string "remove" is not
accessible. I do not recommend to remove non working(another word non
active) core. With its aim we can easily change one core to another
again and again. Do it as: click upgrade core on nonactive core,
then do it according algorithm described above. If you do not see
needed core in the list of available cores -you now know what you
have to do.
One remark- if you upgrade driver
through nonactive nonACPI core and you do not see needed core in the
list of available cores then you must change HardwareID in:
HKLM\SYSTEM\CURRENTCONTROLSET\ROOT\PCI_HAL\0000. That is if you have
active core "Singleprocessor computer with ACPI", and
nonactive core is "Standart Computer" and you want change
your core then you must "upgrade driver" on "Standart
computer" and if it is needed in registry
HKLM\SYSTEM\CURRENTCONTROLSET\ROOT\PCI_HAL\0000.
Если новое
ядро не поддерживается изначально, то есть если бы вы начали
установку с нуля, нажали F5 выбрали желаемое ядро и после этого
установка зависла бы, то в данном случае после перезагрузки компьютер
тоже не сможет загрузиться. Так , например , у меня было с
компьютером на плате intel D945PSN, попытка установки с нуля на ядре
"Многопроцессорный компьютер с MPS" не получилась.
2.
Следующий случай более практически интересный когда у вас изначально
установлено не ACPI ядро. Это может быть например ядро
"Многопроцессорный компьютер с MPS", но зачастую это
"Стандартный компьютер", который получается после
клонирования WINDOWS. Если нам нужно обновить ядро на НЕ ACPI, то
проблемы нет. Обращаемся к пункту один, в случае необходимости правим
реестр в HKLM\SYSTEM\CURRENTCONTROLSET\ROOT\PCI_HAL\0000\HardwareID.
Если нам нужно обновить ядро на ACPI, то правка HardwareID и
последующая перезагрузка приведет к краху. Все потому что если в
предыдущем случае при обновлении драйвера windows делает нужные
поправки в реестре и в системный файлах, то в этом случае только
частично делаются поправки в системных файлах и все. Поэтому
добавляем сами. Предположим нам нужно установить "Многопроцессорный
компьютер с ACPI" заходим в реестр и создаем раздел \0001: рис
Его легко создать из \0000 заменив значения параметров
DriverDesc, InfSection, MatchingDeviceId как показано на картинке, а
именно:
DriverDesc = Многопроцессорный компьютер с ACPI (так
как мы условились что хотим поставить для примера это ACPI ядро)
InfSection =ACPIAPIC_MP_HAL
MatchingDeviceId = acpiapic_mp
Далее создаем в реестре раздел как показано на картинке:рис
обратите внимание что параметр
Driver={4D36E966-E325-11CE-BFC1-08002BE10318}\0001 должен ссылаться
на 0001,а не 0000. То есть на раздел который мы создали на предыдущем
шаге.
его можно достаточно быстро создать, скопировав с
похожей ветки HKLM\SYSTEM\CURRENTCONTROLSET\ROOT\PCI_HAL\0000\ и
заменить значения параметров как на картинке. Раздел \0000\Control
содержит одну переменную :
DeviceReported = 1 тип DWORD
Раздел
LogConf пустой.
Далее создаем раздел: рис
находим в дистрибутиве файл acpi.sys и копируем его в
\system32\drivers\ , так как в случае не ACPI ядра его там нет.
Далее создаем в реестре раздел: рис
Далее создаем раздел: рис
Заметим параметр:
Driver={4D36E97D-E325-11CE-BFC1-08002BE10318}\0004
0004 -это
раздел в который пропишем устанавливаемое сейчас нами устройство
DeviceDesc=Microsoft ACPI-совместимая система. Возможно он уже занят,
это выяснится ниже и что делать тоже.
создаем также здесь, два
пустых раздела :
\PNP0C08\0\Control
\PNP0C08\0\LogConf
Далее создаем раздел: рис
Далее создаем раздел: рис
значение разделов 0001, 0002, 0003 итд, может так быть что
0004 как я писал выше уже занят каким либо устройством. Что делать.
Поищите в разделах 0001,0002,0003 итд устройство "Встроенный
динамик". пусть это будет папка 0005 удалите ее содержимое и
заполните так как на картинке раздел \0004. соотвественно нужно будет
вернуться в раздел в котором я обращал внимание на параметр
Driver={4D36E97D-E325-11CE-BFC1-08002BE10318}\0004 и поменять на
Driver={4D36E97D-E325-11CE-BFC1-08002BE10318}\0005 . Этими
манипуляциями мы создали в системе новое ядро-сырец и устройство
"Microsoft ACPI-совместимая система" ,которое будет
находиться в системных устройствах, как показано на картинке : рис
После перезагрузки в диспетчер оборудования-компьютер
появится запись "Многопроцессорный компьютер с ACPI",
помимо "Стандартный компьютер". Осталось это ядро-сырец
превратить в полноценное и активировать. выберите обновить драйвер у
ядра "Многопроцессорный компьютер с ACPI", в списке ядер
выберите опять же "Многопроцессорный компьютер с ACPI" и
после перезагрузки WINDOWS заработает на этом ядре. Удалять
неактивное ядро опять же не рекомендую по аналогии с первым пунктом.
Из всего написанного можно сделать вывод, что лучше
изначально устанавливать windows с ядром с ACPI , так как обновить
его на любое другое можно достаточно быстро. А если выполняется
операция клонирования windows и ставится ядро "Стандартный
компьютер" то второе неактивное ядро удалять не нужно. так как
если компьютер изначально имел ACPI ядро то потом после клонирования
, можно будет вернуть обратно ядро ACPI на новой машине, путем всего
лишь "обновить драйвер" .даже редакция hardwareid в этом
случае зачастую не нужна.
вообще даже бывает что по три ядра
как бы устанавливается в windows. одно активное и два одинаковых
неактивных.
это связано с значениями чисел 0000 и 0001 в разделах
...\enum\root\acpi_hal\0000 и в параметре
driver={4D36E966-E325-11CE-BFC1-08002BE10318}\0001 который в нем.
лишнее 3 ядро можно удалить, правда если просто через "удалить"
в диспетчер оборудования, то оно опять определится после
перезагрузки. остается через реестр.
Также хочу сказать
как перед заменой ядра обеспечить пути отступления. можно загрузиться
с winpe , сохранить system32\config, system32\drivers,
system32\hal.dll , ntoskrnl.exe, ntkrnlpa.exe и в случае неудачи
переписать файлы обратно. Но этот вариант не всегда применим,
например, в случае когда бутовый раздел зашифрован с помощью drive
crypt plus pack. Есть другой путь, сохраним необходимые компоненты
ядра виндовс и ветку реестра которые позволят в случае краха спокойно
загрузиться со старым ядром.
Сохраняем отдельно файлы hal.dll
, ntoskrnl.exe, ntkrnlpa.exe, переименовываем их ----->halchk.dll
, ntoschk.exe, ntknlpachk.exe. и записываем обратно в \system32
Обратите внимание, сохранить нужно не только hal.dll ,
ntoskrnl.exe, но и ntkrnlpa.exe , так как при замене типа компьютера
с многопроцессорного на однопроцессорный и наоборот этот файл
изменяется системой.
добавляем в boot.ini строку
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft
Windows XP Professional RU" /fastdetect /kernel=ntoschk.exe
/hal=halchk.dll
Далее переустанавливаете ядро. Перед
последней перезагрузкой проверьте лежит ли acpi.sys в
\system32\drivers\, Иногда при установке не ACPI ядра он удаляется и
становится невозможным откат с помощью этого метода обратно к
исходному ACPI ядру.
Если новое ядро не пошло , то жмете F8
выбираете пункт «загрузка последней удачной конфигурации»
жмете enter и выбираете строчку где мы добавили ntoschk.exe
halchk.dll.
Так же хотелось бы обратить внимание на утилиту
Advanced Last Known Good которую
написал Oleg V. Golub., она позволяет сохранять ветку реестра на
которую ссылается HKEY_LOCAL_MACHINE\SYSTEM\Select\ LastKnownGood
сколько угодно долго нетронутой.
Вот как сам автор описывает
рациональность его утилиты ; Часто система
рушится при попытке
программ пользовательского уровня
получить доступ к процессам
ядра ОС или активизировать
драйверы или фильтры, установленные
самой программой.
Но "хорошая" конфигурация уже
сохранена, но не является
таковой! Причем, если программа,
использующая драйверы,
запускается из StartUp или из
"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
то требуется цирковая ловкость, чтобы остановить
процесс до
крушения системы.»
:) мои картинки с подписями
рис
1
рис 2
рис
3
рис 4
рис
5
рис 6
рис
7
рис 8
рис
9
рис 10
рис
11
рис 12
рис
13
рис 14
:)
теперь я знаю как еще быстрее изменить тип компьютера с
"Стандартный компьютер" на "Компьютер
(Многопроцессорный компьютер) с ACPI".
1.в acpi.inf
закомментировать строку
ExcludeFromSelect = *
2. в
hal.inf строки
%ACPIPIC_UP.DeviceDesc% = ACPIPIC_UP_HAL,
ACPIPIC_UP, ACPIAPIC_UP, ACPIAPIC_MP
%ACPIAPIC_MP.DeviceDesc% =
ACPIAPIC_MP_HAL, ACPIAPIC_MP, ACPIAPIC_UP
изменить на
%ACPIPIC_UP.DeviceDesc% = ACPIPIC_UP_HAL, ACPIPIC_UP,
ACPIAPIC_UP, ACPIAPIC_MP E_ISA_UP, MPS_UP, MPS_MP
%ACPIAPIC_MP.DeviceDesc% = ACPIAPIC_MP_HAL, ACPIAPIC_MP,
ACPIAPIC_UP, E_ISA_UP, MPS_UP, MPS_MP, ACPIPIC_UP
3.
диспетчер устройств-тип компьютера-обновить
драйвер-"Компьютер(Многопроцессорный компьютер) с ACPI". не
перезагружаем.
4. установка нового оборудования-системные
устройства-Microsoft-Microsoft ACPI совместимая система. не
перезагружаем.
5. SYSTEM\Current Control Set\Enum\Root\SYSTEM
удаляем подраздел в котром device desc="Microsoft ACPI
совместимая система"
6. перезагрузка.готово.