MSFN Forum: How to boot/install from USB key ? - MSFN Forum

Jump to content


  • 25 Pages +
  • « First
  • 5
  • 6
  • 7
  • 8
  • 9
  • Last »
  • You cannot start a new topic
  • This topic is locked

How to boot/install from USB key ? - the historical thread - how it all began

#121 User is offline   ilko_t 

  • MSFN Addict
  • Group: Super Moderator
  • Posts: 1,605
  • Joined: 06-December 06
  • OS:none specified
  • Country: Country Flag

Posted 18 April 2007 - 05:06 AM

Quote

title Phase 1 WinXP Text Mode Setup
map --read-only (hd0) (hd1)
map --hook
find --set-root /ntldrstp
chainloader /ntldrstp
savedefault 1
sets root (hd0,0), instead of the proper (hd1,0) as ntldrstp is found on both places, that's why I use root (hd1,0), then chainloader /ntldrstp should be fine, instead of chainloader (hd1,0)/ntldrstp



For now I am interested why the same menu.lst did not work on the laptop, I will try to explain it again.

On the laptop if I use the following:

Quote

itle Phase 1 WinXP Text Mode Setup
map --read-only (hd0) (hd1)
map --hook
root (hd1,0)
chainloader (hd1,0)/ntldrstp
savedefault 1
it causes laptop to restart, the same way as if NTDETECT.COM is not found in the root. Same entries work just fine on the desktop and result in proper BOOT.INI later like

Quote

signature(de33eaf8)disk(0)rdisk(0)partition(1)\WINDOWS


If I use

Quote

title Phase 1 WinXP Text Mode Setup
rootnoverify (hd0,0)
chainloader /ntldrstp
on the laptop SETUP starts fine, but cannot confirm whether BOOT.INI will be correct, a lot has to be backed up before I can make tests.
If I use it on my desktop PC, SETUP goes fine, but ends up with incorrect BOOT.INI, pointing to

Quote

multi(0)disk(0)rdisk(1)partition(1)\WINDOWS
giving hal.dll is missing, note it does NOT use signature(....) this time.

So we have either to find out why it doesn't work on the laptop, or just find a way to correct BOOT.INI after the final phase of TXT SETUP, when I beleive it's created. With rdisk(1) in boot.ini mapping is not possible, because as I saw in \system32\$winnt$.inf it will look for the installation files on disk(1)

Quote

[data]
unattendedinstall=no
floppylessbootpath=\Device\HardDisk1\partition1
producttype=winnt
standardserverupgrade=no
win31upgrade=no
sourcepath=\device\harddisk1\partition1\$win_nt$.~ls
This file was the same with both variants of menu.lst. It seems ntldr, setupldr.bin and the TXT mode setup at some point "ignore" GRUB disk mapping in different way and/or stage.

So, why does the laptop reboot ?


#122 User is offline   jaclaz 

  • The Finder
  • Group: Developers
  • Posts: 11,433
  • Joined: 23-July 04
  • OS:none specified
  • Country: Country Flag

Posted 18 April 2007 - 05:58 AM

ilko_t said:

as ntldrstp is found on both places,

Well, who put ntldrstp on the HD? :blink:
However in this case (on the stick that is prepared before) one can use another file, such as menu.lst, or in "find --set-root" command or directly a "special" marker file, simply open notepad, and save the file as USBOOTME.1ST on the stick.....,"find --set-root /USBOOTME.1ST" will not possibly get the "wrong" root. ;)

ilko_t said:

For now I am interested why the same menu.lst did not work on the laptop


hmmm, it is possible that the laptop BIOS has some incompatibilities with grub4dos. :wacko:


What happens on the laptop with the "alternate method":

Quote

title Phase 1 WinXP Text Mode Setup
map (hd0) (hd1)
map (hd1) (hd0)
root (hd0)
chainloader /ntldr
savedefault 0


You can try, issuing single command lines from the command line, one by one, grub4dos in this case is more "verbose" and one can hopefully pinpoint the single command that causes an error.

jaclaz

#123 User is offline   ilko_t 

  • MSFN Addict
  • Group: Super Moderator
  • Posts: 1,605
  • Joined: 06-December 06
  • OS:none specified
  • Country: Country Flag

Posted 18 April 2007 - 06:17 AM

Quote

Well, who put ntldrstp on the HD?
GRUB disk mapping i suppose :) If single mapping is used file is found on both drives, if double mapping is used it appears only on the correct drive. But double mapping doesn't work, have a look at the RED quotes in my previous post.
This disk mapping in GRUB is really interesting, as I mentioned it appears that when we do single mapping, we "fool" setupldr.bin and/or ntdetect.com which drive is which, but in later stage this is corrected. In GUI mode thi doesn't work the same way.
It also seems that map (hd0) (hd1) results in same information aviable on both drives, like a "virtual" copy or image, at the same time contents of hd1 are not aviable, thats why for the GUI mode double mapping is needed.

I did try single command in GRUB, actually I use that the most and apply changes later in menu.lst, in my tests set--root /ntldrstp did not do the trick, so I prefer to use
.....
root (hd1,0)
chainloader (hd1,0)/ntldrstp
.....

About the laptop- I was using 2GB Buffalo stick, tried to use 1GB Lexar and using the very same menu.lst (with single mapping) worked :thumbup
Thats where the long Dietmar's thread will comes handy :), I beleive setupldr.bin, ntdetect.com and txtsetup.sif must be written first, before copiyng the other files, may be the laptop BIOS can't see the needed files if they are written too late, but that cause no problems to the AN7 bios. Or it just the USB stick size which matters. However on the Lexar I had an old Nlited installation, not the same "pure" as on the Buffalo.
I will test that later today, fingers crossed :)

This post has been edited by ilko_t: 18 April 2007 - 06:21 AM


#124 User is offline   jaclaz 

  • The Finder
  • Group: Developers
  • Posts: 11,433
  • Joined: 23-July 04
  • OS:none specified
  • Country: Country Flag

Posted 18 April 2007 - 08:58 AM

Yep. if the image is somehow doubled, the fond --set-root won't work, as devices are scanned in order....

A lot of info is coming out from your experiments, I'll have to study it a bit and do some more tests myself...continue reporting... :thumbup

jaclaz

#125 User is offline   ilko_t 

  • MSFN Addict
  • Group: Super Moderator
  • Posts: 1,605
  • Joined: 06-December 06
  • OS:none specified
  • Country: Country Flag

Posted 18 April 2007 - 10:51 AM

Well, the same version of GRUB and the final menu.lst worked on another desktop, testing with older/newer versions of GRUB gave result.
The one I was using 0.4.3 - 2007-03-16 was causing troubles on the Dell laptops, I tested it on Inspiron 6000 and 6400.

Both 0.4.2 - 2006-11-26 and 0.4.3 - 2007-04-12 (latest available) worked just fine with the 2GB Buffalo stick on the Dells :) :)
In a next post, if nothings wrong shows until then, I will summarize all the steps.

#126 User is offline   jaclaz 

  • The Finder
  • Group: Developers
  • Posts: 11,433
  • Joined: 23-July 04
  • OS:none specified
  • Country: Country Flag

Posted 19 April 2007 - 05:21 AM

ilko_t said:

So we have either to find out why it doesn't work on the laptop, or just find a way to correct BOOT.INI after the final phase of TXT SETUP, when I beleive it's created. With rdisk(1) in boot.ini mapping is not possible, because as I saw in \system32\$winnt$.inf it will look for the installation files on disk(1)


Problem might be if the destination drive is formatted as NTFS, one could put up a triple boot on the stick with DOS files and this utility:
EditBINI™
This utility will allow you to edit \BOOT.INI in an NTFS partition from DOS or Win9x.
http://www.terabyteu.../utilities.html

But if the path to the drive is wrongly hardcoded into $winnt$.inf, one would need to use NTFS4DOS, which is free for PERSONAL USE only:
http://www.free-av.c...a_ntfs4dos.html
to access the NTFS drive from DOS.

Personally, besides licensing problems for Commercial users, I always prefer the simpler solution so I guess the above could only be an "extreme" workaround, if nothing else work.

I didn't get if you completed the install and if you got with the

Quote

[data]
unattendedinstall=no
floppylessbootpath=\Device\HardDisk1\partition1
producttype=winnt
standardserverupgrade=no
win31upgrade=no
sourcepath=\device\harddisk1\partition1\$win_nt$.~ls

the correct C:\ letter on the hard disk (without migrate.inf).

I guess that the setup re-scan the systems and gets again the "HardDisk0" and "HardDisk1" directly from Bios, bypassing the "temporary patch" made by grub4dos.

In a couple VM I tried, the

TXT mode
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
....

works allright, most probably one could prepare instead of a pair of menu entries, several pairs, to allow for "strange" BIOS behaviour...


jaclaz

#127 User is offline   ilko_t 

  • MSFN Addict
  • Group: Super Moderator
  • Posts: 1,605
  • Joined: 06-December 06
  • OS:none specified
  • Country: Country Flag

Posted 19 April 2007 - 09:33 AM

I can confirm that

Quote

color black/cyan yellow/cyan
timeout 10

default /default

title Phase 1 WinXP Text Mode Setup
map --read-only (hd0) (hd1)
map --hook
root (hd1,0)
chainloader (hd1,0)/ntldrstp
savedefault 1


title Phase 2 WinXP GUI Mode Setup
map (hd1) (hd0)
map --hook
root (hd0,0)
chainloader (hd0,0)+1
savedefault 0
worked fine for the TXT mode on 5 machines - 2 Dell Inspiron Laptops, 1 Dell Dimmension 5150, 1 ABIT AN7 motherboard and 1 Asus P4R800-V motherboard. The problem with the Dell Laptops was in the version of GRUB I was using - 0.4.3 - 2007-03-16. This was causing PC to reboot when TXT Setup was chosen and single disk mapping was performed. The most recent version 0.4.3 - 2007-04-12 and the previous stable version 0.4.2 - 2006-11-26 worked fine on the same Laptops.

The GUI part I finished only on the AN7 PC and all was fine, proper drive letters, boot.ini etc. Later on I will test the whole process on the ASUS PC.



In the migrate.inf I left just these entries, this was enough hard drive to get every time C, and the USB stick D during the SETUP and the make USB stick read-only during the first stage:

Quote

[Version]
Signature = "$Windows NT$"

[Addreg]
HKLM,"SYSTEM\MountedDevices",,0x00000010

HKLM,"SYSTEM\ControlSet001\Control\StorageDevicePolicies","WriteProtect",%REG_DWORD%,1

[Strings]
;Handy macro substitutions (non-localizable)
REG_SZ = 0x00000000
REG_BINARY = 0x00000001
REG_DWORD = 0x00010001
REG_MULTI_SZ = 0x00010000
REG_SZ_APPEND = 0x00010008
REG_EXPAND_SZ = 0x00020000
May be just the line HKLM,"SYSTEM\ControlSet001\Control\StorageDevicePolicies","WriteProtect",%REG_DWORD%,1 is enough to set read-only mode for the USB storage, but I haven't tested it.

The rest is just as cdob suggested.


If no mapping is made for the TXT mode, on the ABIT AN7 machine it results in incorrect boot.ini pointing to rdisk(1), instead of the proper rdisk(0).

Tests in Vmware or QEMU wouldn't be relevant, because of the lack of USB boot. If the USB image is used as HD1 XP setup will handle it later during the process in different way than the USB stick.



In GRUB mapping I found that single

Quote

map (hd0) (hd1)
map --hook
results contents of hd0 to be accessible from both hd0 and hd1, for example NTLDRSTP will be found on both drives. Contents of hd1 are not accessible and could be used when we are not interested in the contents of hd1.

Quote

map (hd1) (hd0)
map--hook
does the opposite, the contents of hd0 are this time not accessible, but contents of hd1 are found on both hd0 and hd1. For example NTLDRSTP won't be found from GRUB neither on hd0 nor on hd1 if it was originally on hd0, whereas NTLDR, originally on hd1 will be found on both hd0 and hd1.

During the TXT setup "map (hd0) (hd1)" will be preserved I think up until the last stage, when scanning for partitions and writing the new boot.ini, when the installer finds the new XP installation on hd0, or it scans only fixed drives? No clues why it works this way.

If double mapping is used

Quote

map (hd0) (hd1)
map (hd1) (hd0)
map --hook
this will "swap" the two hard disks, giving access to the contents of both using the new disk number. If we use double mapping, which logically seems the proper one, XP TXT setup complains about missing txtsetup.sif. Why starting it from second hard drive causes that I don't know. Double mapping could be used for the GUI part, when we need XP to be on hd0 and the source files on hd1, but is not needed since the XP installer at some point rescans or resets this information.

Another idea- wouldn't it be better to use a similar to the XP CD approach for the default boot order, to make the hard drive default with 10-15 secs time-out as the TXT mode is used only once, but the hard drive will have to be booted at least twice (or more for custom installation).


edit: we also need to undo the write-protected mode for USB once install is completed, how do we do that?

This post has been edited by ilko_t: 19 April 2007 - 10:51 AM


#128 User is offline   jaclaz 

  • The Finder
  • Group: Developers
  • Posts: 11,433
  • Joined: 23-July 04
  • OS:none specified
  • Country: Country Flag

Posted 19 April 2007 - 01:37 PM

ilko_t said:

Another idea- wouldn't it be better to use a similar to the XP CD approach for the default boot order, to make the hard drive default with 10-15 secs time-out as the TXT mode is used only once, but the hard drive will have to be booted at least twice (or more for custom installation).

Yes, that would be nice, but right now I have no idea on how to do it, unless we cycle to another
menu.lst through the "config-file" command, but I cannot see at the moment how to conditionally do that.
If I remember right, there is a feature like this in "Linux" grub, that uses variables, there is this guy, Adrian Raulete, that made this "Grub superdisk" or something like that. It uses this feature to make a very complex multilevel boot menu but last time I played with grub4dos it didn't have this feature, or at least I wasn't able to make it work. I'll have a look at the idea and see if something comes out.

ilko_t said:

edit: we also need to undo the write-protected mode for USB once install is completed, how do we do that?

Well, that should be the easiest thing, it should just be a Reg file merged at the end of GUI setup or, if you prefer, on first "real boot" of the newly installed OS.
I am not an expert at all on this but in one or the other "unattended" sections of the board there is info for this.
Maybe cdob might help on this particular thing.

jaclaz

This post has been edited by jaclaz: 19 April 2007 - 01:39 PM


#129 User is offline   ilko_t 

  • MSFN Addict
  • Group: Super Moderator
  • Posts: 1,605
  • Joined: 06-December 06
  • OS:none specified
  • Country: Country Flag

Posted 21 April 2007 - 11:59 AM

Here is a quick guide how I proceeded with 100% success on ATA hard drives.

1. Format the USB stick, I used HP USB Format tool, because XP format was reported as incorrect in GRUB.
2. Install GRUB MBR on the stick, the quickest way I found is by GRUBINST_GUI for WIN
3. Get the latest GRUB4DOS and copy GRLDR to the USB root.

Create MENU.LST in USB root

Quote

color black/cyan yellow/cyan
timeout 15

default 1

title Phase 1 WinXP Text Mode Setup
map --read-only (hd0) (hd1)
map --hook
root (hd1,0)
chainloader /ntldrstp

title Phase 2 WinXP GUI Mode Setup
map (hd1) (hd0)
map --hook
rootnoverify (hd0)
chainloader +1
This way the default entry is GUI mode, TXT mode must be selected manually. With these GUI entries XP can be installed and booted later from another partition on the hard drive, not only from the first.

4. Backup your current BOOT.INI and in the XP setup folder \I386 run

Quote

winnt32 /makelocalsource /noreboot
after it's finished restore BOOT.INI

5. Copy two new folders in the USB stick root - $WIN_NT$.~BT and $WIN_NT$.~LS

6. In \$WIN_NT$.~BT modify
WINNT.SIF

Quote

[data]
msdosinitiated="1"
floppyless="1"
AutoPartition="0"
UseSignatures="no"
InstallDir="\WINDOWS"
winntupgrade="no"
win9xupgrade="no"

[GuiRunOnce]
"regedit /s %systemdrive%\windows\system32\undoUSBWP.reg"


and

MIGRATE.INF

Quote

[Version]
Signature = "$Windows NT$"

[Addreg]
HKLM,"SYSTEM\MountedDevices",,0x00000010
HKLM,"SYSTEM\ControlSet001\Control\StorageDevicePolicies","WriteProtect",%REG_DWORD%,1

[Strings]
;Handy macro substitutions (non-localizable)
REG_SZ = 0x00000000
REG_BINARY = 0x00000001
REG_DWORD = 0x00010001
REG_MULTI_SZ = 0x00010000
REG_SZ_APPEND = 0x00010008
REG_EXPAND_SZ = 0x00020000
If you wish you can preserve your USB storage drive letter keeping the relevant entries in migrate.inf. Note your current USB drive letter and find the line (mine is set to U)

Quote

HKLM,"SYSTEM\MountedDevices","\DosDevices\U:",0x00030001,\
5c,00,3f,00,3f,00,5c,00,53,00,54,00,4f,00,52,00,41,00,47,00,45,00,23,00,52,\
00,65,00,6d,00,6f,00,76,00,61,00,62,00,6c,00,65,00,4d,00,65,00,64,00,69,00,\
61,00,23,00,37,00,26,00,31,00,34,00,39,00,31,00,63,00,63,00,33,00,34,00,26,\
00,30,00,26,00,52,00,4d,00,23,00,7b,00,35,00,33,00,66,00,35,00,36,00,33,00,\
30,00,64,00,2d,00,62,00,36,00,62,00,66,00,2d,00,31,00,31,00,64,00,30,00,2d,\
00,39,00,34,00,66,00,32,00,2d,00,30,00,30,00,61,00,30,00,63,00,39,00,31,00,\
65,00,66,00,62,00,38,00,62,00,7d,00

, I found that it's not needed. [Strings] must be present.

7. Create:

undoUSBWP.reg

Quote

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies]
"WriteProtect"="0"
and

hiveOEM.inf

Quote

[Version]
Signature = "$Windows NT$"
DriverVer=07/01/2001,5.1.2600.2180

[AddReg]
;WriteProtect USB
HKLM,"SYSTEM\CurrentControlSet\Control\StorageDevicePolicies","WriteProtect",0x10001,1
and place them in $WIN_NT$.~LS\i386

8. Copy TXTSETUP.SIF, SETUPLDR.BIN and NTDETECT.COM from \$WIN_NT$.~BT to root of USB stick. Delete BOOTSECT.DAT (necessary?) and rename SETUPLDR.BIN to NTLDRSTP, or modify the relevant entries in MENU.LST

9. Add the following lines to TXTSETUP.SIF

Quote

[SourceDisksFiles].....
.....

hiveOEM.inf = 100,,,,,,_x,,3,3
undoUSBWP.reg = 100,,,,,,_x,2,0,0
....
....
[HiveInfs.Fresh]
AddReg = hiveOEM.inf,AddReg

10. If you use unattended mode for the setup make sure you delete the whole [Unattend] section, otherwise you won't be able to use System Restore and SETUP will not prompt on which partition to install.

I used BTS mass-storage drivers pack, with KTD option and Nlited fully unattended installation, to keep Nlite options copy the relevant entries from the original WINNT.SIF to the new one, don't forget to delete the whole [Unattended] section. [Data] section do not modify except UseSignatures="no". Also copy $OEM$ to \$WIN_NT$.~LS\i386 and OEM (BTS scripts) to the root of USB stick.

Thanks a lot to porear and jaclaz :)
All credits for the most important part- how to write- protect the USB flash go to cdob, many thanks :)

edit: Forgot to mention that removing write-protect mode after GUI is finished is also done in steps 6 and 7.
edit2: some typos corrected, txtsetup.sif

This post has been edited by ilko_t: 13 May 2007 - 08:43 AM


#130 User is offline   ilko_t 

  • MSFN Addict
  • Group: Super Moderator
  • Posts: 1,605
  • Joined: 06-December 06
  • OS:none specified
  • Country: Country Flag

Posted 21 April 2007 - 12:21 PM

On ATA drives I had success on all 3 different machines, but on SATA drives it went nowhere. The SATA drive appears after the USB stick when SETUP detects disk configuration. I've tried different mapping in GRUB to no avail, no mapping at all, and preserving the USB drive letter. In every occasion SATA drive was recognized after USB:
Posted Image

On ATA drives it looks like that:
Posted Image

Continuing installation when SATA drive is second cause XP boot sector and NTLDR/BOOT.INI being written to the USB stick, corrupting the partition table, then SETUP complains about damaged drive D (or U when old mounted devices was used) and a new boot from the stick is not possible. Repairing GRUB MBR fixes boot, but some files are missing. This was tested on 2 different SATA controllers, Sil2112r and SIS Sata. No IDE drives were attached, only one SATA disk.
Any ideas? May be Dietmar's way of installing XP directly on USB and a separate driver for the USB storage could help, I am going to study this option further.

BTW while studying BTS KTD method I noticed the usage of presetup.cmd, which is launched in GUI mode right before anything else. So another way to write-protect the USB during GUI part could be a single line like REG ..... or regedit ... if it's available at that stage. Any ideas when postsetup.cmd is launched? Google returns no results.


edit: About the long wait at T-1- if we find a way to rename the 2 folders on USB, at lets say T-20 or after installing devices, where source files are no longer needed and make post- setup script renaming them back, this may "fool" setup to stop looking for them and avoid the long wait. If anyone has an idea which method could be used for this purpose would be great.

This post has been edited by ilko_t: 21 April 2007 - 02:43 PM


#131 User is offline   jaclaz 

  • The Finder
  • Group: Developers
  • Posts: 11,433
  • Joined: 23-July 04
  • OS:none specified
  • Country: Country Flag

Posted 22 April 2007 - 06:04 AM

ilko_t said:

Continuing installation when SATA drive is second cause XP boot sector and NTLDR/BOOT.INI being written to the USB stick, corrupting the partition table,


(hopefully) some ideas to solve this part of the problem:

I doubt that partition table gets corrupt.

The MBR code is replaced, that's all.

It should be quite easy to work around the problem (from the beginning, INSTEAD of your step #2):
1) DO NOT install grdr.mbr
2) Install normally the XP MBR and bootsector (i.e. do nothing, the HP utility will do it)
3) add to root of the stick GRLDR
4) add to root of the stick NTLDR
5) Add to root of the stick a BOOT.INI like this:
[Boot Loader] 
Timeout=10 
Default=C:\GRLDR 
[Operating Systems] 
C:\GRLDR="Start GRUB"

This way grub4dos is chainloaded through "normal" NTLDR.

Also, you don't need to rename setupldr.bin to ntldrstp.

jaclaz

This post has been edited by jaclaz: 22 April 2007 - 06:05 AM


#132 User is offline   ilko_t 

  • MSFN Addict
  • Group: Super Moderator
  • Posts: 1,605
  • Joined: 06-December 06
  • OS:none specified
  • Country: Country Flag

Posted 22 April 2007 - 07:48 AM

View Postjaclaz, on Apr 22 2007, 12:04 PM, said:

ilko_t said:

Continuing installation when SATA drive is second cause XP boot sector and NTLDR/BOOT.INI being written to the USB stick, corrupting the partition table,


(hopefully) some ideas to solve this part of the problem:

I doubt that partition table gets corrupt.

The MBR code is replaced, that's all.
I thought the same, but the fact is when this happens SETUP starts complaining corrupted drive U (the USB stick) and cannot continue install. If I fix GRUB MBR and reboot GRUB complains about invalid or unrecognized partition table but still is able to find SETUPLDR.BIN, the problem is that SETUP complains about missing files, at least 10-20 files are reported as missing. May be it just partly corrupted of something because of the different ways it's formated and the way SETUP sees USB stick, because of the read-only switch in GRUB, or because of the GRUB mapping, you may have better explanation. Actually its not because of drive mapping in GRUB, I remember that I tested with no mapping at all, simply invoking setupldr.bin and MBR got corrupted again.

View Postjaclaz, on Apr 22 2007, 12:04 PM, said:

It should be quite easy to work around the problem (from the beginning, INSTEAD of your step #2):
1) DO NOT install grdr.mbr
2) Install normally the XP MBR and bootsector (i.e. do nothing, the HP utility will do it)
3) add to root of the stick GRLDR
4) add to root of the stick NTLDR
5) Add to root of the stick a BOOT.INI like this:
[Boot Loader] 
Timeout=10 
Default=C:\GRLDR 
[Operating Systems] 
C:\GRLDR="Start GRUB"

This way grub4dos is chainloaded through "normal" NTLDR.

Also, you don't need to rename setupldr.bin to ntldrstp.

jaclaz
This is an option, but SETUP will still place its boot files on the USB stick, as it's seen as the first hard drive and the first active partition, not on the hard drive. If stick is already with NT MBR this may prevent file corruption, but then we well have to place BOOT.INI and NTLDR on the hard drive and also work on the GRUB mapping and invoking the GUI part. Another option is in BOOT.INI to make second entry pointing to the hard drive, thus we can invoke the GUI part from BOOT.INI instead of GRUB. Also a small script or manual copy of NTLDR and a proper boot.ini to the hard drive will be needed.

A way I can think of is somehow to force TXT SETUP to see USB stick as second drive, or removable if it is not seen as such, this will make it place the needed boot files on the hard drive, either by driver or by relevant registry entries placed by migrate.inf.

I rename setupldr.bin because on second partition I intend to place Bart PE files and/or working XP to experiment and it's easier to manage partitions and drive mapping in GRUB, if one intends to use stick solely for XP install it's not needed.

This post has been edited by ilko_t: 22 April 2007 - 07:55 AM


#133 User is offline   cdob 

  • Friend of MSFN
  • PipPipPipPipPip
  • Group: Members
  • Posts: 876
  • Joined: 29-September 05

Posted 23 April 2007 - 12:09 AM

Different user have different needs.
I consider USB WinXP installation as a emergency solution.
This should work at different machines, manually parts are allowed.

My menu.lst part is pretty dump
title boot /$WIN_NT$.~BT/setupldr.bin
chainloader /$WIN_NT$.~BT/setupldr.bin
As known, this gives a broken boot.ini pointing to rdisk(1).

A "map (hd0) (hd1)" use fixed hdN numbers.
At different machines both source and target may use different hdN numbers.
E.g. a internal card reader may result in different hdN numbers.
And different BIOS use different USB boot handling.
A new unkown machine may get different results to previous experience.
That's not a general solution.

A general working unattended solution would be nice.

In the meantime I use a manually workarround:
I knew false boot.ini entries from the past and will recognice this in future.
I manually edit boot.ini at first reboot.
$winnt$.inf was not edited, false entries are there still.
Recovery console, PE and Knoppix are at this USB stick anyway.


I din't used unattended feature to remove USB write protection.
At first windows boot, I opened regedit.exe and deleted StorageDevicePolicies.

A idea, NOT tested: hiveOEM.inf
[Version]
Signature = "$Windows NT$"
DriverVer=07/01/2001,5.1.2600.2180

[AddReg]
;WriteProtect USB
HKLM,"SYSTEM\CurrentControlSet\Control\StorageDevicePolicies","WriteProtect",0x10001,1

;remove WriteProtect USB at first windows boot
HKLM,"Software\Microsoft\Windows\CurrentVersion\RunOnce","Remove_WriteProtect",,"reg.exe delete HKLM\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies /f"

;set OEM drivers at USB U:
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion","DevicePath",0x00020002,"%SystemRoot%\inf;U:\OEM_driver\int1;U:\OEM_driver\vga1"
ilko_t's winnt.inf [GuiRunOnce] remove WriteProtect makes more sense.


Some fun:
title boot (hd1,0)/$WIN_NT$.~BT/setupldr.bin
map --read-only (hd0) (hd1)
map --hook
root (hd1,0)
chainloader (hd1,0)/$WIN_NT$.~BT/setupldr.bin
savedefault 1
Setup is started, textmode does work, first reboot fails.
Broken boot.ini: multi(0)disk(0)rdisk(2)partition(1)\WINDOWS2

Recognice rdisk(2), that's not rdisk(1).
A second USB stick was attached too.
Idea: second USB stick was hd1, internal harddisk hd2.

After removing second USB stick, grub4dos fails: Error 27: Disk read error.
There is a internal SATA ACHI hd with NTFS partitions.
Neither at second second USB stick not hard disk is a /$WIN_NT$.~BT/setupldr.bin.
/$WIN_NT$.~BT/setupldr.bin exist once at hole machine.

chainloader (hd1,0)/ntldr_bt give Error 27 too.

Second USB stick inserted again:
map --read-only (hd0) (hd2)
map --hook
root (hd2,0)
chainloader (hd2,0)/$WIN_NT$.~BT/setupldr.bin
Setupldr.bin is loaded, however ntdetect failed.


At the other hand boot.ini signature(de33eaf8) indicates:
Windows setup detected some strange environment and use a fall back settings.
Requested settings ask grub4dos to build a insane mapping: two hds mapped to the same hdX.
That's a broken design. Contrary this may work at all machines or fail at some machines.



I like a fixed USB drive letter still, compare OEM drivers at USB U:
So I created a first version to extract MountedDevices setting.
Copy MkMigratgeInf.cmd to <USB drive>\$WIN_NT$.~BT\MkMigratgeInf.cmd and launch it. This USB drive is mapped to DosDevices U:.
A MIGRATE.INF.TXT is created, open it and read file. Rename file to migrate.inf.

MkMigratgeInf.cmd
@echo off
REM MkMigratgeInf.cmd v0.01
REM created by cdob

setlocal EnableExtensions

set Drive=%~d1
if %Drive%.==. set Drive=%~d0

set FileName=%~2
if %FileName%.==. set FileName=MIGRATE.INF.TXT

set MigrateDrive=U:
if not %~d3.==. set MigrateDrive=%~d3

set Value=
FOR /F "skip=2 tokens=1-2*" %%a IN ('reg query HKLM\System\MountedDevices /v \DosDevices\%Drive%') DO set Value=%%c

if %Value%.==. (echo drive settings %Drive% not found & goto :EOF)

set MigrateStr=%Value:~0,2%
set count=2
:begin_parse
  call :exec set MidStr=%%Value:~%count%,2%%
  if %MidStr%.==. goto :exit_parse
  set MigrateStr=%MigrateStr%,%MidStr%
  set /a count+=2 
  goto begin_parse
:exit_parse

(echo [Version]
echo Signature = "$Windows NT$"
echo. 
echo [Addreg]
echo HKLM,"SYSTEM\MountedDevices","\DosDevices\%MigrateDrive%",0x00030001,\
echo %MigrateStr%)>%FileName%

goto :EOF

:exec
  %*
goto :EOF
A XP default reg.exe is expected.

By the way:
A RAM loaded PE image read file \I386\system32\migrate.inf.
Another untesed idea: use migrate.inf for general settings
Create tow similar PE, small registry changes.
Two setupldr.bin: one calls migrate.inf, another calls migrat2.inf.

#134 User is offline   jaclaz 

  • The Finder
  • Group: Developers
  • Posts: 11,433
  • Joined: 23-July 04
  • OS:none specified
  • Country: Country Flag

Posted 23 April 2007 - 05:12 AM

@ilko_t

Maybe one could use this method:
http://www.msfn.org/...showtopic=12566

to execute commands when the GUI part starts.

In the post it is reported that, while regedit.exe doesn't work in this stage, reg.exe does.

jaclaz

#135 User is offline   ilko_t 

  • MSFN Addict
  • Group: Super Moderator
  • Posts: 1,605
  • Joined: 06-December 06
  • OS:none specified
  • Country: Country Flag

Posted 23 April 2007 - 11:45 AM

Interesting results :)

I wouldn't think of installing with 2 sticks inserted, exactly because of the GRUB mapping.
Tested your script for migrate.inf resulted in correct entries, however may be adding the write-protect entries will be handy, so we'd have a completed migrate.inf.

About the boot.ini signatures- I agree that it shouldn't be made this way, but as far as I tested it on different machines it worked fine, at least creating boot.ini pointing to the right place.

If we don't use mapping we end up with boot.ini to be modified, an idea how to do it automatically is to place NTLDR and boot.ini on the USB stick, pointing to the hard drive partition with the new installation, invoke NTLDR from GRUB, and at some stage during the GUI part copy NTLDR, NTDETECT.COM and a generic BOOT.INI to the root (if SATA disk is used), and edit BOOT.INI. Presetup.cmd will do the job in this case.
Bootcfg.exe behaves in different way in recovery console and XP environment, how it will work during GUI is to be tested. May be a cmd script would also do the work (I am not into this part at all) or another tool like bootpart may do it for us. Still searching for an automated solution to edit boot.ini, a program or script, started by presetup.cmd.

With SATA disks I still have no luck at all- if it's not a "native" controller, SATA disks are listed as second, after USB stick and SETUP places boot files on the stick rewriting the boot sector. With 2 sticks I tested- Buffalo 2GB and Lexar 1GB when formated by XP I can't boot NTLDR- "disk error, press any key to restart..". If I format it with HP utility they both boot fine, but when TXT setup rewrites boot sector it corrupts some files and makes next boot impossible. Format in Fat16 and 32 makes no difference. Manually editing the stick geometry using methods suggested by jaclaz will be of no use, as I beleive TXT setup will still place its boot sector on the wrong place considering the way it sees USB stick.

I am currently searching for solution how to list USB after non-native SATA if that's possible at all, may be something in txtsetup.sif will help, or driver loaded along with the other SATA/SCSI drivers, but the information I find is quite limited.

Haven't found out yet when exactly postsetup.cmd is launched, may be it will help to rename the source folders temporary avoiding the long wait at T-1. At first boot we rename source folders back. If anyone knows what else could be used to launch cmd script after T-20 or T-15, when setup files are no longer needed, please help :)

A little offtopic- another way I am working on is also much quicker and universal- USB stick carrying an image of (not necessary) sysprep-ed "generic" XP installations. Different HALs are no issue, 0x7B BSOD is resolved by the relevant CriticalDevicesDatabase entries with the corresponding drivers and services. Intelppm service, causing BSOD on some AMD machines is disabled in advance.

Regards, Ilko_t

#136 User is offline   cdob 

  • Friend of MSFN
  • PipPipPipPipPip
  • Group: Members
  • Posts: 876
  • Joined: 29-September 05

Posted 25 April 2007 - 01:33 AM

@Ilko_t
Don't misunderstand me. I appreciate all your testings and findings.

I'm slitting myself:
At testing machines insane approaches are allowed, e.g. two USB sticks.
All data may be destroyed.
At testing machines I like grub4dos map and boot.ini signature.
I haven't understood BIOS, grub4dos and windows setup behaviour fully.

Contrary a final solution has to work at unknown machines too.
No partiton or data is destroyed.
At unknown machines I like a low risk solution.
Currently that's avoid grub4dos map. Boot.ini may have to be manually edited.
If there is a secure map solution, I happily change my mind and use this solution.

Thanks for migrate.inf scripting report.
First version is more a basic test version. Yes write-protect entries can be added.

I've limited free time: no further testings and no development so far.

#137 User is offline   jaclaz 

  • The Finder
  • Group: Developers
  • Posts: 11,433
  • Joined: 23-July 04
  • OS:none specified
  • Country: Country Flag

Posted 29 April 2007 - 04:13 AM

@ilko_t

Newish release of grub4dos has introduced a couple new commands:

Quote

******************************************************************************
*** Newly implemented operators `&&' and `||' ***
******************************************************************************

This implementation is very simple. It does not handle operator nesting.

Usage of `&&':

command1 && command2

Description:

If command1 returns true, then command2 will be executed.

Usage of `||':

command1 || command2

Description:

If command1 returns false, then command2 will be executed.

Examples:

is64bit && default 0
is64bit || default 1


This could be the way to introduce "automatic" selection of the grub4dos menu.lst entry during first and second boot.

jaclaz

#138 User is offline   jaclaz 

  • The Finder
  • Group: Developers
  • Posts: 11,433
  • Joined: 23-July 04
  • OS:none specified
  • Country: Country Flag

Posted 30 April 2007 - 10:16 AM

Some more migrate.inf related info:
http://www.911cd.net...showtopic=19663

jaclaz

#139 User is offline   snowden 

  • Newbie
  • Group: Members
  • Posts: 29
  • Joined: 04-December 06

Posted 07 May 2007 - 06:54 AM

View Postporear, on Nov 9 2006, 10:49 PM, said:

Update edit - still not fully working yet, see post below.

:thumbup I GOT IT!!! :thumbup
I am successfully running a Windows XP SP2 installation off of my USB stick.

I don't really know what I am doing, so this is a brute force method, but it works for me. Please help me to make it more elegant.

For this procedure you need:

Your USB drive
Your Windows installation source and
CodeBeetle's PeToUSB from http://codebeetle.co....php?al=petousb

For the steps below I am assuming you are working from a PC with windows loaded on C:

1. Make a copy of your C:\boot.ini to boot.bak

2. Navigate to your windows installation source and run a noreboot setup. For me from my CD it was

Start->Run and type E:\I386\winnt32.exe /noreboot
When prompted, choose Installation Type "New Installation"
At Setup Options - Advanced Options Check the box for "Copy Setup Files" to directory \WINDOWS
At Get Updated Setup files choose No

Thanks to FlyAKite and gosh at http://flyakite.msfn.org/ for this part. Once all of the installation files have been copied. the installation will simply stop without a reboot. You will now have two new hidden directories on your PC, C:\$WIN_NT$.~BT and C:\$WIN_NT$.~LS . If you can't see them, go to Tools->Folder Options->View in Windows Explorer and choose to show hidden and operating systems files.

3. Once the installation has finished, delete C:\boot.ini and rename C:\boot.bak to C:\boot.ini

4. Build with PeToUSB as follows

Insert your USB stick
Start PeToUSB
In PeToUSB, choose your USB stick drive,
Make sure Enable Disk Format is checked, and
Point Source Path to your installation source (for me it was my CD drive, E:\) then
Click Start, Yes, Yes to run PeToUSB.

5. When PeToUSB is finished, delete everything off of the USB stick EXCEPT

NTLDR
NTDETECT.COM
WIN51
WIN51IP
WIN51IP.SP2


Your WIN files may vary depending upon the service pack level of your install source.

Yes, even delete the \minint directory. All we really obtained from this build is NTLDR, this is where someone smarter than I could simplify the process and save some time if they could help obtain a proper NTLDR another way.

6. Copy the directories C:\$WIN_NT$.~BT and C:\$WIN_NT$.~LS onto your USB stick

7. Create a directory \minint on your USB stick

8. Copy C:\$WIN_NT$.~BT\TXTSETUP.INF to the new \minint directory on your USB stick

Steps 7 and 8 are another place where a proper NTLDR file that does not point to \minint would help create a more correct method.

9. Delete the following files from the \$WIN_NT$.~BT directory on your USB stick (thanks again to FlyAKite):

BOOTSECT.DAT
migrate.inf
winnt.sif


10. On your PC hard drive, rename C:\$WIN_NT$.~BT to C:\$WIN_NT$.~BT.OLD and C:\$WIN_NT$.~LS to C:\$WIN_NT$.~LS.OLD

We're hanging on to these files for now in case there are any problems, but we need to change the names. Otherwise when running from your USB stick you may actually be copying the setup files off of your hard disk instead of the stick. I found this out when one time I pulled out my stick during installation - and it kept running!

11. Try it! It if works, delete the two directories in step 10 to clean up.

Hope this works for you, please give it a shot. Any suggestions and improvements are more than welcome, I could really use help with the NTLDR issue so that the time-consuming PE build would not be needed. I'll be glad to answer any questions I can, but like I said, this was a blind squirrel/acorn "hit and miss" for me!

Pat :D


I've used this method myself before, successfully. But when you try to install via these same files onto another pc, you get hardware BSODS - so that's why I just use the winnt.exe from dos.

You seem to be missing some crucial files in this method - when i did this, i just used the hp drivekey utility, and then do winnt32.exe and then copy the 2 folders over to my usb drive, along with ntldr (the pe2usb version, but it works with the normal version anyway as your usb key gets treated as a harddrive!), and a file called $LDR$, and boot.ini that points to bootsect.dat). Also you need txtsetup.sif in the root where $LDR$ is and so on otherwise setup wouldn't start for me! I might be forgetting some files here - oh yeah, you need ntdetect.com. (is that all?)

To be honest, i find it much easier installing using winnt.exe. :)

This post has been edited by snowden: 07 May 2007 - 06:59 AM


#140 User is offline   jaclaz 

  • The Finder
  • Group: Developers
  • Posts: 11,433
  • Joined: 23-July 04
  • OS:none specified
  • Country: Country Flag

Posted 07 May 2007 - 07:06 AM

snowden,
sorry, but evidently it's you that are missing something, like a few months work by several members. ;)

The initial "normal" way by porear you are referring to, due to the deletion of some files (and some other minor things) did work only once.

The new "final" method, thanks to ilko_t and cdob is repeatable:
http://www.msfn.org/board/index.php?showto...1384&st=128
(previous posts are to be considered obsolete by the above one)

As said in the other thread I too find the WINNT.EXE method better, but I personally have on ALL my machine a 1 Gb FAT16 partition as First Active Primary.

And, as said, speaking of nliting, removing WINNT.EXE install support makes the build smaller.

jaclaz

Share this topic:


  • 25 Pages +
  • « First
  • 5
  • 6
  • 7
  • 8
  • 9
  • Last »
  • You cannot start a new topic
  • This topic is locked

8 User(s) are reading this topic
0 members, 8 guests, 0 anonymous users



All trademarks mentioned on this page are the property of their respective owners
Copyright © 2001 - 2013 msfn.org
Privacy Policy