Об онанизме, мазохизме, SATA контроллерах и AHCI режимах
Перенос моей статьи, для истории, из ЖЖ (livejournal.com)
Провел давеча бесчеловечные экскременты эксперименты по загрузке .WIM образа Windows XP на компьютере с Intel SATA AHCI Controller снятого в оригинале с НЖМД подключенного к Standart IDE. Эксперименты удались!
Лаборатория:
-HP ноутбук с Intel набором логики ICH8
-режим работы дискового контроллера для снятия базового образа SATA Emulation = Enable as IDE
-на диске создана одна единственная первичная партиция занимающая весь диск и туда поставлен виндовоз
-препарированный sysprep'ом образ (use pnp detection + use mini setup = YES) нагло помещен в контейнер WIM
-над этим образом далее и производилась главная интрига
Кулинарный рецепт:
1. копируем в \windows\system32\drivers файлы *.SYS (iastor.sys)
2. копируем в \windows\inf файлы *.inf (iastor.inf + iaahci.inf)
3. копируем в \windows\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} файлы *.cat (iastor.cat + iaahci.cat)
4. монтируем файл реестра \windows\system32\config\system в HKLM\temp (reg load HKLM\Temp \WINDOWS\system32\config\system)
5. теперь начинается самая "магическая" стадия:
5.1 открываем iaahci.inf в notepad
5.2 открываем редактор реестра regedit и идем по пути HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase
5.3 заглядываем в notepad и выискиваем все строчки по маске PCI\VEN_***&DEV_***
5.4 для каждой такой строки (например PCI\VEN_8086&DEV_2829&CC_0106) создаем соответствующий ключ в
...\CriticalDeviceDatabase\ ЗАМЕНЯЯ(!) в строке \ на #. Тоесть в нашем случае появятся ключи:
HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\PCI#VEN_8086&DEV_2653&CC_0106
HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\PCI#VEN_8086&DEV_2681&CC_0106
HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\PCI#VEN_8086&DEV_27C1&CC_0106
HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\PCI#VEN_8086&DEV_27C5&CC_0106
HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\PCI#VEN_8086&DEV_2821&CC_0106
HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\PCI#VEN_8086&DEV_2829&CC_0106
HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\PCI#VEN_8086&DEV_2922&CC_0106
HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\PCI#VEN_8086&DEV_5029&CC_0106
5.5 Идем снова в наш .inf файл в notepad и смотрим в секцию [version] там будет параметр ClassGuid. Запоминаем его значение. Теперь смотрим на первое значение (до запятой!) параметра AddService и запоминаем его.
5.6 Возвращаемся в regedit. В каждой подветке созданной выше создаём два параметра типа REG_SZ:
"ClassGUID"=подсмотренному идентификатору в пункте 5.5 ({4D36E96A-E325-11CE-BFC1-08002BE10318})
"Service"=подсмотренному значению AddService в пункте 5.5 (iaStor)
5.7 Теперь создаем ключ c названием равным названию сервиса в HKLM\Temp\ControlSet001\Services\.
(HKLM\Temp\ControlSet001\Services\iaStor)
5.8 Сейчас мы должны создать немаленькое число параметров в этом ключе:
"Type"=00000001 (REG_DWORD)
"Start"=00000000 (REG_DWORD)
"Group"="SCSI miniport" (REG_SZ)
"ErrorControl"=00000001 (REG_DWORD)
"ImagePath"="system32\drivers\iaStor.sys" (REG_EXPAND_SZ)
"Tag"=00000019 (REG_DWORD)
"DisplayName"="AHCI Chip" (REG_SZ)
5.9 Размонтируем куст реестра (reg unload HKLM\Temp)
Перезагружаем машину и она подымается с контроллером работающим в нативном SATA режиме (AHCI)
Надо будет как-нить найти время и налабать скрипт автоматизирующий все эти шаги дабы было совсем крутуазно =)
There are no published comments.
New comment