To make the USB device bootable I used the 'Grub Legacy' boot-manager on it's Master Boot Record and Grub4Dos to load all the utilities.
Since most of the boot options besides the 'Windows install setup' are booted directly from an iso file, the only boot-manager able to do that was 'Grub4dos'.
When I first tried to make this USB device, I wanted to create more than one partition for each utility/distro and chainload them, but that was not possible for various reasons.
My goal was to make the USB bootable with all the utilities and still have the available space usable and ready for data transfer, but since all 'Windows Operating Systems' can only see the first partition from removable devices that had to be empty (free space left available). My 'Windows XP setup' never worked on a secondary partition and I had to install everything on a single partition.
Now I can see all the files (boot-managers, iso's, XP setup folders, etc.) when I plug in the USB. This might not be aesthetic and important files can be deleted by accident but I had to work with it. To isolate the data transfer from important files I merely created a folder called USB where I can add/delete files freely.
All the iso files were placed in a folder called 'iso' (/sdb1/iso).
First thing first:
The first step I made was to transfer the 'Windows XP setup' files to my empty USB device. I really wanted to keep this step simple and used 'Wintoflash'. That's a great utility which successfully made my USB bootable with all the 'XP setup' files transferred and ready to use.
Then I replaced the 'Windows' bootmanager installed by 'Wintoflash' with Grub Legacy (the new GRUB2 can be used as well) to chainload the partition and run the 'Windows XP setup' from it's menu. I used the 'grub-install' script to achieve that.
grub-install --root-directory=/mnt/sdb1/boot /dev/sdb
The menu.lst was manually created in the 'boot' folder.
Because I found no way of booting iso files with GrubLegacy, I also chainloaded Grub4Dos to boot the rest of my utilities.
To chainload Grub4Dos, copy grub.exe on the root folder and edit the GrubLegacy's menu.lst as below:
title Windows XP SP3 Setup
title Other ...
Since loading Grub4Dos will display a new menu I named the entry 'Other...'
The Grub4Dos bootmanager will only need the main file 'grub.exe. and a new 'menu.lst' file which you can create manually. (Both files on the root folder.
In the Grub4Dos menu, my first entry was to return to GrubLegacy and so I created it as below (from the Grub4Dos new menu.lst located on the root folder):
title Back to previous menu ...
And the next entry to boot from the computer's local drive:
title Boot from local drive ...
Now, to boot the utilities several tricks had to be made. The only ones to successfully boot from the iso file with no further actions were 'Slitaz 3.0' and both 'SuperGrubDisk'. Their menu entries as below:
title Slitaz 3.0
map /iso/slitaz-3.0.iso (hd32)
title SuperGrubDisk 0.97
map /iso/super_grub_disk_0.9799.iso (hd32)
title SuperGrub2Disk 1.99b1
map /iso/super_grub2_disk_hybrid_1.99b1.iso (hd32)
For the rest, I'll explain what I've done particularly:
1. Debian Net_installer iso
While the iso itself was successfully bootable using Grub4Dos the installation setup is trying to find all it's files on the local CD/DVD device and we don't have them on an CD. To install Debian from the USB I had to download some extra files from the Debian website (vmlinuz, initrd.gz and boot.img.gz).
Loading those files directly from Grub4Dos will solve the issue as the setup won't look for the CD/DVD anymore, but instead, it will look for your iso file.
The exact location of the files for the current 'stable' release may be found here
. (Look under 'Tiny CD's USB sticks, etc' and select your architecture. In the 'hd-media' folder you will find the three files needed.) We won't chainload the iso anymore, but instead boot the new files directly as below:
title Debian HD-Media 6.0.4
IMPORTANT: Keep the iso file on your USB as the setup will look for it and continue from there.
2. Parted Magic
Booting the 'Parted Magic' iso directly was impossible for the new version 2012_3_24. I know for sure that they had USB support in their previous releases and those worked just fine, but not for new ones. Since I wanted the latest version I extracted the partedmagic.iso in a new folder 'pmagic' and loaded the files directly from there.
The official boot menu from 'Parted Magic' can't be loaded without chainloading the iso file so I only created two new menu entries from it ('the default boot' and 'boot with low memory').
Both entries in my Grub4Dos can be found here:
title Parted Magic 2012_3_24 Default settings
kernel /pmagic/bzImage edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 loglevel=0 max_loop=256 keymap=us
title Parted Magic 2012_3_24 Live with low RAM settings
kernel /pmagic/bzImage edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=normal lowram livemedia noeject nogpm nolvm nonfs nofstabdaemon nosmart noacpid nodmeventd nohal nosshd nosound nobluetooth loglevel=0 xvesa max_loop=256 keymap=us
3. Trinity Rescue Kit
Again, this was impossible to boot directly from the iso file with no issues since it won't find it's files when loading. As a workaround I extracted all the files from the iso in the USB root folder. Grub4Dos will boot the iso file normally but once booted 'Trinity Rescue Kit' will ask for it's files. If all the files are copied on the root folder simply specify their location. (Ex: /dev/sdb1) and it will continue.
An advantage with this workaround is that you can update all your antivirus databases and place them on the root folder as well, hence you won't boot from an outdated iso file but from your own files copied on the root folder.
And as a disadvantage you will have some duplicate files on the USB but the iso is just 400 MB and I thought it's not that much.
Grub4Dos menu entry:
title Trinity Rescue Kit 3.4 (Update 04.01.2012)
map /iso/trinity-rescue-kit.3.4-build-372u.iso (hd32)
That was all. This is how I made my 'Rescue USB' with all the above utilities. I'm just a newbie in the world of Linux and perhaps not all the above decisions are the right ones but this is how I managed to build it. Of course, this was done with the help of this vast community from the wonderful world of Linux and I thank you all.
I'm open for any suggestions, updates or anything you might want to add.
Thank you for reading and I truly hope this will help someone.