I thought I'd post a note of thanks for this thread. I appreciate very much others taking the time to work through these things and post things like this. I made a USB boot project using the instructions posted originally by dummptyhummpty and it worked great, but I ran into an issue of my custom boot floppy disks not working. I was attracted to this post due to it using FAT32 so I can use larger than 2GB devices, so I've been working on a USB boot device the past 4 days and have had success getting a multiboot menu to work for us. I'll post my results below, but wanted to say thanks again.
- Used the HP formatting tool to format to FAT32. I have a DOS boot disk created under Windows 98 so I used that as my source. In fact, I just copied off the IO.SYS, MSDOS.SYS, COMMAND.COM files to a folder and used those to make the bootable disk. (I also copied HIMEM.SYS so I could use it in my CONFIG.SYS file.)
- Built my Multiboot UBCD4Win project like normal. I had it create an .ISO too.
- Downloaded and ran the PEtoUSB tool to copy my project to the USB thumbdrive.
- Downloaded the grub4dos-0.4.3.zip file and extracted to a temp folder. I copied the GRUB.EXE, MENU.LST, and CONFIG.SYS files to my thumbdrive.
- The config.sys from Grub4DOS has an entry already to start the grub.exe with command line parameters specified. I REM'd this line out and simply put DEVICE=GRUB.EXE and it boots up to use their default MENU.LST menu.
- Since it worked, I began editing their menu.lst file to customize it for items we wanted. That's basically it. The hard part was figuring out the syntax and commands to use in the menu though.
Since the thumbdrive was created using a Win98 DOS bootdisk as the source, when you boot you see the Windows 98 splash screen initially. To get rid of this, you can edit the
MSDOS.SYS file in a text editor. I added the below lines to remove the splash screen, stop creating a bootlog.txt file and to also hopefully ignore any improper shutdown notices upon bootup.
CODE
[Options]
BootGUI=0
BootMenu=0
BootWarn=0
DisableLog=1
Logo=0
I then ran into a problem where Grub4DOS seems to have some limitation on the number of menu entries you can put into the menu.lst file. I couldn't find any information on limitations with the Grub4DOS menus though. So all I can figure is there is a maximum limit on menu entries or maximum file size (or something) going on because the max menu entries I could get was about 22. I shuffled things around a bit and did get 23 one time, but I can't figure out what the limitation or issue is. So I quite fighting that and to get the items I wanted to include I had to dust off my old DOS experience and put a multiboot menu inside of CONFIG.SYS. Here is what I have done inside of
CONFIG.SYS to break things out. Notice I reference a menu file for grub.exe to use in each section. This is how I got Grub to use different menus depending on the selection you make.
CODE
[MENU]
MENUITEM UBCD4WIN, Ultimate BootCD for Windows v3.12
MENUITEM STATESD, State of SD Boot Disks
MENUITEM HDDIAGS, Hard Disk Diags & Tools Boot Disks
MENUITEM OTHER, Other tech Boot Disks
MENUITEM GPARTED, GParted Partitioner
MENUDEFAULT UBCD4WIN, 30
MENUCOLOR 15,1
[UBCD4WIN]
DEVICE=HIMEM.SYS
DOS=HIGH
FILES=60
BUFFERS=30
device=grub.exe --config-file="color black/cyan yellow/cyan;timeout 0;default 0;title Ultimate BootCD for Windows v3.12;find --set-root /ntldr;chainloader /ntldr"
[STATESD]
DEVICE=HIMEM.SYS
DOS=HIGH
FILES=60
BUFFERS=30
device=grub.exe --config-file=/statesd.lst
[HDDIAGS]
DEVICE=HIMEM.SYS
DOS=HIGH
FILES=60
BUFFERS=30
device=grub.exe --config-file=/hddiags.lst
[OTHER]
DEVICE=HIMEM.SYS
DOS=HIGH
FILES=60
BUFFERS=30
device=grub.exe --config-file=/other.lst
[GPARTED]
DEVICE=HIMEM.SYS
DOS=HIGH
FILES=60
BUFFERS=30
device=grub.exe --config-file=/gparted.lst
I could have put the common commands inside a [COMMON] section of our CONFIG.SYS, but I couldn't remember when the common section gets executed upon DOS bootup and I wanted to ensure those commands got executed before the GRUB.EXE getting executed. This part wasn't rocket science, so I figure a messy config.sys that I know works is an acceptable solution.
For others to reference, I've listed below the contents of the menus I use and how I boot up the various items. My knowledge of this stuff is pretty shaky and I did a "lot" of internet searching for examples and information. Despite a lot of frustration and headaches, I managed to get things to work well enough for us and maybe others will find this useful.
The nice thing about this is that I used our corporate version of Ghost and made a ghost image of my thumbdrive. I then ghosted that image to my external 80GB USB hard drive and it now boots up fine just like the thumbdrive. Thus, I can hopefully include our various clone images we use to deploy to workstations all on the same boot device.
CODE
# This is the statesd.lst file. You can make changes to add or remove boot options.
# Items with a "#" are comments and are not executed.
color black/cyan yellow/cyan
timeout 30
default /default
title State of SD: PointSec Force Removal Utility
find --set-root /images/ps_recvr.img
map --mem /images/ps_recvr.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title State of SD: Intel CPU Identifier v3.7.6
find --set-root /images/cpu_id.img
map --mem /images/cpu_id.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title State of SD: Intel CPU Identifier (For Old CPU's)
find --set-root /images/frq_id.img
map --mem /images/frq_id.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title State of SD: DOS Universal Network Bootdisk v10b
find --set-root /images/uni10_cd.img
map --mem /images/uni10_cd.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title State of SD: DOS w/Ghost v11.0.1 (with limited USB support)
find --set-root /images/w98gst11.img
map --mem /images/w98gst11.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title State of SD: DOS Bootdisk with DOS Utilities
find --set-root /images/w98nonet.img
map --mem /images/w98nonet.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title State of SD: WipeDrive v3.0.0 (Drive eraser)
find --set-root /images/wipedrv.img
map --mem /images/wipedrv.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title State of SD: PCI Info v1.1 (Hardware info)
find --set-root /images/pciinfo.img
map --mem /images/pciinfo.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title State of SD: SpinRite v6.0 (Disk Recovery and Analysis)
find --set-root /images/spinrite.img
map --mem /images/spinrite.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title State of SD: Windows NT Repair
find --set-root /images/ntrepair.img
map --mem /images/ntrepair.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title GRUB4DOS Commandline
commandline
title Exit to DOS
quit
title Reboot computer
reboot
title Halt computer
halt
CODE
# This is the hddiags.lst file. You can make changes to add or remove boot options.
# Items with a "#" are comments and are not executed.
color black/cyan yellow/cyan
timeout 30
default /default
title HD Diags & Tools: Fujitsu Diagnostic Tool v7.00
find --set-root /images/fjdt.img
map --mem /images/fjdt.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title HD Diags & Tools: Gateway GWScan Diagnostic Tool v5.12
find --set-root /images/gwscan.img
map --mem /images/gwscan.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title HD Diags & Tools: Hitachi/IBM Drive Fitness Test v4.11
find --set-root /images/dft.img
map --mem /images/dft.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title HD Diags & Tools: Maxtor PowerMax v4.23
find --set-root /images/pwrmax.img
map --mem /images/pwrmax.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title HD Diags & Tools: Samsung SHDIAG v1.25
find --set-root /images/shdiag.img
map --mem /images/shdiag.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title HD Diags & Tools: Seagate SeaTools Desktop v3.02.04
find --set-root /images/stools.img
map --mem /images/stools.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title HD Diags & Tools: Seagate(Maxtor) SeaTools for DOS v2.07 (Replaces SeaTools Desktop & PowerMax)
find --set-root /images/seatools.img
map --mem /images/seatools.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title HD Diags & Tools: Western Digital Data Lifeguard Diagnostics v5.04f
find --set-root /images/wddlg.img
map --mem /images/wddlg.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title HD Diags & Tools: Magic BootDisk w/MHDD 4.6
find --set-root /images/mbd20.img
map --mem /images/mdb20.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title HD Diags & Tools: DOS Boot Disk w/ATTO Tech SCSI UL4S/UL4D
find --set-root /images/w98atto.img
map --mem /images/w98atto.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title GRUB4DOS Commandline
commandline
title Exit to DOS
quit
title Reboot computer
reboot
title Halt computer
halt
CODE
# This is the other.lst file. You can make changes to add or remove boot options.
# Items with a "#" are comments and are not executed.
color black/cyan yellow/cyan
timeout 30
default /default
title Memtest86+ v2.01 (Memory Diagnostic)
kernel /images/memtestp.bin
title Smart Boot Manager (Boot a CD/DVD when BIOS doesn't support CD boot)
kernel /syslinux/memdisk
initrd /images/sbootmgr.dsk
title Norton GoBack Removal Tool
find --set-root /images/goback.ima
map --mem /images/goback.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title GRUB4DOS Commandline
commandline
title Exit to DOS
quit
title Reboot computer
reboot
title Halt computer
halt
CODE
# This is the gparted.lst file. You can make changes to add or remove boot options.
# Items with a "#" are comments and are not executed.
color black/cyan yellow/cyan
timeout 30
default /default
title GParted LiveCD 0.3.4-11 (Auto Configuration)
kernel /isolinux/gparted root=/dev/ram0 init=/linuxrc real_root=/dev/loop0 looptype=squashfs loop=/gparted.dat udev dokeymap scandelay=6 dodmraid nosound cdroot=/dev/sd
initrd /isolinux/gparted.igz
title GParted LiveCD 0.3.4-11 (Force VESA video configuration)
kernel /isolinux/gparted root=/dev/ram0 init=/linuxrc video=vesa real_root=/dev/loop0 looptype=squashfs loop=/gparted.dat udev dokeymap scandelay=6 dodmraid nosound cdroot=/dev/sd
initrd /isolinux/gparted.igz
title GParted LiveCD 0.3.4-11 (Force i740 video configuration)
kernel /isolinux/gparted root=/dev/ram0 init=/linuxrc video=i740 real_root=/dev/loop0 looptype=squashfs loop=/gparted.dat udev dokeymap scandelay=6 dodmraid nosound cdroot=/dev/sd
initrd /isolinux/gparted.igz
title GParted LiveCD 0.3.4-11 (Force i810 video configuration)
kernel /isolinux/gparted root=/dev/ram0 init=/linuxrc video=i810 real_root=/dev/loop0 looptype=squashfs loop=/gparted.dat udev dokeymap scandelay=6 dodmraid nosound cdroot=/dev/sd
initrd /isolinux/gparted.igz
title GParted LiveCD 0.3.4-11 (Auto Configuration and Frame Buffer)
kernel /isolinux/gparted root=/dev/ram0 init=/linuxrc real_root=/dev/loop0 vga=788 looptype=squashfs loop=/gparted.dat udev dokeymap scandelay=6 dodmraid nosound cdroot=/dev/sd
initrd /isolinux/gparted.igz
title GRUB4DOS Commandline
commandline
title Exit to DOS
quit
title Reboot computer
reboot
title Halt computer
halt
Regarding the GParted. I know nothing about linux booting, etc. and it initially complained about an invalid loop for gparted.dat. On my initial command line try, it had "cdroot". After I did a lot of searching and found an example somewhere, I tried using "cdroot=/dev/sd" and then it booted up. I apologize for my lack of knowledge on this and have no idea if what I did is appropriate, or for that matter, even accurate. But regardless, it started booting up after that. The GParted is part of my multiboot of the UBCD4Win project that I believe "pcuser" had created the plugin for. (Many thanks for that pcuser!)