Hello, I am trying to boot an "i386-pc" server using GRUB chain loading. I want the first GRUB installation to search by label for the disk containing the actual OS to be booted.
Implementation used: GRUB 2.02 as supplied on the arch linux 2017.10.01 live system .iso. Disk layout: (hd0) (hd0,msdos1) : USB memory key holding "primary" GRUB installation created with arch linux. (hd1) (hd1,gpt1) (hd1,gpt2): FreeNAS 11 installation using "secondary" GRUB 2.02 beta 2 to boot off a zfs partition. This has been verified to boot as expected by removing all other disks from the system. Problem: The following sequence of commands from the primary GRUB shell successfully loads the secondary GRUB echo $root # prints hd0,msdos1 set root=(hd1) chainloader (hd1)0+1 boot while the following commands crash after "boot" with an illegal instruction at EIP 7 echo $root # prints hd0,msdos1 chainloader (hd1)0+1 boot From the GNU documentation and from instructions found on the net (https://wiki.bsdforen.de/howto:grub2-anleitung) I would have expected that "chainloader" takes a file as an argument, which may be an absolute path including a device. However, looking at the source code in grub-core/loader/i386/pc/chainloader.c I'd say that chainloader uses the information from the root variable in some places and the path supplied as an argument in other places, possibly causing the boot process to crash. Could this behavior of chainloader be considered a bug? If not, would it be possible to update the documentation to reflect the observed behavior? I think it would be helpful if chainloader would issue at least a warning if passed an absolute path. Regards Harald Fricke _______________________________________________ Help-grub mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-grub
