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.INI5. Copy two new folders in the USB stick root -
$WIN_NT$.~BT and
$WIN_NT$.~LS6. 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\i3868. 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.LST9. Add the following lines to
TXTSETUP.SIFQUOTE
[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