My reading of the source-code path for gub-setup.c indicates that
dest_dev->disk->id is not set by the time the drive number test is done.
utils/i386/pc/grub-setup.c::setup()
dest_dev = grub_device_open (dest);
kern/device.c::grub_device_open(const char *dest name)
disk = grub_disk_open(name);
kern/disk.c::grub_disk_open(const char *name)
disk = (grub_disk_t) grub_zalloc(sizeof(*disk));
disk->name = grub_strdup (name);
...
disk->dev = dev;
...
return disk;
dev->disk = disk;
return dev;
...
/* 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;
To test this I added a small patch to report the value of disk->id
(attached) and built the binary. When run on the target system it
reveals:
./grub-setup: info: the size of hd0 is 78140160
./grub-setup: info: setting the root device to 'hd0,1'.
./grub-setup: info: disk->id = 0.
and the resulting boot sector contained the jmp instruction.
** Attachment added: "grub-setup: report disk id"
http://launchpadlibrarian.net/43385640/999_setup_report_disk_id.diff.level-1.log
** Attachment removed: "grub-setup: report disk id"
http://launchpadlibrarian.net/43385640/999_setup_report_disk_id.diff.level-1.log
--
Acer Travelmate C100 fails to boot: "Geom Error"
https://bugs.launchpad.net/bugs/555500
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs