I've been experimenting a bit with various ways to install XP from USB, and I've found a way which ticks all the boxes (at least for me, maybe not for you).
I thought I would share it with you, and hopefully it might work for you as well.... Note that I really haven't invented anything... I have merely compiled all the information I was able to find in a number of places (mostly here and there and also there), and combined it all together. All the credit should go to the clever guys who have developped great tools in the first place !
The main idea is to install XP from an ISO located on a USB drive, but without loading it into RAM.
So here is how it goes.
1. Get ready:
- Create a (temp) destination folder on your HDD, to store the updated Windows setup, say C:\IntegratedXP
- Put your original XP setup CD in your drive, say D:\
- Download DP_Base.exe from http://driverpacks.net/downloads , together with the DriverPacks you're interested in (MassStorage at the very least)
- Download RyanVM Integrator, together with Ryan update packs (hot fixes), e.g. from here or there, or even this great All-In-One update pack
2. Run DP_Base.exe and prepare for the hotfixes and DriverPacks integration in XP setup
- select driver packs to integrate, enable MassStorage text mode
- leave default settings, installation platform = disc, method 2 + GuiRunOnce, KTD disabled
- got to "overview" and select "export settings" to mysettings.ini
- open mysettings.ini, and replace the line
location = "D:\"with
location = "C:\IntegratedXP"Note that this is just a trick because C:\IntegratedXP is empty at this stage, and DP_Base won't let you configure anything with an invalid source.
3. Run RyanVM Integrator:
- select C:\IntegratedXP as destination
- select your update pack and addon pack
- go to advanced tab, enable advanced options. Select run a program after integration = full path to DPs_BASE.exe and enter parameters = /SETTINGS:"full path path to mysettings.ini" (with quotes), and enable "leave integrator open"
- return to the main tab, press integrate !!
4. Go to the destination folder C:\IntegratedXP
- Patch the file \i386\presetup.cmd created by DriverPack integration [see details below]. This patch is needed to solve problems with internal card readers and also will look for the DriverPacks in WinSetup\OEM
- Possibly slim down the XP setup with nLite. For a clean install you can safely remove the LANG folder and all the WIN9X* folders
5. Return to RyanVM
- Select "C:\IntegratedXP" as source
- Choose an ISO file name, say C:\XP_SP3.ISO
- Make !
6. Copy all necessary files to your USB stick
- Create a floopy image (look here for help) called WinVBlock.ima, containing the following files from the WinVBlock driver: txtsetup.oem, WinVBlk.INF, WVBlk32.sys
- Add a dummy WINNT.SIF to the virtual floppy, comprised of 65,536 spaces.
- Copy WinVBlock.ima in U:\WinSetup
- Add menu entries for GRUB4DOS [see details below]
- You should end-up with the following structure on your stick:
7. Enjoy install from USB !!
- Multiple answer files can be used, just copy all answer files in U:\WinSetup and create new entries in menu.lst accordingly !
- The XP setup ISO is not loaded into RAM which is great on older machines with little RAM or USB 1.1 at boot time !
- Install to disk image is also possible (thanks Sara and Wimb for the idea !!!)
A few details here:
- To patch the presetup.cmd created by DP_Base: replace the two lines
FOR %%i IN (C D E F G H I J K L M N O P Q R S T U V W X Y) DO IF EXIST "%%i:%TAGFILE%" SET CDDRIVE=%%i:& GOTO DPsFound :DPsFoundwith
for /f "tokens=1 delims=: " %%? in ('mountvol.exe ^|find ":\"') do (dir %%?:%tagfile% >nul 2>&1 && set CDDRIVE=%%?:wheelchair: if not defined CDDRIVE (goto EOF)Note that this correction has been suggested here, although variants are possible.
At last, replace all occurences of "\OEM" with "\WINSETUP\OEM" (another great little idea which isn't mine !)
- The following menu.lst can be used to install XP. Boot twice from USB, leaving your stick connected !:
title Start XP Setup - WinVBlock driver # Create the virtual floppy which contains WinVBlock drivers find --set-root /WinSetup/WinVBlock.IMA map --mem /WinSetup/WinVBlock.IMA (fd1) map --mem /WinSetup/WinVBlock.IMA (fd0) # Direct mapping of the XP setup ISO (not loaded in RAM) map /WinSetup/XP_SP3.iso (0xff) # # Optional # # Map the IMG as a filedisk # find --set-root /XP-1.IMG # map /XP-1.img (hd0) # # Dummy WinVBlock parameter disk (0x55) # map --rd-size=2048 # map --mem (rd)+4 (0x55) # map --hook # # Tell WinVBlock the filename for (hd0) # write (0x55) #!GRUB4DOS\x00v=1\x00XP-1.img\x00\x80\x00 chainloader (0xff) title Continue XP Setup - WinVBlock driver # Create the virtual floppy which contains WinVBlock drivers find --set-root /WinSetup/WinVBlock.IMA map --mem /WinSetup/WinVBlock.IMA (fd1) map --mem /WinSetup/WinVBlock.IMA (fd0) # Replace the dummy answer file in the virtual floppy with a genuine one map --hook dd if=()/WinSetup/WINNT.SIF of=(fd0)/WINNT.SIF dd if=()/WinSetup/WINNT.SIF of=(fd1)/WINNT.SIF # Direct mapping of the XP setup ISO (not loaded in RAM) map /WinSetup/XP_SP3.iso (0xff) # # Optional # # Map the IMG as a filedisk # find --set-root /XP-1.IMG # map /XP-1.img (hd0) # # Dummy WinVBlock parameter disk (0x55) # map --rd-size=2048 # map --mem (rd)+4 (0x55) # map --hook # # Tell WinVBlock the filename for (hd0) # write (0x55) #!GRUB4DOS\x00v=1\x00XP-1.img\x00\x80\x00 root (hd0,0) chainloader /ntldr
Just uncomment the blocks of code if you want to install to XP-1.img instead of a physical disk !!
At last, note that there might be a few flaws in this method, that I haven't seen. Feel free to tear this appart and let me know of potential problems !