Results 1 to 9 of 9

Thread: Install Windows XP on a USB Flash Drive

  1. #1
    Newbie
    Join Date
    Sep 2008
    Posts
    3

    Install Windows XP on a USB Flash Drive

    After a bunch of surfing I finaly found someone who knew what they were talking about. In my case I was trying to install a copy of TinyXP onto a flash drive for my little thin client. Every time it would goto boot windows I would get a Stop Error 0x0000007B. This fixed that issue.

    http://www.ngine.de/article/id/8

    Credits

    ...must go to the people that made this guide possible in the first place. In recent months, a few blokes going by the handles of mkiaer, Dietmar and sisal and a few others from the 911.net forums came up with many good pieces of research on how to enable any NT-based Windows to boot from a USB-drive. Little of this guide would exist without them - in fact the only reason why i write this up is that my particular solution seems to be lower effort than any of the steps i saw before. Many of the steps here are the result of their research.

    Version History:

    * v1.0 - 3rd Mar 2006
    rewritten, tested and working against two different drives with my laptop.
    * v0.9 - 29th Feb 2006
    initial version, untested

    What works?

    Basically, everything as far as i can see. After completing this tutorial, your Windows XP install should directly boot off your USB-drive, and be fully upgradable, DirectX games will run, all apps i tested work like normal, speed is the same as with a real HDD (you need USB2 though) - so it is in fact a fine solution as far as i can see.

    Host Hardware USB hardware Successful
    Dell Latitude D820 WD Pocket Drive 80gb Yes
    DFI Infinity Ultra 2
    Dane Elec 4GB USB Stick
    Yes
    Asus M2A-VM HDMI
    Adata PD2 4GB Stick
    Yes
    HP Compaq 6510b
    WD 2908A
    Yes
    Compaq nc6400
    WD2500BEV
    Yes
    Compaq nc6400
    Trekstore i.Beat 2GB
    No
    Compaq nc6400
    Hitachi DK23EA-30
    No
    Compaq nc6220
    TrackStore DataStation XU
    Yes
    HP Pavillion dv6700t
    InfoSafe USB with Toshiba SATA 250GB
    Yes
    Compaq nc6120
    Lacie 80gb
    Yes
    Asus P5LD2-VM
    Vantec IDE to USB cable + Maxtor 60gb PATA
    Yes
    Thinkpad T42
    WD HDD Passport 2
    Yes
    Acer Aspire 5600
    Ipod 20g Photo
    Yes
    Thinkpad T43
    Generic 80gb USb2 case
    Yes
    HP Pavillion dv1000
    Generic USB2 HDD
    Yes
    Thinkpad R61
    Generic USB2 / Seagate 120 GB
    Yes
    Dell Latitude D620
    PQI i221 USB stick
    Yes
    Fujitsu Lifebook E8410C
    Shintaro USB2 + 80GB Samsung
    Yes
    Dell Inspiron 6400
    generic USB2 enclosure
    Yes
    Intel 945 GNT
    Kingston 4GB SDHC with USB adapter
    Yes
    HP nx6110
    Sandisk Cruze 8gb
    Yes
    HP nx6110
    OneTouch4 Mini
    No
    Dell Latitude D620
    Seagate FreeAgent 500GB
    Yes
    Acer Aspire 5710G
    Adata 4GB stick
    Yes
    ...and LOTS more...



    Disclaimer

    This is a hobby project of mine. I will not assume ANY responsibility for the correctness of this guide, nor can I be made liable for any errors, hardware or software problems / loss that are caused by following this guide. Basically, if things screw up, its your own fault. Do not follow the guide if you fear data loss.

    Requirements

    * An existing Windows install for carrying out the steps in this tutorial
    * A USB2-compliant Hard disk drive (or a big USB2 stick, see remarks below)
    * An original Windows XP CD (tested only against SP1 so far, but reported to work on other versions)
    * A registered version of WinISO (or any other software that allows direct editing of ISO files)
    * The Microsoft CAB SDK
    * A CD-burning software that can handle ISO files. I like the free burnatonce

    How To:

    Summary:

    We will dump the contents of your original Windows XP CD , extract a few files from the Image using ISO modification software, edit the files, and put the modified versions back on the ISO. The resulting ISO image is burnt back onto a CD media, and can then directly be used to install Windows on your USB drive.

    I am also covering a few pitfalls that happened to me, in hope they will save you a bit of time.



    1) Does your computer support booting from USB?

    Usually, if its an option in your BIOS boot sequence menu, the answer to this is yes. If its not there, look for BIOS updates. If you are not sure, proceed and see what happens ;-)

    2) Sorting out the "Bootability" of your USB-Drive

    Connect your USB drive to your computer, directly, without a Hub. Then, shut down your computer, disconnect any other hard disk drives from it, and insert your original Windows XP CD into the drive. Start the installation, and proceed to the section where you are allowed to pick a hard drive. If it goes beyond the partition selection, your drive is already fine for booting Windows XP. If not (seems to be the cases with many of the Freecom USB HDDs for example), you will get an error like "Windows is unable to find your drive, partition, data etc bla". This is usually not a big problem. All you need to do is "properly" format the drive. Reboot into your normal Windows, and get this HP tool , and use it to format your HDD completely. I chose NTFS format, worked fine everytime i tried. After this, my drives are recognized as valid installation devices by the Windows XP installer.
    (In fact, i did not manage to create a USB primary partition with FAT32 that was recognized as being installable)

    3) Dumping the original Windows CD into an ISO File



    Pretty easy one. Simply open WinISO, and select Actions -> Make ISO from CDROM, and save your CD image.



    4) Extracting the files we need to work on



    After the CD dump is done, close and reopen WinISO. Then, open the ISO file you just created using File -> Open.
    Now, click the I386 folder, and select the following files (Ctrl key to multi-select)

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

    Select Actions -> Extract and put the resulting files into some folder to work on them.

    5) Unpacking IN_ files





    Use the Cab SDK (from the command line) for extracting the contents of the .IN_ files. Each of them contains exactly one .inf file. If you are unsure how to use the Cab SDK, here is an example command line: "cabarc x USBSTOR.IN_" . You should end up with three new files in the folder, called:

    * usb.inf
    * usbport.inf
    * usbstor.inf

    You can now delete the .IN_ files.

    6) Editing the files

    This is the main job. i ll also try to explain a bit whats happening. Use a simple Texteditor like Notepad.

    6-A) TXTSETUP.SIF

    This file is loaded on the initial install step by the Windows XP CD installer. In this file, we will change the way Windows treats USB devices during system setup -- the default is to only treat them as input devices during installation -- we will change this to include mass storage driver support (which needs to be loaded into the installer much earlier in order to work).

    First, move the following entries from [InputDevicesSupport.Load] to the [BootBusExtenders.Load] section , as shown here



    [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



    ... now the same for [BootBusExtenders] and [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



    Next, we also have to write several keys into the registry. Convieniently, the txtsetup.sif allows you to specify files that are parsed and instered into the registry at install time. Insert the following in the [HiveInfs.Fresh] section:

    [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



    and also in [SourceDisksFiles]

    [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

    Finally, save and close TXTSETUP.SIF. We are done with it.

    6-B) DOSNET.INF

    Now, 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

    ....

    6-C) usb.inf

    Change the bolded lines in the [StandardHub.AddService] and [CommonClassParent.AddService] sections:

    [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

    Change the bolded lines in the [EHCI.AddService], [OHCI.AddService] , [UHCI.AddService] and [ROOTHUB.AddService] sections:

    [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

    Change / Add the bolded lines in the [USBSTOR.AddService] section

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

    6-F) new file: USBBOOT.INF

    Create a new file called USBBOOT.INF in the same directory as your other changed files, and put 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.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



    7) Repack the inf files into their original IN_ format

    If you have not already deleted your extracted .IN_ files, do so now. They need to be replaced. Open a DOS shell again, and navigate to the folder with your changed files. Then exceute the following commands:

    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.

    Congratulations. All out modifications are done.

    8) Inject the changed files into the ISO

    Open your Windows CD image again with WinISO. Navigate to the I386 folder, and delete the following files from the ISO, saving the changes to the ISO afterwards:

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

    Just to be sure all is updated in the ISO, cloase and repoen the ISO in WinISO. Now, again go to the I386 folder and select "Add Files". Now add your changed files, in detail:

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

    Save the ISO. You are done.

    9) Burn the ISO back to CD

    Feel free to use any burning package you want. I used the free and simple Burnatonce

    10) Install Windows XP from the CD



    Shut down your computer. Disconnect ANY internal and external hard drives (so Windows cannot find them during installation and mess up their Master Boot Records hehe). Some computers will have trouble to boot without an internal HDD attached, check in your BIOS and, if possible, remove the HDD from the boot sequence and set the USB Harddisk as the first boot device, and the CDROM as second.

    Also, now connect your USB Harddrive directly to the computer, without any Hubs in between.





    Windows should install just fine, with the exceptions noted below.

    Issues you will encounter during installation:

    * During driver installation, the USB drivers will prompt you, as they are "not certified" - This is normal. Our changes invalidated the checksum, and therefore the driver is no longer signed. Just press "yes" a couple of times.
    * Upon completion of the install, the system will complain once on the first bootup that the pagefile does not exist. You can ignore this for now, as Windows will work fine without it. People are looking at fixing this issue, but its not critical for now.



    Once everything is up and running , shut down and reconnect all your drives.



    This version of the guide has been tested successfully on the follwoing hardware configurations - please email me your infos if you have successfully completed the guide, so I can add your configuration as well:



    If you have troubles, please visit the forum dedicated to this tutorial.

    have a lot of fun!

  2. #2
    Low Bitrate
    Join Date
    Dec 2004
    Posts
    84
    USB Multiboot 10 is a good alternative also.

  3. #3
    Low Bitrate
    Join Date
    Nov 2005
    Posts
    60
    i thought USB Multiboot 10 was to create a bootable USB (ie to install on a laptop with no cdrom drive), not to actually install XP on a USB drive?

  4. #4
    FLAC
    Join Date
    Jun 2006
    Location
    Calgary, Alberta
    Posts
    1,237
    Blog Entries
    1
    Great tutorial, but isnt this going to significantly reduce the life of a usb flash drive? Especially since there is no sort of wear leveling built into most usb keys.

  5. #5
    Newbie
    Join Date
    Feb 2008
    Posts
    9

    And what about the speed of booting

    Hi all, I also followed the tutorial to setup my xp on a USB stick (8Gb, 10Mb/s write speed and 20Mb/s read speed) but it is extremely slow. What is your boot time with your TinyXP? and what is the size of your XP on the stick?
    thaks for your reply

  6. #6
    Neither darque nor pervert DarquePervert's Avatar
    Join Date
    Apr 2004
    Location
    Elsewhere
    Posts
    13,949
    Quote Originally Posted by nobb View Post
    Great tutorial, but isnt this going to significantly reduce the life of a usb flash drive? Especially since there is no sort of wear leveling built into most usb keys.
    Yes, it will. There are ways around this, namely EWF (I believe) which will create an install of XP that doesn't need to write to the flash drive.

    Quote Originally Posted by bricolux View Post
    Hi all, I also followed the tutorial to setup my xp on a USB stick (8Gb, 10Mb/s write speed and 20Mb/s read speed) but it is extremely slow. What is your boot time with your TinyXP? and what is the size of your XP on the stick?
    thaks for your reply
    You're not going to see any performance advantages booting from flash memory a this stage.
    A USB flash memory device is going to reduce performance even further. I wouldn't recommend this setup at all.

    Those using flash drives to boot are using an IDE-to-flash adapter to use CF drives as boot device.

    I suggest doing some reading on the forums about it. There is quite a bit written about this very setup.
    Have you looked in the FAQ yet?
    How about the Wiki?



    Under normal circumstances, a signature would go here.

  7. #7
    Newbie
    Join Date
    Feb 2008
    Posts
    9
    Thanks for your answer DarquePervert.

    With a usb2 stick having a 20Mb/s read time I thought I would be slower than with a 30Mb/s HHD, but not that slow!

    So the solution using to XP embedded with IDE Compact Flash cards is just not affordable ...
    Thanks anyway.

  8. #8
    Newbie
    Join Date
    Jan 2012
    Posts
    2

    Having some problems installing blue screen after first reboot

    Hey and thank you for a great guide, having some issues with installing on USB thumb drive:

    Ive modified files acouding to guide burned the iso
    rebooted without harddrive and started installation without any problems
    formated usb it copies files as it should, computer reboots to continue installation
    and Bluescreen apears. any ideas of why?

  9. #9
    Newbie
    Join Date
    Jan 2012
    Posts
    2

    Question Possible to make a driver like SATA AHCI driver but for USB

    Hey is it possible to make a driver like SATA AHCI driver but for USB Storage like this guide?
    like extract what .sys .inf files needed for usb, then remake txtsetup.inf whit needed parameters?

Similar Threads

  1. Windows XP w/wireless Linksys USB vs NetStumbler trying to wardrive
    By clean customs in forum Wireless Communications
    Replies: 8
    Last Post: 01-07-2009, 11:18 AM
  2. VS6 and Windows XP - Install problem
    By InHoc in forum Coders Corner
    Replies: 5
    Last Post: 10-15-2006, 06:31 PM
  3. Why can't I install windows XP ? please help ?
    By shinjetko in forum Newbie
    Replies: 24
    Last Post: 09-19-2006, 02:02 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •