Guide for MultiBoot USB-stick with boot.ini Menu

In this Guide is described How to Make a MultiBoot USB-stick, where boot options as MS-DOS, FREEDOS 1.0, GRUB4DOS, BartPE, TXT-mode Setup Windows XP, WinPE 2.0 and SYSLINUX can be used directly from boot.ini Menu. In this way a powerfull Admin's Swiss Army Knife is obtained.

The USB_MultiBoot5.cmd Batch Program can now be used for making such MultiBoot USB-Drive, instead of the Manual Procedure as described below. The Attachment gives file. The USB_MultiBoot5.cmd program can be used for making MultiBoot USB-Drive for Install of Windows XP with Extra Boot Options for System Recovery with Ghost.

All Editable Configuration Files for making a MultiBoot USB-stick are given in the MULTI_CONTENT folder. The content of MULTI_CONTENT folder is copied to USB-Drive by the USB_MultiBoot5.cmd program. Adapt the configuration files and the content of the MULTI_CONTENT folder to your personal needs.

Where USB-stick is mentioned in the description, USB-Harddisk with 2 GB FAT Partition can be used as well. USB-sticks of 1, 2 and 4 GB have been used successfully, e.g. Apacer HT203 OR Buffalo FireStix RUF2-R2G-S Booting from MS-DOS is not available on 4 GB Apacer HT203, whereas 1 and 2 GB sticks are OK.

A. Boot Test 

Making Bootable USB-stick or USB-Harddisk with boot.ini Menu and NTLDR Bootsector

First Test if your PC is Booting from USB-stick:

  1. Use 2 GB USB-stick with High Read/Write Speed (e.g. Apacer HT203 OR Buffalo FireStix RUF2-R2G-S are OK)
  2. Format USB-stick with PeToUSB.exe to Make Bootable USB-stick with FAT FileSystem, FAT = Faster such that USB-stick has NTLDR Logical Drive Bootsector(mostly sector 0x3F=63) and is seen by BIOS as Harddisk (MBR is at sector 0). Use PeToUSB.exe with Settings: Enable Disk Format with LBA FAT16X
  3. Copy XP BootFiles ntldr, NTDETECT.COM, Bootfont.bin and boot.ini from your XP C-drive to USB-stick For this purpose in Windows Explorer Extra>Folder Options, Set Hidden and System Files to be Visible.
  4. Change in boot.ini on stick rdisk(0) in rdisk(1) and add a second entry so that on Booting from USB-stick you will be able to see the boot.ini Menu. Before you Edit boot.ini, Remove first via Right-click and Properties the Read Only property.

Example 1. File boot.ini

[boot loader]
[operating systems]
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="Boot Test Windows XP Professional" /noexecute=optin /fastdetect

  1. Reboot your PC with USB-stick plugged in and Enter BIOS Setup by pressing [Delete] or F2 and change Boot settings more permanent so that Harddisk is used as first Boot device type and USB-Drive is seen as first Harddisk. Save BIOS Settings with F10.
  2. Test if your PC is Booting from USB-stick with boot.ini Menu. If you can see the Menu, it is OK

If USB-stick is not bootable:

Check BIOS bootsequence settings or use different USB-stick / computer combination, OR Instead of PeToUSB use HP USB Disk Storage Format Tool Version 2.0.6 and use FAT filesystem…0.6_176935.html

If you did prepare your USB-stick with usb_prep8.cmd so that it can be used for Install of Windows XP, than you had already a stick with boot.ini Menu and the required bootfiles, and you don't need to do steps 1-4

Instead of an USB-stick one can also make a Bootable USB-Harddisk using the steps 2-6 given above.

For USB-Harddisk make 1900 MB partition at beginning of the USB-Harddisk using e.g. Partition Magic. Use FAT Format and Set Active OR use PeToUSB to Format such partition. Without Set Active you will get DISK BOOT FAILURE.


Be very carefull with writing of bootsectors with HDHacker, bootsect.exe or mkbt.exe Be always aware you make your changes on the right drive. Otherwise loss of DATA may be the result. It is advisable to first remove all other removable drives, like USB Backup Harddisks and Memory Cards, so that they cannot be involved by mistake in the writing process.

HP USB Disk Storage Format Tool Destroys Partition Table of USB-Harddisk and cannot be used to Format one single partition of USB-Harddisk. Using HP Tool makes Data partitions of USB-Harddisk inaccessible !! So don't use HP USB Disk Storage Format Tool to Format USB-Harddisk.

Using PeToUSB.exe is SAFE, it can only Format partitions with size less than 2 GB without destroying the existing partition table, so that Data partitions are still accessible.

Use of USB_MultiBoot.cmd and everything in this Guide is COMPLETELY at your own risk.

B. Adding New Boot Options 

Adding New Boot Options - e.g. Booting the USB-stick via boot.ini directly into MS-DOS

This requires making a Bootsector File for each specific Boot Option and Adding a rule to boot.ini mkbt.exe of Bart Lagerweij is very handy to make such Bootsector Files. See: mkbt.exe is so handy because it can change the Bootcode in the Bootsector, while keeping the BIOS Parameter Block and the Extended Parameter Block unchanged. This means the Drive geometry and File System (FAT) is maintained ! For this purpose the 6 bs_***.bin files are supplied in folder makebt as Source Code Bootsector Files.

  1. Use procedure of Part A to make Bootable USB-stick with boot.ini Menu and NTLDR Bootsector Make a proper Selection of your PeToUSB Settings to make a USB-Drive with FAT Format. PeToUSB Settings To Format USB-Drive : Enable Disk Format with LBA FAT16X For Install of BartPE on USB-Drive : Give BartPE Source Path and Enable FileCopy with Overwrite Always. When USB_MultiBoot.cmd is applied on existing USB-Drive with XP Install Files, then Format is not needed and should be DeSelected.

    • Copy XP BootFiles ntldr, NTDETECT.COM, Bootfont.bin from your XP C-drive to USB-stick
    • Copy XP BootFile boot.ini (with all New Boot Options) from usb_cfg Folder to your USB-stick
  2. Use mkbt.exe to Save the USB-stick Logical Drive bootsector as file in folder btsec on your USB-stick. Next use mkbt to Install MS-DOS Bootcode from bootsector file bs_msdos.bin into USB-Drive Bootsector Then Save modified USB-Drive Bootsector as Bootsector File And finish by Resetting USB-Drive Bootsector to the original NTLDR Bootsector using file

    Usage : mkbt [switches] <source> <target>
    switches: -c = Copy mode(copy bootsector to Bootsector File, -x = Expert mode

    For this purpose Open a Command Window (cmd) at the USB_MultiBoot\makebt Folder and type:

    mkbt.exe -x -c R: R:\btsec\
    mkbt.exe -x bs_msdos.bin R:
    mkbt.exe -x -c R: R:\btsec\
    mkbt.exe -x R:\btsec\ R:
    where R: is your USB-stick drive
  3. Change boot.ini on stick by adding the following rule:

    C:\btsec\"3. MS-DOS 7.10"
  4. In a similar way we can make the Bootsector File for FREEDOS 1.0 When both MS-DOS and FREEDOS are added it is necessary to place the COMMAND.COM in a folder and to use in CONFIG.SYS and FDCONFIG.SYS SHELL commands like shell=\dos\ /e:1024 /p and 12345?!SHELL=\FREEDOS\COMMAND.COM /E:2048 /F /MSG /P Download FREEDOS 1.0 bootfloppy image fdboot.img from
  5. TXT-mode Setup Windows XP, BartPE and WinPE 2.0 require a bootcode which is the same as present in the NTLDR Bootsector, except that the file to which the bootsector refers is different, being SEUPLDR.BIN, PELDR and BOOTMGR respectively instead of NTLDR. The program makeBS2.cmd made by jaclaz is very handy to make Bootsector Files for TXT-mode Setup Windows XP and for BartPE, where only the NTLDR loader filename was changed into e.g. SETUPLDRBIN and PELDR respectively using:

    makeBS2.cmd R:\SETUPLDR.BIN
    makeBS2.cmd R:\PELDR
    where R: is your USB-stick drive

    Such Bootsector Files are given in makebt folder as files bs_setup.bin and bs_peldr.bin of which the BootCode can be used also by mkbt.exe to make and similarly as the procedure for making

  6. For Windows PE 2.0 a Bootsector File is required which refers to BOOTMGR instead of NTLDR. The same Bootsector file can also be used to Install Windows Vista by launching Vista Setup. Open CMD Window and use BootSect.exe to change the bootsector for use with bootmgr

    BootSect.exe /nt60 R:
    mkbt.exe -x -c R: R:\btsec\
    mkbt.exe -x R:\btsec\ R:
    where R: is your USB-stick drive.

    Such BOOTMGR Bootsector File is given in makebt folder as file bs_btmgr.bin with correct Error Messages, which can be used by mkbt.exe to make similarly as the procedure for making, so that BootSect.exe which is more difficult to obtain, is no longer needed.

    WinPE is a Console with rather limited use. A lot of simple programs which run from BartPE, do not run from WinPE. Windows PE 2.0 is included in the Windows Automated Installation Kit WAIK (see below for Download)

    • Follow the instructions in the WAIK guide to create PE 2.0 files.
    • Copy the contents of the "ISO" folder created in the proceding step to the root of your USB stick.
  7. SYSLINUX Menu Support from boot.ini Menu requires to make Bootsector file according to:

    • Download syslinux from
    • Use syslinux.exe from win32 folder in a Command Window as given below
    • Copy the Bootsector with mkbt.exe as file in btsec folder on USB-stick
    • Reset USB-Drive to NTLDR Bootsector using mkbt.exe and the original Bootsector File

      syslinux.exe -f R:
      mkbt.exe -x -c R: R:\btsec\
      mkbt.exe -x R:\btsec\ R:
      where R: is your USB-stick drive.
  8. GRUB4DOS Menu Support is added to boot.ini Menu as follows:

    Download grub4dos from and Copy grldr and grub.exe to the Root
    directory of the USB-stick and make Custom file menu.lst Launching of
    GRUB4DOS Menu via grldr is obtained by simply adding to boot.ini the
    rule: C:\grldr="Start GRUB4DOS Menu - DOS Boot Floppy Images + Linux"

The boot.ini file in the Root Directory of the USB-Drive making all Boot Options available is given by:

Example 2. File boot.ini

[Boot Loader]
[Operating Systems]
c:\grldr="0. Start GRUB4DOS Menu - DOS FLOPPY IMAGES + Linux"
C:\btsec\"1. TXT Mode Setup Windows XP, Never unplug USB-Drive Until After Logon"
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="2. GUI Mode Setup Windows XP, Continue Setup + Start XP" /FASTDETECT
C:\btsec\"3. MS-DOS 7.10"
C:\btsec\"4. FREEDOS 1.0"
C:\btsec\"5. BartPE - MINI XP"
C:\btsec\"6. Windows PE 2.0"
C:\btsec\"7. SYSLINUX Menu"
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="8. Start Windows XP Professional from Harddisk" /noexecute=optin /fastdetect

Not all options are available on all USB-Drive Devices. So you can edit boot.ini to your needs. Booting from MS-DOS is not available on 4 GB Apacer HT203, whereas 1 and 2 GB sticks are OK. A lot of FREEDOS Bootsectors don't work and even the supplied FREEDOS Bootcode only works on USB-stick and not on USB-Harddisk.

TinyHexer or HDHacker are usefull to View in detail and to Save the USB-stick Logical Drive bootsector. The Logical Drive bootsector is usually located 63 sectors from the beginning (MBR=sector 0) of the USB-disk. HDHacker see TinyHexer 1.8 see HDHacker can also be used to Load Bootsector Files and to Write as Bootsector on USB-stick Logical Drive.

BootSect.exe can be obtained from the very large VISTA WAIK download (almost 1 GB). The Windows Automated Installation Kit with the program bootsect.exe is available as download from Microsoft:

C. Bootsector Files - Extra Info 

The booting mechanism of NTLDR with boot.ini Menu and the use of Bootsector Files in boot.ini has been excellently explained by jaclaz and is reproduced below:

  1. The BOOTSECTOR (i.e. first sector of the Active Primary Partition) contains CODE that boots (under NT/2K/XP/2003) the NTLDR
  2. The NTLDR has the capacity to boot (through the selection in BOOT.INI and using NTDETECT.COM) only the windows NT/2K/XP/2003 System partition, (i.e. \Winnt or \Windows) through an arcpath sintax, (i.e. something like multi(0)disk(0)rdisk(0)partition(1)\WINNT)
  3. To keep compatibility with elder MS operating systems, the NTLDR has also the option to load ANOTHER bootsector; this bootsector MUST have the same geometry (dynamic data) of the main one, but can have different CODE, i.e. can load something different like the DOS files IO.SYS SDOS.SYS COMMAND.COM or another OS, or even another bootloader
  4. BartPE normally boots by using a copy of SETUPLDR.BIN renamed as NTLDR or PELDR. 5 SETUPLDR.BIN behaves differently from NTLDR:

    1. It DOES NOT use the BOOT.INI settings file
    2. Searches for needed files in the \I386 directory (this is fixed, hardcoded INSIDE SETUPLDR.BIN, needs hexediting to be changed) or in the \minint one if on hard disk
    3. Reads the textsetup.SIF, or WINNT.SIF (or any other .sif file)

The way to have a BartPE selection in boot.ini is to have an alternate BOOTSECTOR, peboot.bin, that loads PELDR (i.e. a renamed SETUPLDR.BIN) INSTEAD of NTLDR.

So the booting goes like this:

  2. NTLDR loads BOOT.INI
  3. If the line invoking the ALTERNATE bootsector peboot.bin is chosen, peboot.bin loads PELDR

You cannot load anything else but an ARCPATH or a BOOTSECTOR from NTLDR/BOOT.INI!

Using GRLDR or GRUB.EXE makes it possible to load DIRECTLY (i.e. chainload) NTLDR or SETUPLDR.BIN without need for renaming the latter to NTLDR or PELDR.

Note Added: Bootsector File peboot.bin is equal to our Bootsector file.

D. GRUB4DOS Menu Support - Extra Info 

GRUB4DOS is added to boot.ini Menu as follows:

Download grub4dos from and Copy grldr and grub.exe to the Root directory of the USB-stick and make Custom file menu.lst Launching of GRUB4DOS Menu via grldr is obtained by simply adding to boot.ini the rule: C:\grldr="Start GRUB4DOS Menu - DOS Boot Floppy Images + Linux"

Use WinImage to Inject Files and to Save a DOS Boot Floppy Image.

Download ready-to-run DOS Boot Floppy Images fdubcd.img and msubcd.img made by Erwin Veermans These images are based on the Modular Boot Disk of Bart Lagerweij and were made for Ultimate Boot CD has also a lot of Info and bootdisks available, See

Use the grub4dos tutorial to make menu.lst and add menu.lst to USB-stick

Use Disk emulation with Direct mapping in menu.lst:

Example 3. File menu.lst

color white/blue  black/light-gray
timeout 30

default 0

title Start Windows XP Professional from Harddisk
map (hd1) (hd0)
map --hook
rootnoverify (hd0)
root (hd0,0)
chainloader (hd0,0)/ntldr

title Boot floppy image - UBCD FreeDOS Bart's Modboot
map (hd0,0)/images/fdubcd.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title Boot floppy image - UBCD MsDOS   Bart's Modboot
map (hd0,0)/images/msubcd.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title Puppy Linux       - NTFS Read / Write
find --set-root /grldr
kernel /vmlinuz root=/dev/ram0 initrd=initrd.gz PMEDIA=usbflash PKEYS=uk
initrd /initrd.gz

title Damn Small Linux  - NTFS Read only - Knoppix
find --set-root /grldr
kernel /linux24 ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=791 initrd=minirt24.gz nomce noapic qemu quiet BOOT_IMAGE=knoppix frugal
initrd /minirt24.gz

title Memtest86+  V1.51 - RAM Memory Test
find --set-root /grldr
kernel /memdisk
initrd /images/memtp151.img

Besides DOS Floppy Images, it is interesting to add to menu.lst of grub4dos also Puppy Linux (NTFS Read/Write support) and DSL Linux (Knoppix with NTFS Read only support) , as described by diddy

Download the latest Puppy Linux ISO file - Tested using "puppy-2.12-seamonkey.iso"

Download the latest DSL Embedded .ZIP file - Tested using ""

E. TXT-mode Setup of Windows XP - Software Install Extra Info 

TXT-mode and GUI-mode Setup Windows XP

The procedure for Install of Windows XP from bootable USB-stick using a LocalSource was developed by ilko_t , jaclaz , cdob and porear and is described by ilko_t in MSFN Forum: The automatic making of a bootable USB-stick for Install of Windows XP can be realised with the USB_MultiBoot5.cmd batch command program.

The TXT-mode Setup of Windows XP includes the possibility to use the Recovery Console. The Recovery Console is of very limited use as compared to BartPE having Mini XP Desktop with very powerfull Program Menu. Nevertheless it is worthwhile to mention the Recovery Console within the scope of this subject.

Further Improvements of MultiBoot USB-stick:

  1. Using Windows XP Source with Updates and DriverPacks Integrated: using RyanVM Integrator with Update Packs and Addons and for DriverPacks using DP Base and for Unattended Install

    $OEM$\CMDLINES.TXT can be used for making UserAccounts and install of Registry Tweaks at T-12 On first logon the Extracted BTS DriverPacks are deleted, which normally takes a long time, because SystemRestore copies them to System Volume Information folder. The Disable_SystemRestore.reg Registry Tweak prevents this action, so that first logon is much faster.

    Personally I am using only the 5 smallest BTS DriverPacks with Mass Storage text mode enabled. So I do not integrate the 5 large Sound and Graphics DriverPacks, but use these Packs manually when Updating Drivers. The extraction and deletion of these 5 large DriverPacks is taking a lot of time. Mass Storage DriverPack with text mode enabled offers a lot of Extra SCSI, SATA and RAID Drivers for the $WIN_NT$.~BT Windows XP Bootfolder so that F6 for Extra Driver Floppies is no longer needed.

  2. Booting from DOS, with Ghost for System Backup and System Restore
  3. Adding WPI for Automatic Install of Additional Programs
  4. Unattended Install of Office 2003 with Updates Integrated
  5. Adding WinTools running direct from USB-stick using nu2menu Such WinTools are small programs which can run from WinTools Menu without the need of Install. Double-click on GO_WINTOOLS_MENU.BAT on USB-drive provides WinTools Menu from GO button. It also is possible to run the WinTools from any drive, by copying the wintools folder and GO_WINTOOLS_MENU.BAT to the root of a harddisk drive. Support for extra Portable Utilities is possible by editing nu2menu.xml file in MULTI_CONTENT\wintools\Nu2Menu folder. An additional interesting list of Portable WinTools which can be added to WinTools Menu by editing nu2menu.xml file, is found here

F. BartPE - Extra Info 

BartPE of Bart Lagerweij is a MINI XP with very powerfull Program Menu, and can simply be added to boot.ini Menu using the peinst.cmd of BartPE

For a MultiBoot USB-stick combining BartPE ( minint folder ) and the LocalSource of Windows XP Setup (see below), I found the following solution to make BartPE boot from the minint folder, instead of launching Windows XP setup. Hexedit peldr using TinyHexer. Change in peldr the first occurrence of txtsetup.sif in notsetup.sif Now BartPE will boot from minint folder and will not use WinXP txtsetup.sif from root directory.

Thanks to jaclaz for his helpfull advice to use gsar.exe for Hexediting of peldr in USB_MultiBoot.cmd program. Download gsar from

Usage: gsar [options] -s[search string] -r[replace string] [infile] [outfile]
copy /y R:\minint\setupldr.bin R:\peldr
copy /y R:\peldr R:\peldr.bak
makebt\gsar -b -f -sBT:x00:x00:x00\:x00:x00:x00txtsetup -rBT:x00:x00:x00\:x00:x00:x00notsetup R:\peldr R:\
copy /y R:\ R:\peldr

This construction was used because gsar Deletes an existing output file when no changes are necessary on input file.

G. SYSLINUX Menu Support - Extra Info 

Install of SYSLINUX is drive specific and it is not possible to Reinstall SYSLINUX by simple filecopy. File ldlinux.sys made in USB Root directory uses the Custom made files syslinux.cfg and menu.txt Bootsector Files are only recognised by SYSLINUX as such when they have the extension .bs

Example 4. File syslinux.cfg

DISPLAY Menu.txt
KERNEL grub.exe

KERNEL memdisk
APPEND initrd=images/memtp151.img

KERNEL btsec/

KERNEL btsec/

KERNEL btsec/

KERNEL btsec/

KERNEL vmlinuz
APPEND root=/dev/ram0 initrd=initrd.gz loglevel=3 PMEDIA=usbflash PKEYS=uk

KERNEL linux24
APPEND ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=791 initrd=minirt24.gz nomce noapic qemu quiet BOOT_IMAGE=knoppix frugal

Example 5. File menu.txt

1 - GRUB4DOS Menu
2 - Memtest86+  V1.51
3 - MS DOS
5 - BartPE - MINI XP
6 - WinPE 2.0
7 - Linux Puppy
8 - Damn Small Linux (KNOPPIX)

It is worthwhile to note that also direct booting with MS-DOS from SYSLINUX Menu is possible in this way.

SYSLINUX Menu requires a Drive Specific Install and is in general booting Faster than GRUB4DOS Menu, but boot.ini Menu is the most versatile BootMenu from which all other Boot Options are available !

Previous Version: Number of downloads: 275 ` 284 ` 6500 ` 3896 ` 1200 (3) + 2720 (4)

Edit 8 jan 2008: Added PeToUSB.exe

Changed GO_WINTOOLS_MENU.BAT and Added nu2menu.exe in MULTI_CONTENT\wintools\Nu2Menu folder Double-click on GO_WINTOOLS_MENU.BAT provides WinTools Menu from GO button. Added FREEDOS + DOSDEV drivers, grldr and grub.exe, VC, some tools

EDIT 5 feb 2008:

Removed %_mypath% in Making BootSector Files causing program crash when USB_MultiBoot2 folder was deep nested in Documents and Settings which results in a path with spaces. Added /r option in xcopy of $WIN_NT$.~LS Folder from usb_xpbt Folder to USB-Drive , needed in some cases where presetup.cmd was Read Only.

EDIT 14 feb 2008: Attachment Updated to

Edit 20 feb 2008: New Release Possible DOSNET.INF Parsing Error (biosinfo.inf not found etc.) was removed.

Edit 28 feb 2008: New Release

ren_fold.cmd was changed such that $OEM$\$1 and $OEM$$$ folders are copied as usual to systemdrive (usually C:\) and systemroot (usually C:\WINDOWS) respectively. Format Menu was added allowing to use HP USB Format Tool for making USB-sticks (greater than 2 GB) with NTFS Format allowing Install of XP in 16 minutes. USB_MultiBoot5.cmd has now Option for Adding BartPE instead of using PeToUSB. Possible source of Error in SOURCE Pathes is Detected e.g. when XPSOURCE path contains SPACES.

Last edited by wimb_2: Feb 28 2008

documented on: 2008-03-08