Question: I have a bunch of live ISO files like [GParted](https://gparted.org/livecd.php), [CloneZilla](https://clonezilla.org/downloads.php), [Boot-Repair](https://sourceforge.net/projects/boot-repair-cd/files/), [Ubuntu 14.04 32 bit](http://releases.ubuntu.com/16.04/ubuntu-16.04.4-desktop-i386.iso), ... downloaded in `/opt` and on my old BIOS machine, I used to be able to just add them to the grub menu and boot them. **:-)**

I now have an UEFI machine and all the information I can find are for BIOS machines.

*What are the steps to boot these ISO files from grub?* 

I'm just I'm sick and tired of "burning" these to a USB stick all the time as I can never find the stick I need whereas my computer itself if much harder to loose in the total chaos around me here...) **:-(**

Answer: 
An alternative is to just add a configfile to 40\_custom like this:

```
menuentry 'Live ISOs on SSD' {
configfile (hd0,3)/ISO/livecdimage.cfg
} 

menuentry 'Live ISOs on HDD (boot on SSD)' {
configfile (hd1,3)/ISO/livecdimage.cfg
} 

```

I do this as when I update an ISO, I invariably forget to run `sudo update-grub`. The above entries never have to change and I can just edit livecdimage.cfg which has the same format as any 40\_custom but without header lines, and is in my /ISO folder in my ISO partition.

I do add toram as another boot parameter and on the system with Nvidia add nomodeset boot parameter. But still often have to unmount the /isodevice.

Unable to umount isodevice unmount ISO
<https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1155216>

```
sudo umount -l -r -f /isodevice

```

And this is part of my livecdimage.cfg file

```
# livecdimage.cfg
# Add this to 40_custom to load this file:
# menuentry 'Live ISOs' {
# configfile (hd1,3)/iso/livecdimage.cfg
#} 
# Add iso names to livecdimage.cfg
#for i in `ls *.iso`;do echo "# "$i>>livecdimage.cfg; done;

menuentry "Ubuntu 16.04.4 xenial amd64" {
    set isofile="/ISO/ubuntu-16.04.4-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile 
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

menuentry "Ubuntu 18.04 Bionic amd64" {
    set isofile="/ISO/bionic-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile 
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

# spacer line
menuentry " " {
set root= 
}

menuentry "Reboot" {
    reboot
}

menuentry "Halt" {
    halt
}

```
**SIMPLE mkusb ISO multibooter**

If you don't need multi-persistence, it is easy to multiboot operating system ISO's on a mkusb flash drive.

Use mkusb to make a Persistent USB drive using a default OS of your choice, <https://help.ubuntu.com/community/mkusb>

Make a folder in the usbdata partition sdx1, named ISOs.

Add the ISO's to be booted to this folder.

Add menuentries to /sdx3/boot/grub/grub.cfg to loopmount the ISO's.

Samples:

```
menuentry "Ubuntu-18.04 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/ubuntu-18.04-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile splash --
        initrd (loop)/casper/initrd.lz
}

menuentry "GParted 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/gparted-live-0.31.0-1-amd64.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components noswap noeject toram=filesystem.squashfs ip='' nosplash findiso=$isofile splash --
    initrd (loop)/live/initrd.img
}

menuentry "Clonezilla 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/clonezilla-live-2.5.5-38-amd64.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live live-config nolocales edd=on nomodeset ocs_live_run=\"ocs-live-general\" ocs_live_extra_param=\"\"   ocs_live_keymap=\"\" ocs_live_batch=\"no\" ocs_lang=\"\" vga=788   ip=frommedia nosplash toram=filesystem.squashfs findiso=$isofile splash --
    initrd (loop)/live/initrd.img
}

```