How to Install XP on an External Hard Drive
By Jason Gordon
Updated February 10, 2017
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.
Creating the Windows XP Boot Image
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.
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.
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.
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.
Open the files using a simple text editor such as Notepad. Edit them according to the section below titled \"Editing Files.\"
Open the previously created ISO file and delete the files you extracted earlier. Replace them with the newly modified files.
Save the ISO files and burn them to a CD using the burning software of your choice.
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
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
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
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
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
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
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
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
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
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.
Items you will need
Windows XP CD
USB external hard disk drive
ISO creation software (WinISO)
CD-burning software that can handle ISO files
Writer Bio
Jason Gordon is a professional writer and editor. In addition to online work, he has written for "Texas Highways," "AAA Southwest," "Glimpse," the "University of Washington Daily" and the "Dallas Morning News." Gordon's passions include animals, reading and finding the perfect pairings of pastry and espresso.