How to Install XP on an External Hard Drive

By Jason Gordon

Windows XP was built to run on internal system hard drives. It has no simple setup or configuration option to run on an external hard drive. It is possible to \"make\" XP run on an external hard drive, but it involves a lot of tweaking, including making the external drive bootable and editing boot files.

Things You'll Need

  • Windows XP CD
    USB external hard disk drive
    ISO creation software (WinISO)
    CD-burning software that can handle ISO files

Creating the Windows XP Boot Image

Step 1

Set your BIOS so that USB booting is enabled. (Your BIOS must support boot from USB.) Connect the USB external hard drive directly to your computer.

Step 2

Make an ISO image (an .iso file is an archive disk image of an optical disk) from the Windows XP CD-ROM using your preferred software. Save to your hard drive.

Step 3

Open the ISO file you just created. Navigate to the I386 folder, and select the following files:
TXTSETUP.SIF, DOSNET.INF, USB.IN_, USBPORT.IN_, and USBSTOR.IN_.
Extract the files and put them into a folder to work with.

Step 4

Open a command prompt and use Cab SDK to extract the contents of the .IN_ files; Cab SDK is a Microsoft compression and decompression program available as an .exe file in your Windows directory. Each of the .IN_ files contains exactly one .inf file. An example command line would be: \"cabarc x USBSTOR.IN_\" . You should end up with three new files in the folder, called usb.inf, usbport.inf and usbstor.inf. Delete the .IN_ files.

Step 5

Open the files using a simple text editor such as Notepad. Edit them according to the section below titled \"Editing Files.\"

Step 6

Open the previously created ISO file and delete the files you extracted earlier. Replace them with the newly modified files.

Step 7

Save the ISO files and burn them to a CD using the burning software of your choice.

Step 8

Insert the CD you created and restart the computer. Make sure it is set to boot from CD. Most computers will do this automatically, but if not, hit F8 on startup to choose boot options. When asked, choose the external USB hard drive to install WIndows XP.

Editing Files

Step 1

Open TXTSETUP.SIF and move the following entries from [InputDevicesSupport.Load] to the [BootBusExtenders.Load]:
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbstor = usbstor.sys

Step 2

Move the following entries from [InputDevicesSupport] to [BootBusExtenders]:
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

Step 3

Insert the following in the [HiveInfs.Fresh] section:
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

Insert the following commands into the [SourceDisksFiles] section:

[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

Step 4

Open DOSNET.INF and change the second [Files] section to look like this:
[Files]
d1,usbboot.inf
d1,_default.pif
d1,12520437.cpx
d1,12520850.cpx

Step 5

Open USB.INF and change lines in the [StandardHub.AddService] and [CommonClassParent.AddService] sections to look like this:

[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

Step 6

Open usbport.inf and change lines in the [EHCI.AddService], [OHCI.AddService] , [UHCI.AddService] and [ROOTHUB.AddService] sections to look like this:

[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

Step 7

Open usbstore.inf and change lines in the [USBSTOR.AddService] section to look like this:

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

Step 8

Create a new file called USBBOOT.INF in the same directory as the other modified files, and paste the following content into it:
[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

Step 9

Delete your original extracted .IN_ files. Open the command prompt and navigate to the folder with your changed files. Execute these commands to repack the files:
cabarc n USB.IN_ usb.inf
cabarc n USBPORT.IN_ usbport.inf
cabarc n USBSTOR.IN_ usbstor.inf

The three IN_ files should now exist again. Return to Step 6 above to complete.