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. перезагрузка.готово.

Сайт управляется системой uCoz