7

I'm using Ubuntu as my primary OS and alternative is Windows 7 for gaming, and another stuffs. I want to have menu to boot some live CD ISO. Is there anyway to make menu entry in Grub2/Burg to boot ISO file like the CD way?

I see there are some ways to make it possible but almost method need specified boot arguments (kernel parameters). But I have mixed kind of Live OS wan to boot up using boot loader included: Linux, Unix, DOS (for recovery purpose)...

I'm looking for more generic way to make it easy to discover and add to the menu config file.

2
  • 1
    Found a way for myself: use grub2 together with grub & syslinux since they can chainloader to .iso file directly instead of set absolute path for kernel & initrd.
    – uocnb
    Nov 28 '11 at 9:05
  • 1
    ngyun, update in answerr section with howto and close thq quest. Dec 9 '11 at 8:28
3

I have got a perfect chain loader with SysLinux, Grub4Dos and Grub2, and here is my configs:

Syslinux

LABEL DSL
KERNEL memdisk
INITRD /iso/dsl.iso
APPEND iso raw

LABEL GRUB4DOS
KERNEL /boot/grub.exe

Grub4Dos

title Paragon Partition Manager
map (hd0,0)/iso/paragon-bootable-media.iso (hd32)
map --hook
chainloader (hd32)
boot

title Syslinux
chainloader /boot/syslinux/syslinux.bin

title GRUB2 Chainload
root (hd0,0)
kernel /boot/grub/core.img
boot

Grub2

menuentry "Ubuntu 13.10 Desktop ISO" {
  loopback loop /iso/ubuntu-desktop-amd64-13.10.iso
  linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-desktop-amd64-13.10.iso noeject noprompt splash --
  initrd (loop)/casper/initrd.lz
}

menuentry "Tinycore ISO" {
  loopback loop /iso/tinycore.iso
  linux (loop)/boot/bzImage --
  initrd (loop)/boot/tinycore.gz
}

menuentry "GRUB4DOS" {
  linux16 /boot/grub.exe
}

menuentry "SYSLINUX" {
  chainloader=/boot/syslinux/syslinux.bin
}
2
  • good answer ! note that linux16 /boot/grub.exe on grub2 allows to boot live windows live bartpe or Hiris live. (there is a way to specify configuration file )
    – Francesco
    Mar 26 '15 at 0:45
  • I'm confused, what's the reason that Paragon, Ubuntu 13.10, and Tinycore could not boot via Syslinux? Oct 25 '18 at 0:36
1

For normal linux distribution, you need to specify the absolute path and disk for that ISO image, and parameter for loading kernels, see the example below:

loopback loop (hd0,msdos0)/linux.iso
linux (loop)/vmlinuz parameters
initrd (loop)/initrd.img

For other OS, i never succeed.

1

For debian-flavors like ubuntu/mint try apt-get install grub-imageboot. Then just put iso file(s) in a certain folder (the default is /boot/images/) and each time you run sudo update-grub it will add boot-menu entries for each bootable iso file in that folder. (Similar to how easybcd boots isos on mbr-windows pcs).

    sudo apt-get install grub-imageboot  
    # do df -h /boot and make sure you have 300meg free on /boot partition
    cd /tmp; wget http://ftp.sh.cvut.cz/slax/Slax-9.x/slax-32bit-9.11.0.iso 
    sudo cp  /tmp/slax-32bit-9.11.0.iso  /boot/images/
    sudo grub-update

If your boot partition is small, you can, for example, create a folder named boot-isos on a big-partition, like /home/, and edit /etc/default/grub-imageboot file as shown below.

$ sudo mkdir /home/boot-isos/
$ cat /etc/default/grub-imageboot 
# Where to find the iso/floppy images

#IMAGES="/boot/images"
IMAGES="/home/boot-isos"

# You can override the boot options for iso/floppy images here
# see http://syslinux.zytor.com/wiki/index.php/MEMDISK for details

#IMAGEOPTS="rawimg"
#ISOOPTS="iso"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.