Grub only installs work great on a known system but may need to be edited (from grub menu) when booting up on another system. The chainload root entry may need to be adjusted.
The easiest way to keep everything working with kernel updates:
- partition the disk/usb
- install the first partitions OS with grub loaded into the MBR - this is the default boot menu
- subsequent OS/partition installs load grub into their relative root partitions
- hand edit the MBR grub with chainload entries for the other partitions, edit the root(hd#,#) to the appropriate location for your usb drive
- Now kernel updates or installs to each partition will update the grub installed to the relative root partitions and will never overwrite/mess up the master chainload menu.
- works great with boot to ISO, drop a new ISO into the data partition, copy/edit another "master" grub entry, reboot into ISO. Knoppix, Tinycore, Clonezilla, Puppy, etc., all work great with this setup using the data partition the ISOs are in to save settings. http://ubuntuforums.org/showthread.php?t=1549847
Example of "master" mbr grub chainload entries:'
# for PCLos on Partition 2
# for mandriva on Partition 3
# for SUSE on Partition 4
# for Slackware on Partition 5
hd5 is the USB position if the USB stick is installed into the primary usb port on this particular machine. If booting to another machine, hit "e" to edit the chainload entry and adjust to the correct root.
I use this grub method because it works for harddrive and USB. I usually use the stick only on my systems and use the boot to ISOs with shared data partition liberally.
USB sticks I use for travel or rescue systems use syslinux, sometimes with grub4dos. This won't need to be edited when booting on different systems - http://comptb.cects.com/67-multi-boot-usb-with-syslinux-and-grub4dos