Bienvenido! - Willkommen! - Welcome!

Bitácora Técnica de Tux&Cía., Santa Cruz de la Sierra, BO
Bitácora Central: Tux&Cía.
Bitácora de Información Avanzada: Tux&Cía.-Información
May the source be with you!

Thursday, June 17, 2010

Intel SATA IDE -> AHCI/RAID


Source THANKS!!!!
Cambiar una controladora Intel SATA de modo de emulación IDE
a AHCI/RAID:
Debido a la gran cantidad de usuarios que están preguntando esto mismo he decidido crear este minitutorial, válido para todas las controladoras AHCI/RAID de Intel para las cuales Intel ofrece controladores para Windows XP/Server 2003. En este minitutorial se supone que Windows inicia perfectamente en modo de emulación de IDE, pero no en AHCI ni en RAID, con lo cual será necesario preinstalar de alguna forma el controlador respectivo.
Antes que nada descargaremos este archivo de la web de Intel y descomprimimos el contenido en la carpeta \WINDOWS\AHCI-RAID. A su vez, el archivo IaStor.sys lo copiamos a la carpeta \WINDOWS\system32\drivers.
Ahora, abrimos el editor de registro y nos desplazamos a la rama HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion. Dentro de ésta editamos la entrada DevicePath y la modificamos para que su valor sea:
%SystemRoot%\inf;%SystemRoot%\AHCI-RAID.
Ahora sólo tenemos que copiar el contenido del archivo .reg siguiente en un bloc de notas, guardarlo como .reg (no como .reg.txt) y con codificación Unicode e importarlo al registro con doble clic. Con esto finaliza el proceso y Windows ya deberá iniciar perfectamente, instlando automáticamente el controlador dado que lo tiene en el Valor DevicePath.
Código:

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_2681&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_2682&CC_0104]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_27C1&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_27C3&CC_0104]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_27C5&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_27C6&CC_0104]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_2821&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_2822&CC_0104]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_2829&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_282A&CC_0104]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_2922&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_2929&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
\PCI#VEN_8086&DEV_3A22&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iaStor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\iaStor]
"Type"=dword:00000001
"Start"=dword:00000000
"Tag"=dword:00000000
"ErrorControl"=dword:00000001
"LoadOrderGroup"="SCSI Miniport"
"ImagePath"="system32\\DRIVERS\\iaStor.sys"
Este artículo está presente en el propio foro, donde hay un hilo abierto donde se resuelven las dudas pertinentes.
Introducción
En este artículo intentaré desmontar un mito que yo también asumí durante bastante tiempo: El hecho de que cambiar la placa base de un equipo implica sí o sí reinstalar desde 0 el sistema operativo Windows XP/Server 2003, lo que se conoce coloquialmente como formatear. Así, con estas instrucciones dirigidas a usuarios de Windows de nivel medio o avanzado cualquiera podrá actualizar/reemplazar la placa base y otros componentes sin tener que reinstalar desde 0 ni reparar su SO Windows XP/Server 2003, conservando sus programas, actualizaciones de Windows, documentos, preferencias... intactas. Y de seguir el procedimiento correctamente será prácticamente indistiguible el si se instaló limpiamente o se trasplantó dicha instalación.
Estas instrucciones son sólo para realizar la migración de un equipo existente a una placa base nueva, no para crear una instalación maestra de Windows XP/Server 2003 para implantar en varios equipos, incluso con hardware diferente. En este caso, debería usarse la utilidad de preparación del sistema de Microsoft sysprep.exe, sobre la cual hay bastante información en la web de Microsoft y en otras.
Cuando se sustituye la placa base la configuración de hardware de cara al sistema operativo experimenta un cambio drástico. El chipset con toda seguridad ya no será el mismo, por lo que cambiarán los dispositivos centrales que están incluidos en éste, como los puentes de PCI a PCI, los de PCI a ISA (aunque desde hace años ninguna placa base lleva ranuras ISA, este bus sigue presente en ellas), los de CPU a PCI, el bus SM y otros dispositivos secundarios típicamente integrados en los chipsets modernos o bien presentes en algún chip externo al chipset: Controladoras IDE, SATA con o sin AHCI/RAID, USB, IEEE-1394, sonido, red y puede que la gráfica si es IGP. También es probable que hayamos cambiado la CPU, añadido memoria, nuevos discos duros y unidades ópticas, alguna nueva gráfica dedicada... Todo esto lo deberá redetectar el sistema operativo para poder funcionar correctamente. Y en el caso de los dispositivos PCI/AGP/PCIe en tarjetas dedicadas también los deberá redetectar, aunque ya estuvieran presentes en la configuración anterior debido a que con toda seguridad lo que se conocen como líneas INT # habrá variado (cualquier usuario que haya cambiado de ranura una tarjeta PCI habrá comprobado que el sistema operativo la debe redetectar por esta misma razón).
De todos los cambios, los más críticos de cara a realizar el trasplante de la instalación de Windows XP/Server 2003 a un hardware nuevo son el de la controladora de disco (ya sea IDE, SATA, SCSI o SAS) donde esté conectado el disco donde resida el sistema operativo y el de la capa de abstracción de hardware, HAL.
Empecemos a describir el cambio de controladora de disco y cómo evitarlo:
Cuando el cargador del sistema NTLDR lee el archivo boot.ini y se encuentra con que la línea de carga del SO que debe iniciar usa la sintaxis ARC multi(0)disk(0)rdisk(n)partition(n) (también es posible que exista una línea scsi(n)disk(n)rdisk(n)partition(n) para controladoras SCSI sin BIOS, en cuyo caso deberá existir en el directorio raíz de la unidad de inicio una copia del archivo de controlador de la controladora renombrado a NTBOOTDD.SYS) asume que debe apoyarse en un servicio proporcionado por la BIOS llamado INT13 para acceder al disco, leer y cargar en memoria archivos como el núcleo de Windows, la HAL, la DLL de la API nativa NTDLL.DLL, los archivos del registro SYSTEM y SOFTWARE y los controladores configurados para arrancar durante el proceso de inicio del sistema operativo (con valor de la entrada Start=0). Luego, pasa a ejecutar el núcleo y los controladores que cargó, para dejar de depender de la INT13 y continuar con el proceso de carga de Windows. Si en este momento no había cargado en la fase previa un controlador de dispositivo apto para la controladora de disco donde reside el disco del sistema o éste está inhabilitado, Windows se parará con una pantalla de detención con el error 0x7B, INACCESSIBLE_BOOT_DEVICE. Si el sistema se reinicia e impide verlo, simplemente se pulsa F8 antes de que empiece la carga de Windows y se escoge en el menú la opción de desactivar el reinicio automático en caso de error del sistema (disponible en Windows XP con SP2/SP3 y en Windows Server 2003 con SP1/SP2). Este error significa que Windows ha perdido el acceso a la partición de sistema durante el proceso de carga. Según la documentación de Microsoft, el primer parámetro indica una dirección que hace referencia al objeto que no se pudo montar durante el arranque o bien a una cadena que contiene el nombre de especificación ARC del dispositivo desde donde intentó arrancar.

Descrito el problema, veremos a ver cómo evadirlo y conseguir que deje de impedir que inicie el sistema una vez trasplantado.
Existen en Internet y en foros de Internet muchas otras guías sobre este tema, pero ésta supera a cualquiera que se haya visto. La mayoría de otras guías sólo tratan el supuesto de que la placa base que debe reemplazarse está todavía operativa y que es posible iniciar el sistema Windows. Así, son completamente inútiles en caso de que la placa base que haya que sustituir no funcione, tengamos que reemplazarla y, tras lo cual, Windows no inicia con error 0x7B, hecho ante el que la mayoría de usuarios optará por iniciar con el CD y reparar la instalación o incluso reinstalar limpiamente dada la falta de información de cómo agregar controladores a una instalación no iniciada desde otro entorno. Además, esas guías normalmente son sólo útiles si la controladora IDE/SATA de disco donde se colocará el disco de sistema en la placa nueva es accesible a través del controlador estándar PCI IDE de Windows, excluyendo por tanto la posibilidad de migrar a una nueva controladora IDE RAID o SATA en modo AHCI/RAID, además de alguna SCSI o SAS. Y por último, tampoco indican cómo cambiar la capa de abstracción de tal modo que se permita cualquier cambio de HAL, incluso a una superior, sin necesidad de reinstalar nada. Este tema puede parecer demasiado largo, pero nada de qué preocuparse. Simplemente, leed la parte que os concierne y, además, su lectura se hace rápida.
Si la PB actual funciona... >>

Si la placa base no funciona:
Si la placa base actual está muerta y la hemos tenido que reemplazar, tras lo cual Windows XP/Server 2003 no inicia podremos seguir estos pasos (si inicia, tan sólo tendremos que seguir los pasos de limpieza del mensaje anterior y los retoques finales, dependerá de los controladores de almacenamiento masivo que estuvieran instalados):
En este caso nos ayudaremos de BartPE para completar el proceso y tener acceso a una instalación de Windows no operativa. Descargaremos PEBuilder y lo instalaremos en la ubicación por defecto. Luego, necesitaremos tener a nuestro alcance un origen de instalación de Windows XP con SP1 como mínimo o bien de Windows Server 2003, ya sea en una unidad de disco duro o en un CD/DVD.
Antes de hacer nada, tenemos que plantearnos si las controladoras de disco donde usaremos el BartPE requieren o no un controlador de un tercero mediante lo de F6. BartPE puede acceder nativamente a las mismas controladores de disco que el SO que se utilizó como base para construirlo. Si es así, tan sólo tendremos que ir a la carpeta drivers\SCSIAdapter y copiar en carpetas separadas los controladores IDE/RAID/SATA/SCSI/SAS necesarios, todos los que necesitemos. Es necesario editar la sección [SCSI] de cada uno de los archivos txtsetup.oem para quitar referencias a entradas que no sean para Windows XP x86 o por lo menos colocar un punto y coma delante.
[SCSI] ; HwComponent section
Si3114r_XP = "Silicon Image SiI 3114 SATARaid Controller for Windows XP/Server 2003"
Si3114r_NT = "Silicon Image SiI 3114 SATARaid Controller for Windows NT 4.0 and 2000"
Debe quedar así:
[SCSI] ; HwComponent section
Si3114r_XP = "Silicon Image SiI 3114 SATARaid Controller for Windows XP/Server 2003"
;Si3114r_NT = "Silicon Image SiI 3114 SATARaid Controller for Windows NT 4.0 and 2000"
Un ejemplo más complejo:
Ultra133TX2_2003 = "Win2003 Promise ULTRA133 TX2 (tm) Controller", Ultra
Ultra100TX2_2003 = "Win2003 Promise ULTRA100 TX2 (tm) Controller", Ultra
Ultra100_2003 = "Win2003 Promise ULTRA100 (tm) Controller", Ultra
Ultra100_2003_2 = "Win2003 Promise ULTRA100 (tm) Controller (PDC20265)", Ultra
Ultra66_2003 = "Win2003 Promise ULTRA66 (tm) Controller", Ultra
Ultra33_2003 = "Win2003 Promise ULTRA33 (tm) Controller", Ultra
Ultra133TX2_xp = "WinXP Promise ULTRA133 TX2 (tm) Controller", Ultra
Ultra100TX2_xp = "WinXP Promise ULTRA100 TX2 (tm) Controller", Ultra
Ultra100_xp = "WinXP Promise ULTRA100 (tm) Controller", Ultra
Ultra100_xp_2 = "WinXP Promise ULTRA100 (tm) Controller (PDC20265)", Ultra
Ultra66_xp = "WinXP Promise ULTRA66 (tm) Controller", Ultra
Ultra33_xp = "WinXP Promise ULTRA33 (tm) Controller", Ultra
Ultra133TX2_nt5 = "Win2000 Promise ULTRA133 TX2 (tm) Controller", Ultra
Ultra100TX2_nt5 = "Win2000 Promise ULTRA100 TX2 (tm) Controller", Ultra
Ultra100_nt5 = "Win2000 Promise ULTRA100 (tm) Controller", Ultra
Ultra100_nt5_2 = "Win2000 Promise ULTRA100 (tm) Controller (PDC20265)", Ultra
Ultra66_nt5 = "Win2000 Promise ULTRA66 (tm) Controller", Ultra
Ultra33_nt5 = "Win2000 Promise ULTRA33 (tm) Controller", Ultra
Ultra133TX2 = "WinNT Promise ULTRA133 TX2 (tm) Controller", Ultra
Ultra100TX2 = "WinNT Promise ULTRA100 TX2 (tm) Controller", Ultra
Ultra100 = "WinNT Promise ULTRA100 (tm) Controller (PDC20267)", Ultra
Ultra100_2 = "WinNT Promise ULTRA100 (tm) Controller (PDC20265)", Ultra
Ultra66 = "WinNT Promise ULTRA66 (tm) Controller", Ultra
Ultra33 = "WinNT Promise ULTRA33 (tm) Controller", Ultra
Debe quedar así.
;Ultra133TX2_2003 = "Win2003 Promise ULTRA133 TX2 (tm) Controller", Ultra
;Ultra100TX2_2003 = "Win2003 Promise ULTRA100 TX2 (tm) Controller", Ultra
;Ultra100_2003 = "Win2003 Promise ULTRA100 (tm) Controller", Ultra
;Ultra100_2003_2 = "Win2003 Promise ULTRA100 (tm) Controller (PDC20265)", Ultra
;Ultra66_2003 = "Win2003 Promise ULTRA66 (tm) Controller", Ultra
;Ultra33_2003 = "Win2003 Promise ULTRA33 (tm) Controller", Ultra
Ultra133TX2_xp = "WinXP Promise ULTRA133 TX2 (tm) Controller", Ultra
Ultra100TX2_xp = "WinXP Promise ULTRA100 TX2 (tm) Controller", Ultra
Ultra100_xp = "WinXP Promise ULTRA100 (tm) Controller", Ultra
Ultra100_xp_2 = "WinXP Promise ULTRA100 (tm) Controller (PDC20265)", Ultra
Ultra66_xp = "WinXP Promise ULTRA66 (tm) Controller", Ultra
Ultra33_xp = "WinXP Promise ULTRA33 (tm) Controller", Ultra
;Ultra133TX2_nt5 = "Win2000 Promise ULTRA133 TX2 (tm) Controller", Ultra
;Ultra100TX2_nt5 = "Win2000 Promise ULTRA100 TX2 (tm) Controller", Ultra
;Ultra100_nt5 = "Win2000 Promise ULTRA100 (tm) Controller", Ultra
;Ultra100_nt5_2 = "Win2000 Promise ULTRA100 (tm) Controller (PDC20265)", Ultra
;Ultra66_nt5 = "Win2000 Promise ULTRA66 (tm) Controller", Ultra
;Ultra33_nt5 = "Win2000 Promise ULTRA33 (tm) Controller", Ultra
;Ultra133TX2 = "WinNT Promise ULTRA133 TX2 (tm) Controller", Ultra
;Ultra100TX2 = "WinNT Promise ULTRA100 TX2 (tm) Controller", Ultra
;Ultra100 = "WinNT Promise ULTRA100 (tm) Controller (PDC20267)", Ultra
;Ultra100_2 = "WinNT Promise ULTRA100 (tm) Controller (PDC20265)", Ultra
;Ultra66 = "WinNT Promise ULTRA66 (tm) Controller", Ultra
;Ultra33 = "WinNT Promise ULTRA33 (tm) Controller", Ultra
Después de hacerlo, ejecutamos pebuilder.exe, en Fuente tenemos que proporcionarle la ruta con el origen de instalación de Windows XP/Server 2003 y en Adicionales podríamos darle como ruta un directorio con aplicaciones de diagnóstico ejecutables en BartPE. Dos buenas aplicaciones de este tipo para este entorno son SIW y Everest. También necesitaremos copiar en dicho directorio un archivo reg con el contenido que tenemos al final del mensaje (se debe copiar en un archivo de texto sin formato y guardarlo con codificación Unicode y extensión .reg), la utilidad MSDINST.EXE y los binarios de un descompresor que funcione bien en BartPE, como pudieran ser 7-Zip y Winrar, por si tuvieramos que descomprimir algún archivo. Luego, pulsamos en Plugins, seleccionamos el de RpcSS needs to launch DComLaunch Service First - SP2 Only y pulsamos Habilitar Sí/No asegurándonos de que esté habilitado. También seleccionamos Keyboard Layout, lo habilitamos como el de antes y le damos a editar, para luego buscar en el archivo la línea donde viene escrito ; Remove the semicolon at the beginning of the following line to set the default keyboard to: Spanish (Traditional Sort). Como indica, le quitamos el punto y coma a la siguiente línea, la de 0x1, "Keyboard Layout\Preload", "1", "0000040A".
Una vez configurados estos aspectos básicos, podemos darle a Cerrar, escogemos Grabar CD/DVD y en dispositivo la grabadora adecuada, para luego pulsar Construir. Si todo ha ido bien, pebuilder.exe habrá creado el CD/DVD BartPE. Si no, el informe de creación debería informar de qué archivo no se pudo copiar a fin de poder solucionarlo.

Si la pb no funciona - II Una vez construido, lo insertamos e iniciamos el equipo con la placa base ya cambiada. Tardará unos minutos en arrancar y preguntará si deseamos iniciar la compatibilidad de red. Respondemos No pues no la necesitamos para este procedimiento. Pulsamos el botón Go, escogemos Command Prompt y en la consola de comandos CMD tecleamos el siguiente comando:
reg load HKLM\TEMP c:\windows\system32\config\system
Tras este comando, que cargará en el editor de registro la rama SYSTEM de la instalación de Windows, escribimos en la misma consola de comandos el comando regedit e importamos el archivo .reg de antes (el contenido de dicho archivo está al final de este tema, justo encima de la captura con la prueba de Windows iniciado tras el cambio de controladora, sólo es necesario copiar y pegarlo en un editor de texto plano, para guardarlo como .reg). Navegamos a la rama HKLM\TEMP\Select y observamos el valor de la entrada Default. Si es 001 podremos continuar, si no es necesario editar el archivo .reg de antes y usar la función Reemplazar del bloc de notas, en Buscar ponemos \TEMP\ControlSet001\ y en Reemplazar por \TEMP\ControlSet002\ \TEMP\ControlSet003\ o lo que fuera según el valor de la entrada Default de antes.
Luego, nos desplazamos a la rama HKLM\TEMP y en archivo escogemos Descargar subárbol o ejecutamos el comando reg unload HKLM\Temp
Con esto Windows XP/Server 2003 debería poder iniciar desde un disco conectado a cualquier controladora IDE/SATA a la que se pueda acceder con el controlador estándar PCI IDE pciide.sys.
Si en cambio, tenemos el disco conectado a una controladora SCSI/SAS, esté admitida por Windows o no de modo nativo, o a una RAID/SATA deberemos usar la utilidad MSDINST.EXE para instalar el controlador en una instalación de Windows no iniciada. Lo primero es determinar si el controlador viene de serie o no en Windows.
Si no viene de serie, debemos crear una carpeta en la unidad de disco duro, como pudiera ser c:\WINDOWS\RAIDDRIVER, en la que copiaremos todos los archivos del controlador de la controladora en cuestión, los inf, los sys, los cat...
Luego, ejecutamos el comando reg load HKLM\TEMP c:\windows\system32\config\software y ejecutamos regedit.exe. Dentro de la rama HKLM\Temp\Microsoft\Windows\CurrentVersion buscamos el valor DevicePath y lo editamos.
Lo más probable es que venga de serie el valor %SystemRoot%\inf, introducimos el nombre de la carpeta donde copiamos los archivos del controlador separándolo con un punto y coma, tal que quede así %SystemRoot%\inf;c:\WINDOWS\RAIDDRIVER.
Podemos añadir más rutas separándolas con punto y coma, de tal modo que Windows considerará esas carpetas como origen de instalación de controladores, tomando de ahí los controladores sin que tengamos que instalarlos manualmente.

Una vez hecho esto, descargamos la rama HKLM\TEMP como antes. Ahora necesitamos copiar la utilidad MSDINST.EXE a la unidad B:, la unidad de disco RAM que crea BartPE. Posteriormente, ejecutamos el bloc de notas notepad.exe y guardamos un archivo como "b:\sysprep.inf", las comillas deben escribirse.
En dicho archivo, escribimos:
[SysprepMassStorage]
ID PnP = Ruta al inf
Reemplazando ID PnP = Ruta al inf por los datos reales. La ID PnP de la controladora la podemos averiguar ejecutando el SIW en BartPE, apartado Hardware, PCI y pulsando sobre el dispositivo que parezca ser nuestra controladora. Nos interesa el valor del fabricante (Vendor) y el de dispositivo (Device). En nuestro ejemplo, ponemos el de una controladora SATA RAID del ICH7R de Intel. El código de fabricante es 8086 y el de dispositivo 27C3. En ruta al inf sólo tenemos que teclear la ruta absoluta al archivo inf del controlador que copiamos antes, si la ruta contiene algún espacio es necesario encerrarla con comillas. El archivo inf del ejemplo se llama iastor.inf y lo copiamos en c:\WINDOWS\RAIDRIVER. En caso de que queramos añadir compatibilidad con alguna controladora IDE o SCSI admitida de serie por Windows, lo más probable es que se instale mediante los archivos mshdc.inf, pnpscsi.inf y scsi.inf, dentro de la carpeta \WINDOWS\inf.
Quedaría así:
[SysprepMassStorage]
pci\ven_8086&dev_27C3 = c:\WINDOWS\RAIDDRIVER\iastor.inf
Si, como ejemplo, además quisieramos añadir compatibilidad para una controladora SCSI Tekram DC-390U3W, que viene de serie admitida en Windows XP, añadimos (se supone que la tenemos insertada en una ranura PCI y que hemos comprobado su ID PNP con SIW):
PCI\VEN_1000&DEV_0020 = c:\WINDOWS\inf\pnpscsi.inf

Una vez hecho todo esto, sólo debemos ir a una consola de comandos, cambiar a la unidad b: con b: y ejecutar:
msdinst sysprep.inf c:\windows
Debería mostrar un mensaje de operación completada con éxito:
Success! Image has been updated.

En caso de que la herramienta MSDINST.EXE no funcione o no tengamos acceso a esta herramienta, será necesario configurar a mano el servicio y la entrada en la base de datos de dispositivos críticos, para ello seguimos estos pasos:
Creamos una carpeta en la unidad local con los controladores correspondientes y cambiamos el valor DevicePath como se describió antes. Luego copiamos el archivo de controlador .sys a la carpeta \WINDOWS\System32\Drivers.
Ahora, cargamos en el registro el archivo de registro SYSTEM y nos desplazamos a la clave ControlSetxxx reflejada en el valor Default, tal como vimos antes. Dentro de ésta, vamos a service y creamos una clave con el mismo nombre que el controlador, pero sin .sys, como ejemplo iastor. Dentro de ésta creamos las siguientes entradas:
Una DWORD llamada Start, con valor 0, controlador que debe cargar el cargador NTLDR.
Otra DWORD llamada Type, con valor 1, controlador de núcleo.
Una alfanumérica llamada ImagePath, de valor system32\drivers\[controlador.sys] cambiando [controlador.sys] por el nombre del controlador.
Otra alfanumérica llamada Group, con valor SCSI miniport si la controladora aparece enumerada en la sección de Controladoras SCSI/RAID del administrador de dispositivos de Windows o System Bus Extender si es una controladora IDE/SATA a la que se puede acceder con el controlador estándar pciide. En caso de duda, podemos mirar la clase de dispositivo con el SIW (es una de las imágenes de arriba). Lo seleccionamos en Hardware\PCI y nos fijamos en el valor PCI Class Type, si es 101xxh le corresponde System Bus Extender, si es otro como 010000h (controladora SCSI), 010400h (controladora RAID), 010602h (controladora SATA con AHCI), 010700h (controladora SAS) o 018000h (dispositivo de almacenamiento masivo) le corresponde SCSI miniport.
Ahora toca configurar la entrada de la base de datos de dispositivos críticas, en la rama \Control\CriticalDeviceDatabase. Hay que crear una rama con nombre pci#ven_xxxx&dev_yyyy, donde xxxx es la ID del fabricante e yyyy la del dispositivo. Se pueden consultar con SIW como vimos anteriormente. Luego, dentro de ésta hay que crear dos entradas alfanuméricas:
ClassGUID: El identificador universal global de la clase de dispositivos, {4D36E97B-E325-11CE-BFC1-08002BE10318} si el dispositivo es una controladora SCSI/RAID o de almacenamiento masivo y {4D36E96A-E325-11CE-BFC1-08002BE10318} si es una controladora IDE/SATA a la que se puede acceder con el controlador estándar pciide, en función del valor de clase PCI según detallamos antes.
Service: El nombre del controlador asociado, igual al nombre del controlador sin la extensión.


Si la pb no funciona - III Si fuera necesario cambiar la capa de abstracción, también lo podremos hacer siguiendo los pasos de antes y recordando que es necesario quitar el atributo de sólo lectura del archivo boot.ini. Para descomprimir los cabs, podremos usar el 7-Zip.
Una vez que lo hagamos, podemos reiniciar y comprobar si inicia el SO. Tras ello, seguimos los pasos de limpieza del apartado anterior para eliminar los rastros de controladores anteriores.
Contenido del archivo reg necesario para el paso del BartPE:
Código:

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\primary_ide_channel]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\secondary_ide_channel]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\*pnp0600]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\*azt0502]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\gendisk]
"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
"Service"="disk"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#cc_0101]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_0e11&dev_ae33]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1039&dev_0601]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1039&dev_5513]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1042&dev_1000]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_105a&dev_4d33]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0640]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0646]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0646&REV_05]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0646&REV_07]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0648]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0649]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1097&dev_0038]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_10ad&dev_0001]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_10ad&dev_0150]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5215]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5219]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5229]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1106&dev_0571]
"Service"="pciide"
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_1222]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_1230]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2411]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2421]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7010]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7111]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7199]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Services\atapi]
"ErrorControl"=dword:00000001
"Group"="SCSI miniport"
"Start"=dword:00000000
"Tag"=dword:00000019
"Type"=dword:00000001
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d, 00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,61,00,74,00,61,00,70,00,69,00,2e,\
00,73,00,79,00,73,00,00,00


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Services\IntelIde]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Tag"=dword:00000004
"Type"=dword:00000001
"ImagePath"=hex(2):53,00,79,00,73,00,74,00, 65,00,6d,00,33, 00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,69 ,00,6e,00,74,00,65,00,6c,00,69,\
00,64,00,65,00,2e,00,73,00,79,00,73,00,00,00


[HKEY_LOCAL_MACHINE\TEMP\ControlSet001\Services\PCIIde]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Tag"=dword:00000003
"Type"=dword:00000001
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00, 33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c, 00,70,00,63,00,69,00,69,00,64,00,65,\
00,2e,00,73,00,79,00,73,00,00,00
Una vez realizado, éste es el resultado:

El sistema operativo inicia e instala automáticamente el controlador de la controladora dado que lo tiene recogido en el valor DevicePath. Para la prueba, se usó un XP SP3 instalado en una máquina virtual VirtualBox, que virtualiza un chipset i440FX + PIIX3. Luego, se intentó transplantar a una máquina virtual VMware, en la cual se virtualiza un i440BX + PIIX4, con el disco conectado a la controladora virtual SCSI Buslogic. Esto simuló perfectamente el hecho de realizar un trasplante de un equipo a otro con diferente controladora de disco
Retoques finales
Una vez que esté todo en orden, es hora de instalar los controladores nuevos correspondientes al hardware nuevo: Controladores del chipset, sonido, red, gráfica, controladores de disco y otros. También deberíamos eliminar los dispositivos fantasma provenientes de la placa anterior:
Ejecutamos regedit y nos vamos a la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum. Ahí están todos los dispositivos que el SO ha enumerado y en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Class están todos los dispositivos que ha instalado organizados por clases. Para verlo de un modo más gráfico, pulsamos Windows + Pausa, pestaña Opciones avanzadas, Variables de entorno y en el apartado de variables de sistema le damos a nueva:
Nombre de variable: DEVMGR_SHOW_NONPRESENT_DEVICES
Valor de variable: True.
Una vez realizado, abrimos el administrador de dispositivos y en ver escogemos Mostrar dispositivos ocultos. Los dispositivos que estuvieron presentes, pero ya no, aparecerán atenuados. No debemos eliminar nada dentro de la categoría Controladores que no son Plug and Play ni dentro de Adaptadores de red ni Dispositivos de Sonido, audio y vídeo.
En vez de eso, conseguimos la utilidad sysprep, la copiamos en una carpeta como c:\sysprep, abrimos una consola de comandos, cambiamos al directorio de sysprep y ejecutamos sysprep -clean. Esto eliminará cualquier dispositivo PnP fantasma de modo automático, aunque su utilidad principal es eliminar controladores de almacenamiento masivo que se agregaron mediante [SysprepMassStorage] a la hora de sellar una instalación maestra con sysprep.exe. Si lo deseamos, podemos mirar el antes y el después en ramas como HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI y HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI.
Éste es el fin del tema. Ha salido algo largo debido a que he querido ponerlo todo bien detallado, para que no se omita nada, pero el procedimiento en sí es algo rápido y no complicado. Si tienes alguna duda con los procedimientos o deseas realizar alguna crítica constructiva, puedes plantearlo en este hilo, que para eso está.

drivers.windows7download.com

No comments: