Jump to content

[SOLVED] Install Multiple XP/Vista/PE/2003 from USB


Recommended Posts

This post has evolved quite a bit since I started out on my quest to boot from a single USB hard drive which will then be able to launch every single OS install as well as every diagnostic tool from it as well. So below I will list the methods I use to get my USB hard drive working, of course you don't have to follow this but it's here as a guide.

Thanks:

Without these guys this would not have been possible!

  • wimb

  • cdob

  • jaclaz

  • ilko_t

AIM:

To be able to install multiple OS installs from the single USB hard drive

Software needed:

wimb's usb_multiboot - check the stickies in this forum for the download details.

a hex editor

WAIK (if you want to have multiple Vista sources)

a DOS menu program or an autoplay creator (for multiple Vista)

OS/TOOLS Sources

Hardware:

USB Hard drive preferably > 20GB

Outline:

Use wimb's usb_multiboot to create XP sources as well as adding the boot sector onto the hard drive and load it with NTLDR.

NTLDR uses boot.ini which then launches grub4dos automatically

Reason for not using boot.ini is because grub4dos is superior in handling and loading bootloaders whereas boot.ini needs boot sectors which will cut out one extra step. Grub4dos has extra functionality which we can add to later such as emulating virtual hard disks and fdd's, it can load Vista's BOOTMGR directly and also its menu is also better to look at
;)

Reason why I personally did not load grub4dos's bootsector directly to the hard drive but went through the trouble of using NTLDR (boot.ini) then loading grub4dos is because I already have grub4dos installed on my other hard drive and grub4dos's bootsector looks for the file "grldr" automatically which is already present on my other hard drive so it might load my permanent hard drive instead of my USB. So I have renamed and hex edited the grldr on the USB drive to look for "brldr" and set boot.ini to load brldr instead. If you do not have this dillema, feel free to use grub4dos's boot sector installer if you wish to cut out the extra step of loading NTLDR then grub4dos.

Currently working on:

  • [sOLVED]
    Trying to get multiple versions of Windows 2003 to co-exist on the USB hard drive.

---------------

Multiple PE

---------------

This applies to anything that uses WINPE1 (Windows FLP install, BartPE, ERD Commander, etc)

As PE was initially intended to be run off a CD the original structure for them would be inside the [i386] folder.

If your PE came from a USB source it would be in the folder [minint].

It's not important which folder it is in because we will rename them once it is copied to the USB hard drive anyways. Make sure you copy winbom.ini to the USB root as well.

The convention you should stick to is:

[mini01]

[mini02]

[mini03]

[minixx]

So once we have the folders copied to our hard drive and renamed appropriately we will need to also copy the setupldr.bin file from the [minixx] folder to the root of the USB and rename them according to this convention:

peld1

peld2

peld3

peldx

Now you will need to change the first occurrence of txtsetup.sif in PELDx to notsetup.sif.

gsar -sBT:x00:x00:x00\:x00:x00:x00txtsetup -rBT:x00:x00:x00\:x00:x00:x00notsetup %USB%:\PELDx -b -o

Change all occurances of minint to minixx.

gsar -i -o -s\minint -r\minixx peldx

Notes:

WinFLP requires all additional folders on the CD to be on the USB root, such as the [setup] which houses the flp.wim which setup requires. So as a rule of thumb: copy all folders from the source CD for WinFLP, ERD Commander and BartPE to the root of USB drive and rename the i386 folder to minixx.

WinFLP's setupldr.bin has a checksum protection which will error if you hex edit it, I suggest you use BartPE's one.

---------------

Multiple Vista

----------------

Ok this is not much of an automated process but it is somewhat more streamlined than my original concept.

Dump all your Vista sources onto the USB hard drive (11 gigs for me - x86 + x64 Vista + x86 + x64 Server 2008) - Best if they are in a separate folder... tree view for mine is below

USB

|

|----->BOOTMGR

|

|----->[boot]

| |

| |--->Modified BCD store

|

|----->[sOURCES]

| |

| |--->x86.wim

|

|----->[Vista]

|

|----->[Vistax86]

| |

| |--->[sOURCES]

|

|

|----->[Vistax64]

| |

| |--->[sOURCES]

|

|

|----->[serverx86]

| |

| |--->[sOURCES]

|

|

|----->[serverx64]

|--->[sOURCES]

First thing is to copy the BOOTMGR file along with the [sOURCES] and [bOOT] folders from any Vista source to the root of the USB hard drive. You can delete the Install.wim from the [sOURCES] folder.

Now what you will need to do is create a new Windows PE 2.0 (x86) from WAIK - I won't go into details about that here but it's very simple. Reason we use the x86 version of WINPE2 is because the 32bit version of WINPE2 can launch the setup of both 64 and 32 versions (with some tweaking as discussed below).

Mount your WINPE2 image on a local hard drive folder with read/write and you will need to modify your WINPE2 with:

Create a text file in [mounted_wim_folder]\Windows\System32\ and name it: winpeshl.ini

Edit the winpeshl.ini with:

[LaunchApp]
AppPath=%SYSTEMDRIVE%\menu.cmd

What the winpeshl.ini file will do is start up WINPE2 and run whatever your AppPath program is as a shell. So you can make a simple DOS batch menu for you to select whichever Vista/Server 2008 you want to install. What I did was made an autorun program using Autoplay Studio which will prompt me with 4 options and whatever I click on, it will launch a batch file which will run the setup for that OS. Two important things you need to keep in mind is:

1) You will need to find the USB hard drive before you can launch the setup. So you may want to add this line to your batch files:

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 Z) DO IF EXIST %%i:\usb_tag_file SET USB=%%i:\

You can then launch the setup by adding this line to your batch file:

%USB%\Vista\Vistax86\sources\setup.exe

2) You cannot load a x64 setup from a x86 WINPE2, the workaround for this is to copy contents of the SOURCES folder (including Setup.exe but excluding boot.wim and install.wim) from the x86 version of the Vista source. **IMPORTANT** do not overwrite the install.wim in the destination folder or you will just be installing the x86 version!

Once you have modified the WINPE2, make sure you commit the changes. If you have more than one WINPE2 on your USB, you will then need to edit the bcd store inside the BOOT folder on the root of your USB using bcdedit.exe - if you don't have any other WINPE2, you can just copy the BOOT and SOURCES folders and the BOOTMGR file from any Vista source to the <ROOT> of the USB hard drive, then name your newly created WINPE2 as boot.wim and copy it over to the SOURCES folder and overwrite the original.

So now, from your USB's grub4dos menu, load the bootmgr on the root of your USB it will then load the bcd store. If you have more than one WINPE2 it will load the BOOTMGR menu, if not it will load into the WINPE2 that you have created. Once that WINPE2 loads, it should load your batch menu or VBS or if you really want to be fancy... an autoplay application.

------------------------

Multiple Windows 2003

------------------------

The process of getting multiple sources of Windows 2003 onto your USB hard drive is pretty much the same as making multiple sources of XP with a few more extra steps.

First, you will need these files:

Cracked setupldr.bin : http://www.msfn.org/board/post-a9193-crack...PLDR-1-.BIN.zip

ModifyPE : http://unattended.msfn.org/files/global/MODIFYPE.EXE

Steps:

  1. Copy and replace the cracked setupldr.bin to the i386 folder of your source before you use usb_multiboot.
  2. Create the source using usb_multiboot, for this example we will assume the source folders are [$WIN_xx$.~LS] and [$WIN_xx$.~BT]
  3. Goto [$WIN_xx$.~BT] and you should find both setupdd.sys and setupdd.sy_ Delete setupdd.sy_ and apply the following to setupdd.sys
modifype.exe setupdd.sys -c


makecab setupdd.sys


I have not yet tested putting a checksum on setupldr.bin but I would assume this method will work as well. So if you don't want to download the cracked setupldr.bin you may wish to try the following but it may not work.

modifype.exe XATxx -c

and

modifype.exe XPSxx -c

----------------

Multiple XP

----------------

This has changed a lot since wimb updated the usb_multiboot to automatically do this, so basically, run the usb_multiboot program twice (or however many times you want) making sure you carefully select the settings again for each time you run it.

Below are the original instructions for historic and nostalgic reasons.

Thanks to everybody who made this possible for me - especially these superstars: jaclaz, ilko_t, cdob and wimb

I just want to list the steps I took below, I can't promise that it will work for all of you but it worked for me.

01 - Make XP1 Source using usb_multiboot.cmd

02 - Rename $WIN_NT$.~BS and $WIN_NT$.~LS to $WIN_01$.~BS and $WIN_01$.~LS

03 - Rename SETUPLDR.BIN to XPS01 and rename TXTSETUP.SIF to TXTSET01.SIF

04 - Make XP2 Source using usb_multiboot.cmd

05 - Rename $WIN_NT$.~BS and $WIN_NT$.~LS to $WIN_02$.~BS and $WIN_02$.~LS

06 - Rename SETUPLDR.BIN to XPS02 and rename TXTSETUP.SIF to TXTSET02.SIF

07 - HEX Edit XPS01 replace every reference of "$WIN_NT" to "$WIN_01"

- HEX Edit XPS01 replace every reference of "txtsetup" to "txtset01"

08 - HEX Edit XPS02 replace every reference of "$WIN_NT" to "$WIN_02"

- HEX Edit XPS02 replace every reference of "txtsetup" to "txtset02"

09 - EXPAND setupdd.sy_ to setupdd.sys located in your ~BS folders

- For $WIN_01$.~BT\setupdd.sys run "GSAR -i -o -s$:x00W:x00I:x00N:x00_:x00N:x00T:x00$:x00.:x00~:x00L:x00S:x00 -r$:x00W:x00I:x00N:x00_:x000:x001:x00$:x00.:x00~:x00L:x00S:x00 setupdd.sys"

- For $WIN_02$.~BT\setupdd.sys run "GSAR -i -o -s$:x00W:x00I:x00N:x00_:x00N:x00T:x00$:x00.:x00~:x00L:x00S:x00 -r$:x00W:x00I:x00N:x00_:x000:x002:x00$:x00.:x00~:x00L:x00S:x00 setupdd.sys"

10 - MAKECAB setupdd.sys for each of the ~BS folders

11 - Use MakeBS3.cmd (located in your usb_multiboot package under \makebt)

"MakeBS3.cmd [uSB_DRIVE_LETTER]:\XPS01" and

"MakeBS3.cmd [uSB_DRIVE_LETTER]:\XPS02"

- This will make 2 boot sector files in your [uSB_DRIVE_LETTER]:\btsec folder named

XPS01.bs and XPS02.bs

12 - EDIT boot.ini and add the lines "C:\btsec\XPS01.bs" and "C:\btsec\XPS02.bs"

13 - In \$win_01$.~ls\I386\ren_fold.cmd change

SET TAGFILE=\$WIN_NT$.~BT

ren %USBDRIVE%\txtsetup.sif txtsetup.bak

ren %USBDRIVE%\$WIN_NT$.~BT WIN_NT.BT

ren %USBDRIVE%\$WIN_NT$.~LS WIN_NT.LS

to

SET TAGFILE=\$WIN_01$.~BT

ren %USBDRIVE%\txtset01.sif txtset01.bak

ren %USBDRIVE%\$WIN_01$.~BT WIN_01.BT

ren %USBDRIVE%\$WIN_01$.~LS WIN_01.LS

In \$win_01$.~ls\I386\undoren.cmd change

SET TAGFILE=\$WIN_NT$.~BT

ren %USBDRIVE%\txtsetup.bak txtsetup.sif

ren %USBDRIVE%\WIN_NT.BT $WIN_NT$.~BT

ren %USBDRIVE%\WIN_NT.LS $WIN_NT$.~LS

to

SET TAGFILE=\$WIN_01$.~BT

ren %USBDRIVE%\txtset01.bak txtset01.sif

ren %USBDRIVE%\WIN_01.BT $WIN_01$.~BT

ren %USBDRIVE%\WIN_01.LS $WIN_01$.~LS

14 - Repeat the above for the batch files in \$win_02$.~ls\ making sure you replace 01 with 02

0

Edited by andy_le2k
Link to comment
Share on other sites


I already replied you on the other thread:

http://www.msfn.org/board/Install-Multiple...ve-t114523.html

there is NO need to DOUBLE POST.

Read Rules:

http://www.msfn.org/board/Forum-Rules-Upda...ead-t18408.html

2.a Use some common sense. Don't post your question under multiple topics. Think before posting and choose the right topic for you question or answer. When posting, have something to say, not just "My First post!" or "Cool site!!!" We sort of have the idea by now :-).

(bolding is mine)

I pointed you here to make you read what is already done, and to give you a starting point, I don't think anyone is going to do your homework, as said, start with the known-to-be-working method:

http://www.msfn.org/board/install-XP-USB-t111406.html

http://www.911cd.net/forums//index.php?showtopic=20089

(just one flavour of XP install), add a PE, when you have ONE install working, try with a second one.

Always do one thing at the time, otherways it will be impossible to troubleshoot the problems.

jaclaz

Edited by jaclaz
Link to comment
Share on other sites

Thanks again for the links.

Been trying so hard to get this to work but no hope.

First when I tried the usb_multiboot6 program it works perfectly when installing XP but the problem now is that I can only have 1 xp source. The program makes hard drive setup folders $WIN_NT$.~BT and $WIN_NT$.~LS. This makes it very difficult to add a second source as they would need to replace the default folders. I also tried renaming these folders as well as the txtsetup.sif and bootldr files and replace them with another source but that didn't work either.

Grub4dos:

I kept getting the txtsetup.sif corrupted, status 14 error whenever it loads a hex edited \PRO1\setupldr.bin

Heaps of thanks to jaclaz for letting me learn so much and actually getting at least one xp to setup from usb hard drive. I'm very sorry for double posting just thought this project of mine should be in this forum rather than the other.

Link to comment
Share on other sites

Vista source folders can't be renamed or moved to subfolders and as such only one Vista edition can be present on the hard drive.

Install of Vista from Folder on NTFS USB-stick was realised as described here

http://www.msfn.org/board/vista-t114092.html&st=6

Boot in this case via boot.ini Menu > GRUB4DOS Menu > Select Windows PE 2.0

Then the Windows Boot Manager Menu Appears and one can launch Windows PE 2.0

In Win PE 2.0 Command Window > Select USB-Drive and Folder with Vista Setup > Run Vista Setup

It will be possible to combine XP , Vista x86 and Vista x64 for Install from USB.

Different versions of XP cannot be combined on one stick,

but it is very convenient to use different sticks for this purpose.

Link to comment
Share on other sites

Generally speaking, two different installs of XP use, say, 95% of the same files.

Now, if you use the normal USBmultiboot setup, and image/backup the resulting install directories, then re-use USBmultiboot for the different install, you can make a compare/diff between the two copies.

Nothing prevents you from having two directories anywhere on the stick, like:

\setup01

and

\setup02

containing the ONLY the files that change between the two versions of setup.

Then you boot from the PE on the stick (or also from a DOS flavour) and simply copy the files in one of the two setup directories overwriting those already in $WIN_NT$.~BT or $WIN_NT$.~LS, writing a simple batch for doing the above should be trivial.

Sure, you cannot choose at boot whether you instal setup01 or setup02, but making the switch should not be difficult, it's just a reboot and a few xcopy/robocopy commands away. ;)

Strings $WIN_NT$.~BT and $WIN_NT$.~LS are hardcoded in SETUPLDR.BIN, though I don't remember anyone previously experimenting with this, it should be perfectly possible to hexedit SETUPLDR.BIN jsut like we do for \I386 or \minint. :unsure:

jaclaz

Edited by jaclaz
Link to comment
Share on other sites

Strings $WIN_NT$.~BT and $WIN_NT$.~LS are hardcoded in SETUPLDR.BIN, though I don't remember anyone previously experimenting with this, it should be perfectly possible to hexedit SETUPLDR.BIN jsut like we do for \I386 or \minint. :unsure:

Interesting ideas :)

String $WIN_NT$.~BT occurs twice in SETUPLDR.BIN but $WIN_NT$.~LS is not found there.

TXTSETUP.SIF does NOT contain string $WIN_NT$.~LS and SetupSourcePath = "\"

It seems that hexediting will not bring the desired solution .... ;)

May be a second stick with other XP version is more convenient ;)

Link to comment
Share on other sites

There is an old MS article for NT, which gives some clues, I have no idea if this could be used for 2000/XP/2003.

I did play with these settings in the past without much luck. Didn't test for this particular scenario.

http://support.microsoft.com/kb/150497

txtsetup.sif:

[setupData]

;

; SetupSourceDevice is optional and specifies the nt device path

; of the device to be used as the setup source. This overrides

; the CD-ROM or winnt local source.

;

;***remove the semicolon from the following line and make sure it

;***references the physical location of the system files.

;***In the example this will be partition1 since C: is the first

;*** partition on the disk.

;

SetupSourceDevice = \device\harddisk0\partition1

;

; SetupSourcePath specifies the path relative to the source device

; where the setup source tree is to be found.

; All media descriptors are relative to this.

;

;*** Change the "SetupSourcePath" line to the path of your system

;*** repair files.

;*** In the example, I would change the variable to equal \repair.

;

SetupSourcePath=\repair

MajorVersion = 4

MinorVersion = 0

DefaultPath=\WINNT

OsLoadOptions = "/nodebug"

Link to comment
Share on other sites

Thanks cdob, very useful info.

Have you tested with this line included?

SetupSourceDevice = \device\harddisk0\partition1

From the above article

; SetupSourceDevice is optional and specifies the nt device path

; of the device to be used as the setup source. This overrides

; the CD-ROM or winnt local source.

edit: Never mind, seems I did:

http://www.msfn.org/board/boot-install-USB...730#entry684730

Memory is getting shorter and shorter, I should start again taking the medicine :lol:

Edited by ilko_t
Link to comment
Share on other sites

Vista source folders can't be renamed or moved to subfolders and as such only one Vista edition can be present on the hard drive.

Install of Vista from Folder on NTFS USB-stick was realised as described here

http://www.msfn.org/board/vista-t114092.html&st=6

Boot in this case via boot.ini Menu > GRUB4DOS Menu > Select Windows PE 2.0

Then the Windows Boot Manager Menu Appears and one can launch Windows PE 2.0

In Win PE 2.0 Command Window > Select USB-Drive and Folder with Vista Setup > Run Vista Setup

It will be possible to combine XP , Vista x86 and Vista x64 for Install from USB.

Different versions of XP cannot be combined on one stick,

but it is very convenient to use different sticks for this purpose.

Unless the stick is multipartitioned then different versions can be combined but of course this is only theoretical.

Automating the process is kinda of non-trivial, we need a utility something like vlite/nlite for multi-install so the images can be created and copied over to a stick.

The requirement would go something like this:

1) Select the Destination type (usb-hd/usb-stick)

2) Select the source OS (multi-checkboxes)

3) Determine if Destination space is sufficent

4) Partition the Drive

5) Copy over the Source Files

6) Setup the boot menu and bcd store

7) Give final directions on reboot

Link to comment
Share on other sites

Then you boot from the PE on the stick (or also from a DOS flavour) and simply copy the files in one of the two setup directories overwriting those already in $WIN_NT$.~BT or $WIN_NT$.~LS, writing a simple batch for doing the above should be trivial.

This is what I did, I kind of gave up on the idea of a smooth menu where you can install multiple flavours on the fly. But this method still does not work!

What I did:

I renamed the <$WIN_NT$.~BT> and <$WIN_NT$.~LS> folders as well as the txtsetup.sif and setupldr.bin on the root to <SETUP01-BT>, <SETUP-01-LS>, txtsetup01.sif and setup01ldr.bin.

I then used multibootxp6.cmd to add the other xp setup to the hard drive.

Everything seems fine but during the txtsetup phase it fails to format or gives an error about the txtsetup.sif file being missing or corrupted.

May be a second stick with other XP version is more convenient

The whole point of my project is to have ALL the OS that I frequently need to install on one usb hdd to make things more convenient.

Thanks everybody so much for the replies and ideas this is very facinating as it is much as it is annoying ;)

Link to comment
Share on other sites

but during the txtsetup phase it fails to format or gives an error about the txtsetup.sif file being missing or corrupted.

Did you edited setupldr.bin? Change setupldr.bin, apply renamed names.

And edit setupdd.sys.

Link to comment
Share on other sites

but during the txtsetup phase it fails to format or gives an error about the txtsetup.sif file being missing or corrupted.

Did you edited setupldr.bin? Change setupldr.bin, apply renamed names.

And edit setupdd.sys.

Yep, I went to great lengths to make sure everything is renamed, backed up then made another source, then to restore the previous source i renamed and backed up everything again!

Every single file gets renamed/replaced but txtsetup will still give me errors. I will try to get screenshots of these errors and post them here.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...