I finally figured out to create an USB drive that contains multiple versions of Windows on it. This universal USB drive does have one limitation in that you cannot install Windows with it. It is suitable for running Startup Repair and other commands.

Tools I used:

  • YUMI to install Syslinux and GRUB4DOS on the USB drive.
  • Dreamweaver to edit the menu files because the menu text files are not in the Windows format.
  • ODIN to backup my USB drive in case I lose it or the data on it is corrupted.
  • ImgBurn to create an ISO file without the /sources/INSTALL.WIM file to save space.

Steps to get going:

  1. Run YUMI and first install all the other repair tools you want.
  2. YUMI will create a folder /multiboot/ISOS. Copy all the Windows ISO’s you want to that directory and give them an easy name without spaces, i.e. windows7_x32_sp1.iso. In Linux, file names are case-sensitive so always use lower-case.
    1. If you do not have the ISO’s you need, then a legal way to acquire them is through TechNet or MSDN. Just be aware that the TechNet Windows 8 may still be crippled.
    2. Since you cannot install Windows using the method, you probably should consider removing the /sources/INSTALL.WIM file from each Windows ISO. I used these instructions for creating a bootable ISO. What I did was extract the contents of the disc using a program such as 7-zip, delete the INSTALL.WIM file, and then used ImgBurn to recreate the ISO. You will also want to remove the ei.cfg file from Windows 7 and Windows Vista discs.
  3. I then used YUMI to add all the repair tools I wanted to the USB drive. These tools include Clonezilla, Memtest 86+, and a few others.
  4. I then created a GRUB4DOS menu file for each Windows edition in the /multiboot/menu/ folder that YUMI created.  For example: windows7.lst.
  5. Using a file YUMI created as a template, I made the contents of the file as follows: (The text in red are what you need to change for each version and edition of Windows.)
    NOTE: Due to the website layout, a line break appears where a line break should not be in your file. If you copy the text in the section below, it will paste correctly in your text editor.

    default 1
    title Windows 7
    title <-- Back to Main Menu
    root (hd0,0)
    chainloader (hd0)+1
    rootnoverify (hd0)
    title Windows 7 64-bit SP1\n
    ls /multiboot/ISOS/windows7_x64_sp1.iso || find --set-root /multiboot/ISOS/windows7_x64_sp1.iso
    map --heads=0 --sectors-per-track=0 /multiboot/ISOS/windows7_x64_sp1.iso (0xff) || map --heads=0 --sectors-per-track=0 --mem /multiboot/ISOS/windows7_x64_sp1.iso (0xff)
    map --hook
    chainloader (0xff)
    title Windows 7 32-bit SP1\n
    ls /multiboot/ISOS/windows7_x32_sp1.iso || find --set-root /multiboot/ISOS/windows7_x32_sp1.iso
    map --heads=0 --sectors-per-track=0 /multiboot/ISOS/windows7_x32_sp1.iso (0xff) || map --heads=0 --sectors-per-track=0 --mem /multiboot/ISOS/windows7_x32_sp1.iso (0xff)
    map --hook
    chainloader (0xff)
  6. I repeated that file for Windows Vista and Windows 8.
  7. Next I modified the /multiboot/syslinux.cfg file to include these entries:
    label Windows 8
    menu label Windows 8
    KERNEL /multiboot/grub.exe
    APPEND --config-file=/multiboot/menu/windows8.lst
    label Windows 7
    menu label Windows 7
    KERNEL /multiboot/grub.exe
    APPEND --config-file=/multiboot/menu/windows7.lst
    label Windows Vista
    menu label Windows Vista
    KERNEL /multiboot/grub.exe
    APPEND --config-file=/multiboot/menu/windowsvista.lst
  8. I then safely removed the USB drive and tested it. Once I saw everything was working, I immediately used ODIN to make a backup of the USB drive.

Of course, you can create the menu however it suits you. The important thing is you now can have a USB drive that can repair any version of Windows from Vista on. I am probably going to add Windows Server 2008, 2011, and 2012 to my USB drive too. If you remove the INSTALL.WIM file, you can easily fit this on a 32GB USB drive. Since this cannot be used to install Windows, I will not put the various service packs on my USB drive.

NOTE: To be fair, I never did try to install Windows using this method.