On Thu, 2008-06-05 at 01:35 +0200, Robert Millan wrote:
> 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?

The question whether sector is relative to the partition or to the whole
disk.  From what I see in disk/memdisk.c or it disk/i386/pc/biosdisk.c,
the sector is relative to the whole disk.  There is no compensation for
partition offsets.  That's low-level code that doesn't know about
partitions, and util/biosdisk.c correctly tries to emulate that.

I guess grub-emu gets it wrong somewhere.

-- 
Regards,
Pavel Roskin


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

Reply via email to