It seems that open_device() in biosdisk is messing up offsets when accessing partitions. For example if you try:
grub> hexdump (hd0,1) in grub-emu, you'll get a message saying lseek failed. The problem is that it substracts to the sector offset, so all accesses get to wrong data and accessing sector 0 results in underflow. I would think those lines (see patch) are plainly wrong, but they appear to be very old, and it is strange that this wasn't noticed earlier. Maybe we have changed behaviour around partition/disk offsets, causing this breakage without noticing? -- Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What good is a phone call… if you are unable to speak? (as seen on /.)
diff -x ChangeLog -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp ../grub2/util/biosdisk.c ./util/biosdisk.c --- ../grub2/util/biosdisk.c 2008-06-04 16:00:30.000000000 +0200 +++ ./util/biosdisk.c 2008-06-05 01:17:00.000000000 +0200 @@ -298,9 +298,6 @@ open_device (const grub_disk_t disk, gru /* Make the buffer cache consistent with the physical disk. */ ioctl (fd, BLKFLSBUF, 0); - - if (is_partition) - sector -= disk->partition->start; } #else /* ! __linux__ */ fd = open (map[disk->id].device, flags);
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel