I have looked at this problem deeply, and I think the following changes
would be required:
- A variable to specify where grub.cfg and modules are present. Currently,
we have it only for a prefix without a drive. So grub_root_drive or
something must be added. It could be added to kern/i386/pc/startup.S, but
boot/i386/pc/boot.S might be more appropriate (if there is space large
enough).
- grub-setup must handle a root drive independently, of a boot drive or an
embedding drive.
- kern/i386/pc/init.c must be modified accordingly.
The scinarii would be the following:
- If a core image is embedded, and a grub directory is in the same drive,
all drives should be set to -1, thus a boot drive passed by BIOS or another
boot loader will be used.
- If a core image is embedded, and a grub directory is in a different
drive, a root drive must be explicitly set by grub-setup. The other drives
will be set by BIOS or another boot loader.
- If a core image is not embedded, and it is in the same drive, the same as
the first example.
- If a core image is not embedded, and it is in a different drive, an
embedding drive is identical to a root drive, and must be set explicitly by
grub-setup.
I am planning to fix it myself, but if I look too slow, please feel free to
fix it instead of me.
I think I have fixed it. Please test it, if you can.
Hello,
I pulled the latest source from CVS tonight and after compiling and
installing, it looks like your patch works! I no longer was dropped into
rescue mode and my system booted.
I did encounter one problem. My screen is corrupted and the menu is
unreadable. Grub is loading the menu correctly and if I wait for the
timeout, everything boots fine. This is not a problem unless at some
point I need to read the screen. :)
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel