Saltar al contenido

Puedo instalar Windows XP en un disco duro externo

¿Puedo instalar Windows XP en un disco duro externo?

Antes no se podía instalar Windows XP en un disco duro externo. Hoy día si que es posible.
Windows XP no soportaba como primer dispositivo de arranque un disco duro externo, extraíble o USB, por tanto requería ser instalado en un disco duro interno.

Editamos este truco, ya que a día de hoy se puede hacer, con algunos pequeños arreglos y algo de software.

Requerimientos :

  • Una instalación de Windows
  • Un disco USB2 o un Stick USB2 lo suficientemente grande 4gb.
  • Windows XP CD.
  • WinISO (o cualquier software que permita edición directa de archivos ISO)
  • Microsoft CAB SDK
  • Software que grabe formato ISO en Cd´s.

A modo de leyenda :
Letras que están en verde es lo nuevo que se agrega/modifica.
Las lineas de comando ms-dos que haya que escribir lo pondré en magenta.
Los archivos y lineas (texto) que se eliminan irán en rojo

Sumario:

Vamos a hacer una imágen del CD de WinXP, extraeremos algunos archivos de la imágen usando el editor de ISO´s. Editaremos estos archivos y los volveremos a meter en el ISO una vez modificados. La imágen resultante la quemamos en otro CD, y ya puede ser usada para instalar directamente en un dispositivo USB. Suena fácil eh. bueno vamos allá.

1) Soporta tu pc el arranque desde USB?

Usualmente esto es una opción en la secuencia de arranque del BIOS. Si no la ves, actualiza tu BIOS. Si no estás seguro, sigue adelante a ver que pasa…

2) Descubriendo si tu USB-Drive arranca.

Conecta tu USB drive al ordenador, directamente al puerto, sin Hub.

Apaga el pc, desconecta todos los discos duros, pon un CD booteable de XP, comienza a instalar y ve hasta la parte donde seleccionas el disco donde quieres instalar.

Si la instalación pasa de la parte donde has de seleccionar la partición.

Tu USB sirve para arrancar XP. De lo contrario te dará un error de «Windows no pudo encontrar, su disco, partición, datos, etc.. bla , bla.

Esto no es problema, lo único que hay que hacer es formatear el drive USB.

Arrancar con el Windows normalmente, buscas esta herramienta de HP, y usarla para formatear el stick o disco USB completamente en formato NTFS.

3) Haciendo la imagen del disco de XP.

Fácil. Abre WinISO, vete a Actions-> Make ISO from CDROM, y guarda la imágen de CD. Ya está.

4) Extrayendo los archivos necesarios

Una vez tenemos la imágen, la cargamos en WinISO. Vamos a la carpeta i386, seleccionamos los archivos siguientes :

  • TXTSETUP.SIF
  • DOSNET.INF
  • USB.IN_
  • USBPORT.IN_
  • USBSTOR.IN_

Vamos a Actions -> Extract y los ponemos en una carpeta aparte para trabajar con ellos.

5) Desempaquetando los archivos IN_

De la linea de comando usamos el Cab SDK.

cabarc x USBSTOR.IN_
cabarc x USB.IN_
cabarc USBPORT.IN_

y nos quedarían los 3 unpacked :

  • usb.inf
  • usbport.inf
  • usbstor.inf

ok ahora borramos los .IN_
del *.in_

6) Editando los archivos.

Bien este es paso principal. Usaremos un editor de texto simple como Notepad++ .

6-A) TXTSETUP.SIF

Este archivo es cargado en el paso inicial de la instalación. Aquí cambiaremos la forma en que windows trata los dispositivos USB durante el arranque del sistema. Por defecto son tratados como dispositivos de entrada (input devices) durante la instalación. Lo cambiaremos para que los incluya como dispositivos de almacenamiento (mass storage driver) que por tanto necesita ser cargado antes por el instalador para que funcione la cosa.

Primero, movemos la entrada siguiente desde [InputDevicesSupport.Load] hacia la sección [BootBusExtenders.Load]
[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]
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

… ahora lo mismo para [BootBusExtenders] y [InputDevicesSupport]

[BootBusExtenders]
pci = «PCI-Bustreiber»,files.pci,pci
acpi = «ACPI Plug & Play-Bustreiber»,files.acpi,acpi
isapnp = «ISA Plug & Play-Bustreiber»,files.isapnp,isapnp
acpiec = «Integrierter ACPI-Controllertreiber»,files.none,acpiec
ohci1394 = «IEEE-1394-Bus-OHCI-konformer Anschlusstreiber»,files.ohci1394,ohci1394
usbehci = «Erweiterter Hostcontroller»,files.usbehci,usbehci
usbohci = «Open Hostcontroller»,files.usbohci,usbohci
usbuhci = «Universeller Hostcontroller»,files.usbuhci,usbuhci
usbhub = «Standard-USB-Hubtreiber»,files.usbhub,usbhub
usbstor = «USB-Speicherklassentreiber»,files.usbstor,usbstor

[InputDevicesSupport]
usbehci = «Erweiterter Hostcontroller»,files.usbehci,usbehci
usbohci = «Open Hostcontroller»,files.usbohci,usbohci
usbuhci = «Universeller Hostcontroller»,files.usbuhci,usbuhci
usbhub = «Standard-USB-Hubtreiber»,files.usbhub,usbhub

hidusb = «HID-Parser»,files.hidusb,hidusb
serial = «Treiber fr seriellen Anschluss»,files.none,serial
serenum = «Enumerator fr seriellen Anschluss»,files.none,serenum
usbstor = «USB-Speicherklassentreiber»,files.usbstor,usbstor
usbccgp = «USB Generic Parent Driver»,files.usbccgp,usbccgp

Luego escribimos algunos keys en el registro.
Inserta lo siguiente en la sección [HiveInfs.Fresh] :
[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] también

[SourceDisksFiles]
usbboot.inf = 1,,,,,,_x,3,,3
bootvid.dll = 1,,,,,,3_,2,0,0,,1,2
kdcom.dll = 1,,,,,,3_,2,0,0,,1,2

Finalmente, salvamos y cerramos TXTSETUP.SIF. ya terminamos con éste.

6-B) DOSNET.INF

Abrimos DOSNET.INF , cambiamos la sección [Files] que nos quede asi:
[Files]
d1,usbboot.inf

d1,_default.pif
d1,12520437.cpx
d1,12520850.cpx

….

6-C) usb.inf
Cambiamos lo que está en verde en ambas secciones [StandardHub.AddService] y en [CommonClassParent.AddService]

[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

6-D) usbport.inf
Cambiamos en la sección [EHCI.AddService], [OHCI.AddService] , [UHCI.AddService] y en [ROOTHUB.AddService] :

[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
6-E) usbstor.inf

Cambiamos / Añadimos en la sección [USBSTOR.AddService]

[USBSTOR.AddService]
DisplayName = %USBSTOR.SvcDesc%
ServiceType = 1
StartType = 0
Tag = 3
ErrorControl = 1
ServiceBinary = %12%\USBSTOR.SYS
LoadOrderGroup = Boot Bus Extender

6-F) Nuevo archivo: USBBOOT.INF
Creamos un archivo nuevo llamado USBBOOT.INF en el mismo directorio donde hemos cambiado los otros archivos y le pegamos esto dentro :

[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.SYS»
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.sys»
HKLM,»SYSTEM\CurrentControlSet\Services\usbehci»,»Start»,0x00010001,0
HKLM,»SYSTEM\CurrentControlSet\Services\usbehci»,»Type»,0x00010001,1

HKLM,»SYSTEM\CurrentControlSet\Services\usbhub»,»DisplayName»,0x00000000,»USB2 Enabled Hub»
HKLM,»SYSTEM\CurrentControlSet\Services\usbhub»,»ErrorControl»,0x00010001,1
HKLM,»SYSTEM\CurrentControlSet\Services\usbhub»,»Group»,0x00000000,»System Reserved»
HKLM,»SYSTEM\CurrentControlSet\Services\usbhub»,»ImagePath»,0x00020000,»system32\DRIVERS\usbhub.sys»
HKLM,»SYSTEM\CurrentControlSet\Services\usbhub»,»Start»,0x00010001,0
HKLM,»SYSTEM\CurrentControlSet\Services\usbhub»,»Type»,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.sys»
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.sys»
HKLM,»SYSTEM\CurrentControlSet\Services\usbohci»,»Start»,0x00010001,0
HKLM,»SYSTEM\CurrentControlSet\Services\usbohci»,»Type»,0x00010001,1

7) Empaquetamos los archivos inf en su formato original IN_

cabarc n USB.IN_ usb.inf
cabarc n USBPORT.IN_ usbport.inf
cabarc n USBSTOR.IN_ usbstor.inf

ok ya tenemos los IN_ modificados.
Ahora solo queda volverlos a poner en el ISO.

8) Integrando los IN_ al ISO

Abrimos la imágen otra vez con WinISO. Vamos a I386 y borramos estos archivos. Le decimos al WinISO que salve los cambios.

  • DOSNET.INF
  • TXTSETUP.SIF
  • USB.IN_
  • USBPORT.IN_
  • USBSTOR.IN_

Para estar seguros, salimos del WinISO. Lo abrimos otra vez y cargamos la imágen. Vamos a la carpeta I386, seleccionamos «Add Files». y añadimos nuestros archivos modificados que serían :

  • USBBOOT.INF
  • DOSNET.INF
  • TXTSETUP.SIF
  • USB.IN_
  • USBPORT.IN_
  • USBSTOR.IN_

Ya está, guardamos el ISO. y terminamos.

9) Quemar el ISO en CD

Usa cualquiera, desde Nero, Alcohol, Burnatonce , el que mas te guste.

10) Instalando

Apagamos el ordenador. Desconectamos todos los discos internos y externos, asi windows no encuentra ninguno y evitamos se cargue/joda el MBR (OJO con esto que nos jode el disco). Vamos al BIOS y quitamos el hdd de la secuencia y dejamos USB en primer lugar, luego CDROM, los demás disabled. Conectamos el super stick USB o disco duro USB en que querramos instalar, directo al puerto, nada de hubs por medio.

Y Windows deberia instalarse bien, con la excepciones siguientes :

  • En la instalación del driver USB te dirá que no está certificado. Esto es normal, nuestros cambios invalidaron el checksum, y por tanto el driver no está firmado. Le das que «Si» unas cuantas veces y a tomar pcl.
  • Al terminar la instalación la primera vez que arranque el sistema se va a quejar de que no existe archivo de paginación. Lo ignoras de momento, windows funciona bien sin el. Este problema no está aún resuelto asi que estamos buscando una solución… Ya actualizaré la guia cuando la encontremos. De todas formas este no es un error crítico.

Una vez que todo esté listo y corriendo, apaga y conecta otra vez tus hdd.

Aclaro esta solucion no es correcta de utilizar dado que estamos modificando codigos del sistema operativos, si realmente te interesa probar el XP, 200X, o Vista en un PEN o Disco USB lo puedes hacer con toda confianza que funciona.

Gracias a todos los que me llamaron y me insistieron que no me rinda con este proyecto Caso cerrado, Windows si soporta Boot por USB.

19 comentarios en «Puedo instalar Windows XP en un disco duro externo»

  1. Antes que nada, gracias por el aporte, he tratado de realizar el proceso descrito y todo parece ir bien en la instalacion hasta el momento de reiniciarse el equipo despues de copiar los archivos, me manda un mensaje de que el disco puede estar dañado y recomiendo utilizar el chkdisk para revisarlo y ya no sigue con la configuracion, soy aficionado y me gustaria me ayudaran a resolver este problema, saludos.

  2. esta bueno el post pero quisiera saver si puedes darme el iso ya listo esq no soy experto en esto y nesesito instalar windows en un disco externo si no es mucha molestia gracias.

  3. Hola disculpa lei con atencion , pero no soy muy bueno en esto. Te esplico, me compre un computador mini de hp y tiene 2 gb de ram y nesesito instalarle el windows en un disco externo, por que no me cogen todos los drivers en disco del compu , me podrias ayudar por favor

  4. Hola, realize todos los cambios en los archivos pero al querer bootear el cd ya quemado me dice lo siguiente:
    «No se ha encontrado el archivo INF txtsetup.sif o esta dañado.
    El programa de instalacion no puede continuar.»

    la cuestion es que la primera vez yo dije: «bueno, debo haber hecho mal los cambios en ese archivo» entonces lo volvi a hacer al pie de la letra y volvi a probar con esa nueva iso y lo mismo… -_- que puede estar pasando?

  5. Se debe a que esta mal hecho el txtsetup.sif . Yo voy a intentar subir el iso que estoy creando con los archivos correctamente modificados. Y en breve les paso el link

  6. No te compliques.. es mas facil instalar los drivers en el disco interno. Que tengas problemas de drivers, no es culpa del disco y si instalas el mismo windows en el disco externo, tendras los mismos problemas.

  7. Genial el tuto 🙂 lo intentare ya que ando con el problema que se me daño mi disco duro de mi notebook IDE y comprar uno nuevo es muy costoso, así que esta podría ser una opción económica. Igual seria agradable que subieras el ISO final para la gente sin experiencia o para los flojos como yo :D!! aunque bueno, por urgencia lo intentare compilar yo mismo 😛

  8. Hola,
    Cuando copiáis y pegáis lo que hay que añadir en txtsetup.sif en Notepad++, os lleváis también las comillas «» de esta fuente que, por alguna razón que desconozco, el instalador no las interpreta correctamente. Reemplazarlas escribiendo las de toda la vida. (Y lo mismo en usbboot.inf…)

    Saludos!

  9. El error del TXTSETUP viene de las comillas de esta página, concretamente de la parte de «6-F) Nuevo archivo: USBBOOT.INF»
    TODAS LAS COMILLAS QUE HAY AHI SON OTRO ESTILO DE COMILLAS DISTINTO AL QUE HAY QUE PONER.
    SOLUCION: Cuando copieis y pegueis, seleccionar cualquier comilla que hayais pegado desde aqui y darle a copiar. Dentro del Bloc de Notas pulsais «Edición» y luego «Reemplazar…». En el primer recuadro pegais UNA SOLA VEZ ese par de comillas que previamente habeis copiado. En el segundo recuadro escribid vosotros a mano las comillas del teclado (SHIFT+2). Pulsais en «Reemplazar todo», guardais y listo!

  10. Buenas a todos, mira que he estado mirando foros y foros para ver como se hace esto de CAB SDK y no lo entiendo.

    Linea de comandos?? abro la consola de windows con cmd,y aquí escribo el cabarc x USBSTOR.IN_??? no reconoce esta orden.

    ME lo podéis explicar de manera simple y que lo entienda un crío???

    gracias a todos.

  11. a mi tambien me sale ese error de pantalla azul. luego de terminar de copiar los archivos , reinicia, aparece el logo de windows al iniciar y sas sale pantalla azul con el error que describes, alguna solucion???

  12. Segui todos los pasos correctamente, incluyendo el cambio de las comillas en el ultimo archivo, ademas de revisar que no se me colara ninguna por ahi. La cosa es que cuando me dispongo a instalar, y seleccion mi usb para realizar la instalacion, me dice que no se puede crear la carpeta «WINDOWS». Intento darle formato desde la instalacion y me dice que no se puede que esta malo el dispositivo. Me ayudas?

  13. HOLA TERMINE TODO EL PROCESO PERO AL ESTAR COPIANDO LOS ARCHIVOS AL DD POR MEDIO DE LA INSTALACION ME INDICA QUE LA TERCERA LINEA DE USBBOOT.INF ESTA DAÑADA Y ME INDICA SALIR

Los comentarios están cerrados.