Installer: no option to set geometry/corrupts partition table
randux at noreply.org
randux at noreply.org
Sun Mar 4 19:12:58 PST 2007
Matthew Dillon wrote:
:Hi Matt,
:
:There needs to be an option such as FreeBSD (and NetBSD and iirc
:OpenBSD) are providing, to set c/h/s for use by the DFly installer. I
:don't understand the comment that nobody is using it- all the *BSD show
:their view of it and if it doesn't match the partition table (which is
:laid out to this day in terms of c/h/s whether it's actual or virtual)
:it causes problems.
:
:For example, my machines are set up with 255 heads 63 sectors and how
:ever many cylinders the drive maps to. I fdisk the drive and I create
:my partitions aligned on cylinder boundaries. When DFly installs it uses
:16 heads and some other factor for sectors. He changed the units on the
:partition table and this means that the partitions I had created before
:and after (locations, not times) the DFly target slice are no longer on
:integral boundaries, and that writing on the DFly filesystems can leak
:into my other partitions and corrupt data.
:
:There should be a simple way to set the c/h/s in the installer.
:Otherwise it does not play nice in a multiboot scenario.
:
:Cheers,
:Rand
Well, my understanding is that tha partition table (the DOS parition
table) stores linear block values in addition to CHS values. If you
tell the BIOS that the disk is in LBS or LARGE mode, the BIOS should
use the linear block values. CHS values are undependable no matter what
you do. There is simply no proper way to set them that works with
all BIOSes.
-Matt
Matthew Dillon
<dillon at backplane.com>
This BIOS doesn't seem to have any options, and at any rate I'm already
running 7 other OS on the box without problems until now. The drives are
much larger than the old limits so the BIOS and other kernels are
clearly using large drive mappings sucessfully here.
The c/h/s values can be undependable in the abstract; they just have to
work with the one BIOS that the partition table is used by. If I have x
bytes to map and I arbitrarily decide that I'll call a cylinder 8225280
bytes, and that there are 255 tracks in a cylinder, and 63 sectors in a
track, then those c/h/s values tell me exactly where I am on the drive.
LBA is just another way to express the same mapping. It doesn't matter
what c/h/s I use as long as everybody who references the drive uses the
same values.
Rand
More information about the Bugs
mailing list