3

Here where I am trying to do.

USB Stick Boots to -> GRUB Loader -> GRUB boots one of many ISO files on the USB into LIVE mode.

Here is my directory structure which is really simple

MULTIBOOT(USB stick) ->
- ubuntu-14.04.1-desktop-i386.iso (ISO File)
- Parrot-full-3.6_amd64.iso (ISO File)
- kali-linux-2017.1-amd64.iso (ISO File)
- boot (FOLDER)
- boot/grub (FOLDER)

unbutu iso boots fine in my computer and in my VM parrot and kali iso load kernel but stop at initramfs and complain "install media not found"

Here is my grub.cfg file

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

menuentry "Parrot-full-3.6_amd64 ISO" {
 loopback loop /Parrot-full-3.6_amd64.iso
 linux (loop)/live/vmlinuz boot=live iso-scan/filename=/Parrot-full-3.6_amd64.iso noeject noprompt splash --
 initrd (loop)/live/initrd.img
}


menuentry "kali3-amd64 Live system" {
    loopback loop /kali-linux-2017.1-amd64.iso
    linux   (loop)/live/vmlinuz boot=live iso-scan/filename=/kali-linux-2017.1-amd64.iso splash username=root hostname=kali
    initrd  (loop)/live/initrd.img
}

I have tried these ISOs in virtual machines and the work. I also tried as on my PC by putting them on USB using RUFUS and booting directly. They work. The problem with RUFUS is that it works when I use single ISO. But I don't want to make one USB per ISO. I want to make ONLY ONE USB that holds all the ISOs and I should be able to boots which ever I want into LIVE mode. So I switched on to GRUB. But I must say that while GRUB is okay but its documentation is severely limited and fragmented. I am guessing if I need this, then lot of other people need this too.

3 Answers 3

1

SOLVED THE ISSUE!!!! SOLUTION:

You must use findiso kernel parameter for the boot process to locate the iso file midway to load the root file system. See my latest and working grub.config entries below:

NOTE: I had MOVED MY ISO FILES to /boot-isos/ folder just to test superGrub. But they can be anywhere. Just make sure:

1. to give correct path name to the iso file
2. MUST USE findiso kernel parameter to let boot process find the iso file. Else it will NOT work.

my current directory structure in USB now is as follows:

USB STICK ->
/boot (folder that holds GRUB)
/boot-isos (folder that holds isos below)
- KALI iso file
- Parrot iso file
- Ubuntu iso file

menuentry "[loopback]Parrot-full-3.6_amd64" {
    set isofile='/boot-isos/Parrot-full-3.6_amd64.iso'
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live findiso=$isofile noconfig=sudo username=root hostname=parrot
    initrd (loop)/live/initrd.img
}


menuentry "[loopback]kali-linux-2017.1-amd64" {
    set isofile='/boot-isos/kali-linux-2017.1-amd64.iso'
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live findiso=$isofile noconfig=sudo username=root hostname=kali
    initrd (loop)/live/initrd.img
}
0

I have spent lot of time on this. Tested with various methods to boot from loopback both command line and using grub.cfg parameters. Did not get it to boot kali or parrot. Ubuntu boots fine every time. I was able to book other linux distros. I tested with SuperGrub, same results. I believe this issue is with kali-linux-2017.1-amd64.iso and Parrot-full-3.6_amd64.iso. The boot process in these two is broken as it expects to load the root file system from a mounted cd/dvd drive. Tools like RUFUS are getting around this by expanding the contents of ISO into a /cd file which is probably loaded and mounted as a seperate ramdisk /mnt/cd. KALI and PARROT should fix this.

0

I had the same problem booting a live Debian from a multiboot USB key. I fixed it by adding the parameter findiso=$isofile.

This is main menu entry:

menuentry "Debian 12 testing Live ISO" --class debian --class linux {
    set root='(hd0,1)'
    set isofile="/debian-live-testing-amd64-gnome.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live findiso=$isofile iso-scan/filename=${isofile} components noeject  noprompt splash  "${loopback}"
    initrd (loop)/live/initrd.img
}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .