Как перенести Windows на новый дисковый контроллер (RAID,SCSI,SATA,PATA) без переустановки заново или поверх

Чтобы все получилось необходимо понимать синтаксис inf файлов, в этом несколько поможет статья

Алгоритм:
--------------------------------------------------------------------------------------
a.изучить inf файл от контроллера и выполнить все,что там написано в ручную (работа с файлами и реестром).

b.узнать из inf файла (или с помощью WINPE) HardwareID и прописать его в HKLM\SYSTEM\CONTROL\CRITICALDEVICEDATABASE.
в этом же разделе прописать параметры ClassGUID -соответствующий SCSI(рис.k) и Service.

c.удалить параметры в HKLM\SYSTEM\MountedDevices. Удалить параметр HKEY_LOCAL_MACHINE\SYSTEM\Select\SystemPartition

d.(если PATA IDE или SATA IDE) прописать в CRITICALDEVICEDATABASE atapi,pciide,intelide (и ряд других) и перекопировать их *.sys файлы (Об этом пишет Microsoft в kb314082. Но все оттуда нам не нужно, этого достаточно.

e.перекопировать WINDOWS на новый контроллер.перезагрузка.готово.

f. если новый контроллер уже присутствует в диспетчере устройств, то пункты a,b,d пропускаем.
-------------------------------------------------------------------------------------
Для примера новый контроллер взят SATA RAID Sil 3114:
рис.1 рис.2 рис.3 рис.4 рис.5 рис.6 рис.7 рис.8 рис.9 рис.10 рис.11 рис.12 рис.13 рис.14 рис.15
при работе с inf файлом ,для успешной установки дискового контроллера обязательно должны быть сделаны записи в трех разделах реестра:
Class
Critical Device Database
Service
если переносим windows на pata ide контроллер (sata ide контроллер), то с inf файлом можно не разбираться. новый контроллер можно прописать в реестре как "стандартный контроллер IDE".

он обслуживается atapi.sys pciide.sys pciidex.sys они должны лежать в system32\drivers.
classом в данном случае будет "IDE ATA/ATAPI контроллеры". в Critical Device Database пишем pci#ven_xxxx&dev_yyyy,
где ven_xxxx&dev_yyyy быстро можно подсмотреть в winpe(запущенном на новом контроллере) или в inf файле контроллера (обычно в драйверах чипсета платы). в service должен быть прописан PCIIDE и эта служба должна быть установлена в состояние "загружать при загрузке windows". То есть HKLM\SYSTEM\CurrentControlSet\Services\PCIIde\Start=0

в Class всегда присутствуют такие поля:
DriverDate
DriverDesc
DriverVersion
InfPath
InfSection
MatchingDeviceID
ProviderName

Их значение всегда можно выяснить в inf файле драйвера, из них минимально нужно.:
DriverDesc
InfPath
InfSection
MatchingDeviceID

Тип всех этих параметров REG_SZ.

пример для Class:

DriverDesc, REG_SZ, Многопроцессорный компьютер с ACPI
InfPath, REG_SZ, hal.inf
InfSection, REG_SZ, ACPIAPIC_MP_HAL -точка входа
MatchingDeviceID, REG_SZ, acpiapic_mp -самое трудное для определения из inf файла, обычно добавляется в Critical Device Database , по идее если есть раздел в Service

как определить DriverDesc и MatchingDeviceID. Ищи в inf файле такую строку
xxxxxxxxxx.DeviceDesc=yyyyyyyyyy
xxxxxxxxxx=MatchingDeviceID
yyyyyyyyyy=DriverDesc

в разделе Service пишем все что в inf.
Один момент ImagePath=тип REG_EXPAND_SZ

в разделе Critical Device Database
слева MatchingDeviceID (раздел), справа (параметры) ClassGUID=классу, Service=сервису.

в inf файле :
0x00000000=REG_SZ
0x00020000=REG_EXPAND_SZ
0x00010001=DWORD

по идее секция [hdc] в inf нужна windows для того чтобы определить точку входа на основе ENUM/PCI/Vendor&dev&Subsys

по поводу синтаксиса- в inf файле запись HKR=текущее положение в реестре.
зачастую драйвера от чипсета запакованы в install shield формате в файлах .cab Их можно раскрыть с помощью программ WINPACK(бесплатная) или ZIPSCAN.

:)
усовершенствованный способ:
a.панель управления-установка нового оборудования-указываем inf файл от нового контроллера.

b.удалить параметры в HKLM\SYSTEM\MountedDevices. Удалить параметр HKEY_LOCAL_MACHINE\SYSTEM\Select\SystemPartition

c.перекопировать WINDOWS на новый контроллер.перезагрузка.готово.

d. если новый контроллер уже присутствует в диспетчере устройств, то пункт a пропускаем.

:)
Для запуска WINDOWS на другом дисковом контроллере обычно достаточно из уже работающего НА НОВОМ КОНТРОЛЛЕРЕ WINDOWS
1)перекопировать файлы System32 ,System32\drivers
2)перекопировать CriticalDeviceDataBase
3)Перекопировать Services
Копировать в пунктах 1,2,3 Нужно конечно не все а только соответствующее контроллеру.
(например, если вручную правильно не удается прописать драйвер нового контроллера в систему, то можно быстренько поставить на новый контроллер голую виндовс, а затем готовые настройки перенести в ту виндовс которую хотим перенести)

:)
был снят образ с включенного компьютера с помощью ntbackup
после всех необходимых шагов на новом компьютере вылетал синий экран

stop: c000021a
блабла session manager initialization 0xc000026c {0x000 000 00 0x 000 000 00}

ошибка решается заменой файла

WINDOWS\system32\win32k.sys

на исправный. ! :)
неясно почему в ntbackup образе он был испорчен.

:)

windows 2003 был установлен на fat32. Снял образ через ntbackup.
Перенес на другой компьютер на ntfs, но после ввода пароля происходил сразу logout. Потом в итоге понял. Logout происходил из за того что разрешения на папки и файлы на разделе ntfs куда я восстановил windows были следующие : system-full, администраторы full, пользователи -читать, запускать. (так как такие разрешения были по умолчанию на корневой каталог ntfs раздела и унаследовались на все папки и файлы, а разархивировал я без опции «восстановить параметры безопасности»). Поменял разрешения на корень : все – full . И получилось :)!.
далее проверил. Если за-ntbackup-ить файлы c fat32 затем восстановить с «восстановить параметры безопасности» на ntfs, то пермишнс будут на восстановленные файлы все-full. В не зависимости от того какие пермишнс были у корня.
То есть если бы я разархивировал с fat32 с опцией «восстановить параметры безопасности» то не столкнулся бы с проблемой login-logout-loop.

:)

мучился пару часов windows не хотел с celeron p4-1800 переноситься на piii, а именно наинал грузиться и замирал с черным экраном. Думал что из-за того что исходник был на втором разделе а подкачка на первом а цель наоборот, потом всоопомнил что отключил в диспетчере устройств контроллеры ata так как на исходнике они не использовались а на источнике как раз с них загрузка. Все это устранил но не помогло. Потом подумал что это биос с плохим acpi но это не вязалось с тем что до этого на компе цели стоял win2003 с acpi ядром, но все же я полез вдиспетчер устройств чтобы поменять ядро на стандартный компьютер и вот оно , оказывается на источнике стоит ядро "многопроцессорный компьютер с одним процессором" (почему такое яддро там установил уже и не помню) и сразу прояснилось вспомнил что cpu-z показывал что celeron 1800 имеет поддержку многопроцессорности, а piii нет. Вот и ответ. Как только поменял яддро на "компьютер с acpi" все заработало :)

:)

как узнать HardwareID который состоит из VendorID и DevID c помощью Linux а не WindowsPE к примеру.

в этом поможет lspci. подробнее смотри в записной книжке.

:)
в большинстве случаев чтобы успешно перенести нужно только прописать HardwareID нового контроллера в CriticalDeviceDatabase. кстати поэтому Windows Vista легко переносится (в том смысле что не выскаивает bsod 0x07) потому что если посмотреть в ее CriticalDeviceDatabase то там прописана огромная туча HardwareID.

:)
переносил на другой контроллер. исходный windows имел системным диском не c: а e:. перенес на новый винчестер простым копированием через третью систему. подводные встреченные камни. a) перекопирваол только ntldr boot.ini и другие корневые файлы и папку windows а Program Files и Document Settings забыл. b) в bios нужно было выставить что acpi контроллер включен (компьютер старый), c) когда система первый раз стартанула и запустилась то никак не появлялось окно где нужно вводить пароль, догадался что так как системныйдиск был e: а после смены винчестера новый винчестер был обозван системой естественно как c: в итоге засунул новый винчестер в другой комп залез в реестр и изменил букву system\mounted devices с \DosDevies\C: на \DosDevices\E: и все сработало.
параллельно выяснилась еще одна фишка windows типа того что можно для одного раздела иметь несколько букв одновременно. для этого (повторно не проверял) по идее нужно в mounted devices создть копию \DosDevies\C: и обозвать ее \DosDevies\E:

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