On 03/17/2010 12:02 AM, James Bottomley wrote:I think you hit on the real culprit and ignored it, it seems that even modern BIOS implementations, at least some of them, do not want to cross a cylinder boundary doing boot. Or maybe that's dumb MBR code, which at least has the excuse of being size limited.On Tue, 2010-03-16 at 23:50 +0900, Tejun Heo wrote:e.g. If the first partition begins at CHS 0/32/33 and ends atfor an msdos label, this is illegal, that was Arnd's point. The
12/233/19 and the corresponding LBA addresses are 2048 and 206848, you
can solve the equation and determine that the parameters gotta be 63
secs/trk and 255 heads/cyl to make those two pairs of addresses match
each other and in fact some BIOSs try to do this depending on
configuration (and sometimes falls into infinite loop or causes other
boot related problems if the parameters are too uncommon).
partitions have to begin and end on cylinder boundaries*. Knowing that,
you can deduce the geometry from the last sector entry.
* at least if you want to preserve windows compatibility, which is what
most of our partitioning tools seem to do.
Well, the thing is that
* Anything remotely modern (>= XP) doesn't give a hoot about cylinder
alignment.
* Anything older (<= 2000) is very likely to get confused with custom
geometry starting from the BIOS itself. For those cases, the only
thing we can do is aligning partitions to cylinders abiding BIOS
supplied geometry parameters which will usually be 255/63.
So, using custom geometry doesn't help compatibility at all.