This is the method that I use to "choose" among many different partitions, and have the bootloader rewrite the MBR before it boots into something.
If you set up the USB drive for GPT partition, then many OS's won't recognize that.
This is actually a GOOD thing.
This is because GRUB2 has a very special command: gptsync. This command is used to write changes to the shadow-MBR, before booting to a boot option.
That's right, you can have a totally custom MBR for each boot option!
(okay, there's the parttool command as well.... but I prefer GPT because it hides partitions from many other OS's)
An example of using the gptsync command:
insmod gptsync menuentry "SLAX" { echo Loading Slax ... # use gptsync to build the MBR table # MBR#1: /dev/sda3 (slax) # MBR#2: /dev/sda4 (slaxchanges) # Unfortunately, gptsync's first argument MUST be of the form "hd0" NOT "hd0,1". # Therefore, we can't use $root. So we have to hard-code it. # # Probably the only way to not hard-code this is to use lua.mod's string manipulation to extract the proper drive from $root. gptsync hd0 3 4 linux /boot/vmlinuz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf changes=/slaxchanges/ initrd /boot/initrd.gz }