Linux – Boot ISO image from GRUB4DOS on EFI machines


I failed with loading ISO image (non-distro) from GRUB2 from USB stick, but found the way how I can boot the GRUB4DOS and then load the image from there. However, it doesn't work all the time and the questions is WHY it doesn't?

Environment and loading process:

We need to have EFI machine, USB stick, booting ISO, GRUB2 and GRUB4DOS. Last 3 on USB stick.
Boot: USB -> EFI loader -> GRUB2 -> GRUB4DOS -> ISO image

Configuration files

To boot GRUB4DOS I use this from grub.cfg:

menuentry "image.iso" { linux /syslinux/grub.exe
–config-file="/menu.lst" }

My menu.lst is here:

timeout 20

default 0

title image.iso

find –set-root –ignore-floppies –ignore-cd //image.iso

map –heads=0 –sectors-per-track=0 //image.iso (hd32)

map –hook

chainloader (hd32)

This works perfectly with Legacy machines.

However, when I come to GRUB4DOS, I don't see the menu with image.iso, I see only GRUB command line. That means that my menu.lst didn't load.

Why is it like this?

Background and ideas

  1. I have an idea that GRUB4DOS doesn't recognize my USB stick as a device.
    I tried the command find and got (hd0,0), (hd0,1), (hd0,2), (rd). When I tried to set root to any of these devices I don't see fat file system, how it was with Legacy machines. The root device is (hd0,0), which has ntfs file system which should be partition with Windows.
  2. EFI machines support only GRUB2, so I can't boot GRUB4DOS straight away.
  3. Please, don't suggest anything like this, because my image doesn't have kernel.
    You can imagine that you load HDAT2 or Hiren's boot cd, for example.

    menuentry "Blancco Blancco5.iso" {

    set isofile="/image.iso"

    loopback loop $isofile

    set root=(loop)

    linux /isolinux/vmlinuz isofile=$isofile splash quiet

    initrd /isolinux/initrd


Best Answer

GRUB4DOS will not work in EFI environment, in any case. It needs a BIOS!

Related Question