• Announcements

    • xper

      MSFN Sponsorship and AdBlockers!   07/10/2016

      Dear members, MSFN is made available via subscriptions, donations and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, become a site sponsor and ads will be disabled automatically and by subscribing you get other sponsor benefits.
HJW

Install Vista from USB

15 posts in this topic

Hi,

First of all I am glad this subject has its own section. Though I think we should include Vista from usb here too.

Currently I am using an 3rd party program to format my usbdevice as vistaboot disk and I just replace boot.wim and add install.wim: done. Ofcourse there is some other way to do it manually with some smaller tool or cmd, I dont know of yet.

Therefore I started this topic to discuss how to set up your usb device for vista-installation.

HJW

0

Share this post


Link to post
Share on other sites

Hi,

Vista's bootmgr can be invoked from ntldr, only need to invoke a modified bootsector, which starts bootmgr. Jaclaz's makeBS.cmd does the job just fine, on NTFS partitions too, only bootmgr must be renamed to something with 5 letters, this is for the record.

It would be easy to add Vista support, I had this idea a while ago, but seems we forgot about it :)

I suppose if is not Vlited, stick must be 4GB or bigger? Don't have Vista DVD with me to check.

As far as I remember what has to be added is only:

1. Copy all files and folders from Vista source to USB stick root

2. makeBS.cmd U:\bootmgr /A "Start Vista Setup"

Edited by ilko_t
0

Share this post


Link to post
Share on other sites

Hi HJW and ilko_t,

Thanks for your Support and for starting this subject on Install of Vista from USB.

In fact when we use USB_MultiBoot2.cmd for making a MultiBoot USB-Drive,

the possibility to Install Vista from USB is already build in. :)

As ilko_t indicated we need to make a BootSector File which refers to BOOTMGR

and that is exactly what occurs with USB_MultiBoot2.cmd Program.

In my Guide for MultiBoot USB-stick with boot.ini Menu I indicated in Section B-6

the possibility to Boot from Windows PE 2.0 and than launch Vista Setup.

For this purpose I used an USB-Harddisk with 2 partitions,

where the first partition is 1900 MB and is SET Active and has FAT Format (using PeToUSB)

Add Windows PE 2.0 files to the U_CONTENT Source Folder and

Run USB_MultiBoot2.cmd to make the MultiBoot USB-Drive.

On the second partition we have enough room to place our Vista Setup Installation Files,

whereas an USB-stick will in general be too small.

Boot with Windows PE 2.0 from USB-Drive and in the cmd Window

Run Vista Setup from the second partition of the USB-Drive.

It is important to take care that at the Restart after Expanding Files,

Booting occurs from the Harddisk on which we Install Vista. ;)

In a modern BIOS having a BIOS Bootmenu via Press F8 or Esc,

we can select to Boot only once from USB-Drive and default from Harddisk.

So than everything is easy.

For older BIOS it is needed to unplug the USB-Drive just at the Restart of Vista Install.

Earlier unplugging gives Install Error (cannot be solved).

To late unplugging USB-Drive gives Boot Failure, which is solved by

Restart of the computer enabling to Continue Vista Setup.

So in this case everything runs also fine for Install Vista from USB. :)

Booting with Windows PE 2.0 does not take extra time,

since it is otherwise included in Vista Setup.

Regards,

wimb

EDIT: I have tried also to Boot from BartPE and than Run Vista Setup,

however this FAILED. Vista says: Incompatible PE Version !!

Edited by wimb
0

Share this post


Link to post
Share on other sites

Having just recently increased the length (for the record from 5' to 7 1/2' ;)) of the stick with which I won't touch Vista :whistle:, I have no idea how a VISTA-made NTFS bootsector invokes bootmgr.

If anyone is kind enough to post or however send me a complete NTFS bootsector (8.192 bytes) made natively under VISTA, I will gladly try and find the differences as compared to a normal 2K/XP-made one and hopefully find a way to avoid the renaming of bootmgr.

jaclaz

0

Share this post


Link to post
Share on other sites

Hi jaclaz,

Here is the NTFS BootSector invoking BOOTMGR made by Vista Format.

Hope you can find something interesting .....

Cheers,

wimb

NTFS_BS_BOOTMGR.zip

Edited by wimb
0

Share this post


Link to post
Share on other sites
Hi jaclaz,

Here is the NTFS BootSector invoking BOOTMGR made by Vista Format.

Hope you can find something interesting .....

Cheers,

wimb

At first sight, it seems NOT like a "good" done-from-scratch VISTA format, as the string "GRLDR" is present at offset 604. :whistle:

On the other hand, it seems like the string "BOOTMGR" is at offset 514 (where in the "old" bootsector NTLDR was). :)

So, it seems that the previous:

000000512   05 00 4E 00 54 00 4C 00  44 00 52 00 04 00 24 00   ..N.T.L.D.R...$.
000000528 49 00 33 00 30 00 00 E0 00 00 00 30 00 00 00 00 I.3.0..à...0....

has become:

Offset	  0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15

00000512 07 00 42 00 4F 00 4F 00 54 00 4D 00 47 00 52 00 ..B.O.O.T.M.G.R.
00000528 04 00 24 00 49 00 33 00 30 00 00 E0 00 00 00 30 ..$.I.3.0..à...0

i.e. it seems like the bootloader name is "terminated" by a

04 00 24 00 49 00 33 00 30 00 00 E0 00 00 00 30

sequence.

If this is confirmed, this would open the possibility of overcoming the current "5 letter length" limit for the name of the loader in the MakeBS batch. :thumbup

The leading "05" in my example above comes from a NTFS sector done under Windows 2000, the new "07" is Vista, would it be possible that a XP NTFS bootsector has "06"?

Iìll need to do some tests... :wacko:

jaclaz

Edited by jaclaz
0

Share this post


Link to post
Share on other sites

Has Uploaded a better Vista NTFS Bootsector.

In my XP NTFS Bootsector I have also a leading "05" as in your example for Windows 2000.

Also the "terminated" sequence is the same in XP NTFS Bootsector.

It seems you are right in that the current "5 letter length" limit for the name of the loader

in the MakeBS batch can be overcome.

However, Comparing the Bootcode itself of XP NTFS and Vista NTFS BootSectors,

reveals that the code is completely different, so that simply replacing NTLDR by BOOTMGR will not work.

wimb

Edited by wimb
0

Share this post


Link to post
Share on other sites

I would be interested in both XP and Vista running from one USBflashdrive.

Since I am going to buy a fast 8GB flashdrive soon I was hoping to put my DVDrw in trash and look forward to fast installations :P

0

Share this post


Link to post
Share on other sites
I would be interested in both XP and Vista running from one USBflashdrive.

Since I am going to buy a fast 8GB flashdrive soon I was hoping to put my DVDrw in trash and look forward to fast installations :P

If you want to only have 1 source of Vista on your USB the easiest way is to use the usb_multiboot.cmd program then copy over the [bOOT] [sOURCES] folders and BOOTMGR to the root of the USB.

Then edit the grub4dos menu.lst with:

title Setup Windows Vista
find --set-root /grldr
chainloader /BOOTMGR

this will work if you only need one version of Vista to be on the usb but more than one will not work.

So what if you needed more than one version, say x86 and x64 (well there's a guide out there to combine them into one install.wim) or what if you had one integrated with SP1 and one original?

Honestly I have tried many methods - adding new entry to BCD, hex editing, renaming install.wim (works but messy), renaming folders (works but also messy).

The best way that I have found so far is to create a Windows PE 2, boot into that with your usb and launch the setup program directly. This actually works very well because when Vista installs it requires to load Windows PE 2 anyways so you already crossed that bridge. What's best is the ability to have the source files in any folder you want just as long as you have install.wim in the same folder as setup.exe. Also WinPE2 can run both x86 and x64 files so u can launch both setups from one PE.

I hope this helps.

Edited by andy_le2k
0

Share this post


Link to post
Share on other sites

Your solutions for Install of Vista from USB were already described here

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

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

http://www.msfn.org/board/Install-Vista-US...6.html&st=2

and GRUB4DOS menu.lst of USB_MultiBoot_8.zip provides already entries for Install of Vista from USB

using chainload of BOOTMGR

Edited by wimb
0

Share this post


Link to post
Share on other sites
i.e. it seems like the bootloader name is "terminated" by a

04 00 24 00 49 00 33 00 30 00 00 E0 00 00 00 30

sequence.

I tried to use SETUPLDRBIN and SETUPLDR.BIN instead of NTLDR in NTFS BootSector File using the same

byte sequence for terminating the bootloader name, but booting did not occur.

So it seems to me that we have to live with the 5-letter limit of bootloader name in NTFS BootSector File.

Actually renaming SETUPLDR.BIN as XPSTP is OK and is used now for all FileSystems by USB_MultiBoot_8.cmd

in order to avoid confusion.

wimb

0

Share this post


Link to post
Share on other sites

So, it seems that the previous:

000000512   05 00 4E 00 54 00 4C 00  44 00 52 00 04 00 24 00   ..N.T.L.D.R...$.000000528   49 00 33 00 30 00 00 E0  00 00 00 30 00 00 00 00   I.3.0..à...0....
has become:

Offset	  0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 1500000512   07 00 42 00 4F 00 4F 00  54 00 4D 00 47 00 52 00   ..B.O.O.T.M.G.R.00000528   04 00 24 00 49 00 33 00  30 00 00 E0 00 00 00 30   ..$.I.3.0..à...0
i.e. it seems like the bootloader name is "terminated" by a

04 00 24 00 49 00 33 00 30 00 00 E0 00 00 00 30

sequence.

 

dubbio.gif   If I may hazzard a guess, it's a PASCAL-like Unicode string, initiated by a little-endian word counter "07 00" (meaning) 0x07, with no terminator...  so we have 0x07 BOOTMGR, instead of 0x05 NTLDR !!!  :hello:

1

Share this post


Link to post
Share on other sites

dubbio.gif  If I may hazzard a guess, it's a PASCAL-like Unicode string, initiated by a little-endian word counter "07 00" (meaning) 0x07, with no terminator...  so we have 0x07 BOOTMGR, instead of 0x05 NTLDR !!!  :hello:

Nice guess. :)

 

According to the Starman:

http://thestarman.pcministry.com/asm/mbr/NTLDR.htm

the other "qualifying" part should be the EB 12 90 90 (in the NT 5.x bootsector) and - logically - the EB 22 90 90 in the NT 6.x bootsector, that should remain "unmoved" @ offset 0x0256.

 

jaclaz

0

Share this post


Link to post
Share on other sites

Sure. But, now that you've mentioned it, I think I should remark that 0xEB is an interesting animal: it's a short jump (the intimates call it "JMPS") and it transfers execution unconditionally to a position denoted by it's argument, which is a signed byte, and which is counted starting immediately after it (and, thus, the 1st 0x90 is position "0")... so that on XP and before, that's 18 bytes starting from the 1st 0x90 and, on Vista, :puke: that becomes 34 bytes (which is actually true). Hence, it's interesting to note that the "never executed instruction" remains vallid! I cannot help but wonder:   isn't there really really any way the execution can ever get there? If so, why carefully correct it to keep it valid?   dubbio.gif

0

Share this post


Link to post
Share on other sites

At first sight (and without having even tried to disassemble anything) it is clear that in the "NT52" bootsector the EB12 is a "unconditional jump" over some (reserved) bytes, not entirely unlike (please read as "exactly like" the "leading" EB5290 of the whole bootsector.

In the NT52 bootsector these bytes are all 00's, but in the NT60 the (larger number of) bytes do contain "05 00 4E 00 54 00 4C 00 44 00 52", i.e. again the NTLDR string with the 05 "length" of the string.

 

It is entirely possible that it represents a "failsafe" kind of provision to attempt booting the "old" NTLDR instead of the BOOTMGR, and knowing from experience how the good MS guys like to keep old code, I wouldn't be surprised if it was a provision to have, some form of dual booting with the "previous" NT version, or if it is still *somehow* used by the current BOOTMGR when booting NT 5.x's. :unsure:

Just for the record (and OT) for some time the BOOTMGR was capable of booting NT 5.x's fine:

http://reboot.pro/topic/9613-bootmgr-winloadexe-nt5x/

http://www.betaarchive.com/forum/viewtopic.php?t=9602

 

And we have to remember how BOOTMGR still parses BOOT.INI "directly" for all "non NT 4.x and NT 5.x entries" anyway:

http://reboot.pro/topic/17877-uefi-windows-8-bios-grub4dos-multiboot-usb-harddisk/?p=170654

and this is pretty much undocumented/was found out by "pure chance" (and relatively recently), so I wouldn't as well be surprised that there are still some cards hidden in BOOTMGR's (or the bootsector's) sleeves. :w00t:

 

jaclaz

0

Share this post


Link to post
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.