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
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.
EFI machines support only GRUB2, so I can't boot GRUB4DOS straight away.
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
}