El Windows no puede instalarse y correr desde un dispositivo USB asi como viene de fabrica, lo probe con WinXP, WinVista y con la Beta de Windows 7 que directamente el instalador dice que no puede instalarse en un dispositivo removible.
En este tutoria voy a explicar como se hace para preparar una copia de Windows XP que permita ser instalada sobre un dispositivo USB y como, en caso de no ejecutarse, solucionar errores de instalacion.
Obviamente se requiere algun dispositivo USB de lectura y escritura de datos (pendrive, disco eSATA, carry extterno USB), algún aplicativo que lea y permite editar archivos ISO (WinISO por ejemplo) y, obviamente, una copia legal de Windows XP.
1) Como primer paso baje el
Microsoft CAB SDK. Este será utilizado para descomprimir archivos del disco de instalacion.
2) Con el WinISO o la aplicacion que tenga haga una imagen ISO del cd de instalación de Windows XP.
3) Abra la imagen ISO y extraiga los siguientes archivos de la carpeta I386:
* TXTSETUP.SIF
* DOSNET.INF
* USB.IN_
* USBPORT.IN_
* USBSTOR.IN_
Estos archivos son los que contienen datos que utiliza el WinXP durante la instalacion ademas de parametros de como el USB debe funcionar.
4) Utilice el CAB SDK a través de línea de comando para descomprimir los .IN_.
Ejemplo: cabarc x USBSTOR.IN_
Deben quedar los 3 arhivos descomprimidos con los siguientes nombres:
* usb.inf
* usbport.inf
* usbstor.inf
Elimine los archivos .IN_
5) Se debe modificar el TXTSETUP.SIF. Este archivo contiene la información de como debe manejar el instalador los dispositivos y por ende, como debe tratar a los dispositivos USB.
Las Secciones [BootBusExtenders.Load] y [InputDevicesSupport.Load] del archivo se ven de la siguiente manera:
[BootBusExtenders.Load]
pci = pci.sys
acpi = acpi.sys
isapnp = isapnp.sys
acpiec = acpiec.sys
ohci1394 = ohci1394.sys
[InputDevicesSupport.Load]
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbccgp = usbccgp.sys
hidusb = hidusb.sys
serial = serial.sys
serenum = serenum.sys
usbstor = usbstor.sys
Estas dos secciones deben ser editadas para que se lean de la siguiente forma:
[BootBusExtenders.Load]
pci = pci.sys
acpi = acpi.sys
isapnp = isapnp.sys
acpiec = acpiec.sys
ohci1394 = ohci1394.sys
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbstor = usbstor.sys
[InputDevicesSupport.Load]
usbccgp = usbccgp.sys
hidusb = hidusb.sys
serial = serial.sys
serenum = serenum.sys
Y a su vez las secciones [BootBusExtenders] y [InputDevicesSupport] que se ven:
[BootBusExtenders]
pci = "Controlador de bus PCI",files.pci,pci
acpi = "Controlador de bus Plug & Play ACPI",files.acpi,acpi
isapnp = "Controlador de bus Plug & Play ISA",files.isapnp,isapnp
acpiec = "Controlador de controladora integrada ACPI",files.none,acpiec
ohci1394 = "Controlador de puerto compatible con la OHCI de bus de IEEE 1394",files.ohci1394,ohci1394
[InputDevicesSupport]
usbehci = "controladora de host mejorada",files.usbehci,usbehci
usbohci = "Controladora de host abierto",files.usbohci,usbohci
usbuhci = "Controladora de host universal",files.usbuhci,usbuhci
usbhub = "Controlador de concentrador USB gen‚rico",files.usbhub,usbhub
hidusb = "Analizador de interfaz humana",files.hidusb,hidusb
serial = "Controlador de puerto serie",files.none,serial
serenum = "Enumerador de puertos serie",files.none,serenum
usbstor = "Controlador de clase de almacenamiento USB",files.usbstor,usbstor
usbccgp = "Controlador primario USB gen‚rico",files.usbccgp,usbccgp
Deben quedar como:
[BootBusExtenders]
pci = "Controlador de bus PCI",files.pci,pci
acpi = "Controlador de bus Plug & Play ACPI",files.acpi,acpi
isapnp = "Controlador de bus Plug & Play ISA",files.isapnp,isapnp
acpiec = "Controlador de controladora integrada ACPI",files.none,acpiec
ohci1394 = "Controlador de puerto compatible con la OHCI de bus de IEEE 1394",files.ohci1394,ohci1394
usbehci = "controladora de host mejorada",files.usbehci,usbehci
usbohci = "Controladora de host abierto",files.usbohci,usbohci
usbuhci = "Controladora de host universal",files.usbuhci,usbuhci
usbhub = "Controlador de concentrador USB gen‚rico",files.usbhub,usbhub
usbstor = "Controlador de clase de almacenamiento USB",files.usbstor,usbstor
[InputDevicesSupport]
hidusb = "Analizador de interfaz humana",files.hidusb,hidusb
serial = "Controlador de puerto serie",files.none,serial
serenum = "Enumerador de puertos serie",files.none,serenum
usbccgp = "Controlador primario USB gen‚rico",files.usbccgp,usbccgp
Luego, busque [HiveInfs.Fresh] y encontrará lo siguiente:
[HiveInfs.Fresh]
AddReg = hivedef.inf,AddReg
AddReg = hivesys.inf,AddReg
AddReg = hivesft.inf,AddReg
AddReg = hivecls.inf,AddReg
AddReg = hiveusd.inf,AddReg
AddReg = dmreg.inf,DM.AddReg
Agregue AddReg = usbboot.inf,usbservices para que esto se lea asi:
[HiveInfs.Fresh]
AddReg = hivedef.inf,AddReg
AddReg = hivesys.inf,AddReg
AddReg = hivesft.inf,AddReg
AddReg = hivecls.inf,AddReg
AddReg = hiveusd.inf,AddReg
AddReg = dmreg.inf,DM.AddReg
AddReg = usbboot.inf,usbservices
Y en [SourceDisksFiles] agregue, luego de [SourceDisksFiles] lo siguiente: usbboot.inf = 1,,,,,,_x,3,,3
7) Abra en un editor de texto el archivo DOSNET.INF y modifique la sección [Files] para que se lea asi:
[Files]
d1,usbboot.inf
d1,_default.pif
d1,12520437.cpx
d1,12520850.cpx
...
8) Abra usb.inf
Busque las lineas en [StandardHub.AddService] y [CommonClassParent.AddService] y modifiquelas para que se lean como las marcadas con el *:
[StandardHub.AddService]
DisplayName = %StandardHub.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
* StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbhub.sys
* LoadOrderGroup = Boot Bus Extender
[CommonClassParent.AddService]
DisplayName = %GenericParent.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
* StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbccgp.sys
* LoadOrderGroup = Boot Bus Extender
9) Abra usbport.inf
Busque las lineas en [EHCI.AddService], [OHCI.AddService] , [UHCI.AddService] and [ROOTHUB.AddService] y modifiquelas para que se lean como las marcadas con el *:
[EHCI.AddService]
DisplayName = %EHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
* StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbehci.sys
* LoadOrderGroup = Boot Bus Extender
[OHCI.AddService]
DisplayName = %OHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
* StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbohci.sys
* LoadOrderGroup = Boot Bus Extender
[UHCI.AddService]
DisplayName = %UHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
* StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbuhci.sys
* LoadOrderGroup = Boot Bus Extender
[ROOTHUB.AddService]
DisplayName = %ROOTHUB.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
* StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbhub.sys
* LoadOrderGroup = Boot Bus Extender
10) Abra usbstor.inf
Busque las lineas en [USBSTOR.AddService] y agregue o cambie las líneas indicadas con un *:
[USBSTOR.AddService]
DisplayName = %USBSTOR.SvcDesc%
ServiceType = 1
* StartType = 0
* Tag = 3
ErrorControl = 1
ServiceBinary = %12%\USBSTOR.SYS
* LoadOrderGroup = Boot Bus Extender
11) Cree un nuevo archivo, nombrelo: USBBOOT.INF
Peguele el siguiente contenido:
[usbservices]
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR"," DisplayName",0x00000000,"USB Mass Storage Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR"," ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR"," Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR"," ImagePath",0x00020000,"system32\DRIVERS\USBSTOR.SY S"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR"," Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR"," Type",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci"," DisplayName",0x00000000,"USB 2.0 Enhanced Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci"," ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci"," Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci"," ImagePath",0x00020000,"system32\DRIVERS\usbehci.sy s"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci"," Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci"," Type",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","D isplayName",0x00000000,"USB2 Enabled Hub"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","E rrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","G roup",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","I magePath",0x00020000,"system32\DRIVERS\usbhub.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","S tart",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","T ype",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci"," DisplayName",0x00000000,"Microsoft USB Universal Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci"," ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci"," Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci"," ImagePath",0x00020000,"system32\DRIVERS\usbuhci.sy s"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci"," Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci"," Type",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci"," DisplayName",0x00000000,"Microsoft USB Open Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci"," ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci"," Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci"," ImagePath",0x00020000,"system32\DRIVERS\usbohci.sy s"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci"," Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci"," Type",0x00010001,1
12) Reempaquete los archivos:
cabarc n USB.IN_ usb.inf
cabarc n USBPORT.IN_ usbport.inf
cabarc n USBSTOR.IN_ usbstor.inf
13) Con su aplicación de edición de ISO elimine los siguientes archivos de la imagen de WIndows XP:
# DOSNET.INF
# TXTSETUP.SIF
# USB.IN_
# USBPORT.IN_
# USBSTOR.IN_
14) Copie los siguientes archivos a la carpeta I386 de la imagen de Windows Xp:
* USBBOOT.INF
* DOSNET.INF
* TXTSETUP.SIF
* USB.IN_
* USBPORT.IN_
* USBSTOR.IN_
15) Grabe la imagen en un CD e instale.
Recomiendo, para la primera instalacion, dejar solo el dispositivo USB, desconectar cualquier disco rigido de la PC por las dudas.
Es posible que luego de haber copiado los archivos de Windows al disco USB durante el proceso de instalacion, cuando el Windows XP reinicie este devuelva la clasica pantalla azul (BSOD o Blue Screen of Death).
En la mayoría de los casos este error puede solucionarse reemplazando lso controladores USB del WinXP por controladores genericos, para esto:
En una PC con Windows ya instalado:
. Descargue el
XP Embedded Feature Pack (XPeSP2FeaturePack2007.iso)
. Abra el iso con el WinRar y extraiga el archivo XPEFP2007.exe
. Abra el XPEFP2007.exe con el WinRar y extraiga los archivos usbhubb.sys y usbstorb.sys de la carpeta REP.
. Renombre los archivos a usbhub.sys y usbstor.sys
. Enchufe su dispositivo USB y en el copie los archivos usbhub.sys y usbstor.sys al directorio WINDOWS\system32\drivers de su dispositivo USB y proteja a ambos contra escritura.
Ahora debería poder continuar normalmente con la instalacion.