I wonder if someone that is familiar with the setting of disk->id for pc
could take a look at this bug.

Although I think I've found the reason for the bug I'm not clear on what
the correct solution would be.

In summary:

disk->id has not been set by the time util/i386/pc/grub-setup.c does the
buggy BIOS test:

 /* If DEST_DRIVE is a hard disk, enable the workaround, which is
    for buggy BIOSes which don't pass boot drive correctly. Instead,
    they pass 0x00 or 0x01 even when booted from 0x80. */
 if (dest_dev->disk->id & 0x80)
 /* Replace the jmp (2 bytes) with double nop's. */
 *boot_drive_check = 0x9090;

and as a result the system fails to boot on PCs where the BIOS provides
the wrong drive number.

I'm not sure quite what is missing - I see several functions that do set
disk->id but cannot be sure which, if any, would be an appropriate call
from grub-setup.c or one of the function calls it relies upon.



_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to