30

MultiBootISOs is a tool that let you install Grub on a USB flash drive. I really like it because it lets me boot from ISO files and let me put a bunch of ISOs on my USB and choose which one to boot.

The problem is, this is a Windows tool, and I don't know how to do it through the command lines. I would also like to know how to install Grub (2) this way, Grub Legacy seems to be easier...

EDIT: I'm not asking for a tool (and definitely not a Windows tool). I want to know the commands that I have to execute to have the same effects. I'm having Ubuntu in my mind right now, but if there is a general way that I can boot any ISO in the USB then that would be better.

1

3 Answers 3

18

You got me curious how this would be done. The Pendrivelinux site had a tutorial I did this from my Mint 9 install instead of a live cd as the site suggests.

I started with finding the location of my USB drive in a terminal I ran df it returned the location of the device as

/dev/sdg1 /media/LINUXUSB 

after that I ran

sudo su 

and then to install grub 2

grub-install --no-floppy --force --root-directory=/media/LINUXUSB /dev/sdg1 

I had to use --force additionally, the example on the site did not. Then I did

cd /media/LINUXUSB/boot/grub 

The site gave a link to download a copy of grub.cfg to the /boot/grub directory on my USB drive. The link was

wget http://pendrivelinux.com/downloads/grub.cfg 

After that I edited grub.cfg to reflect the iso's on my USB drive.

set timeout=10 set default=0 menuentry "Run Fedora" { loopback loop /Fedora13.iso linux (loop)/isolinux/vmlinuz0 boot=isolinux iso-scan/filename=/Fedora13.iso splash -- initrd (loop)/isolinux/initrd0.img } menuentry "Run Ubuntu" { loopback loop /ubuntu-10.04-netbook-i386.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-10.04-netbook-i386.iso splash -- initrd (loop)/casper/initrd.lz } menuentry "Run Clonezilla" { loopback loop /clonezilla.iso linux (loop)/live/vmlinuz boot=live iso-scan/filename=/clonezilla.iso splash -- initrd (loop)/live/initrd.img } 

I found that in the different iso's, vmlinuz and initrd were located in a different directory. I was able to get all three to start the boot process; but, only Ubuntu to actually load. If I figure out what I need to get the other two to finish loading, I will add that later. I have not tried any other iso's just these three.

4
  • @phunehehe glad it helped. This site panticz.de/MultiBootUSB has grub.cfg with quite a few entries, it has some good examples. Commented Aug 23, 2010 at 14:05
  • I have added hiren entry ( that use grub.exe ) to chainload Commented Mar 21, 2015 at 5:26
  • Can you help me at unix.stackexchange.com/q/249049/66803 ? Commented Dec 17, 2015 at 5:00
  • How can I install BIOS GRUB to my USB drive when I have a UEFI laptop. It installs UEFI GRUB instead Commented May 18, 2016 at 14:33
5

GRUB2 Bootloader Full tutorial is a good place to start on multi boot configurations with GRUB2.
If you are familiar with GRUB, jump straight to the 5th or 6th section.

There is also a Superuser question on Setting up a multiboot system with GRUB.
There is also a Ubuntu MultiOSBoot community page which suggests you should stick to the Legacy GRUB.

The technique works on flash drives too as long as your machine can boot from them.
I have been working off flash drives for some time now.

-1

i spent hours in the internet trying to find how to generate a working grub.cfg for a removable disk.

finally based on the script from here, i made my working script (the below is contents of grub.cfg):

### inputs ### set UUID_ESP="E8C0-B8AE" set UUID_ISO="c11f533e-a298-4381-950a-5d6d1f7f5907" ### end ### search --no-floppy --set=ESP --fs-uuid $UUID_ESP # the address of the ESP set ESP=($ESP) # add parentheses echo "The address of the ESP is $ESP" search --no-floppy --set=ISO_PART --fs-uuid $UUID_ISO # the address of the ISO partition set ISO_PART=($ISO_PART) # add parentheses echo "The partition on the flash drive with the iso is $ISO_PART" echo "the prefix is $prefix" # GRUB folder with modules sleep 5 insmod efi_gop insmod font if loadfont $ESP/boot/grub/fonts/unicode.pf2 then insmod gfxterm set gfxmode=auto set gfxpayload=keep terminal_output gfxterm fi menuentry "arch_linux_iso" { set ISOFILE="/archlinux-2019.10.01-x86_64.iso" loopback loop ${ISO_PART}${ISOFILE} linux (loop)/arch/boot/x86_64/vmlinuz img_dev=/dev/disk/by-uuid/$UUID_ISO img_loop=$ISOFILE initrd (loop)/arch/boot/intel_ucode.img (loop)/arch/boot/amd_ucode.img (loop)/arch/boot/x86_64/archiso.img } 

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.