*BSD News Article 2718


Return to BSD News archive

Path: sserve!manuel!munnari.oz.au!uunet!mcsun!sunic!dkuug!flshub!phk
From: phk@data.fls.dk (Poul-Henning Kamp)
Newsgroups: comp.unix.bsd
Subject: 386BSD 0.1, disklabel problem isolated !
Message-ID: <1992Jul26.080147.4506@data.fls.dk>
Date: 26 Jul 92 08:01:47 GMT
Organization: FLS Data A/S, Valby, Copenhagen, Denmark.
Lines: 43

I have a Western Digital WDC 4200 "Piranha" disk, it's an IDE of 202 Mb.
The real physical layout is 1263 cyl, 8 heads, 41 sectors.  But to keep
MS/DOS happy the drive reports 967 cyl, 12 heads 35 sect.  If I set the
BIOS to the real values 1263,8,41 and create a 15 Mb DOS partition,
install 386BSD 0.1 from the dist.fs things are OK until I try to boot the
386BSD from the disk.

It seems from the debug that the disklabel IS found, but then the drive 
is probed and the cylinder count is clipped to 967, though the heads and the
sect counts is left untouched.

Since a lot of this translation stuff is going on, I think it is important
to get this handled right:

    1) Use BIOS-values and boot-block to find disklabel.

    2) Use values in disklabel, unless the drive tells us otherwise:

	if(drive.sect == label.sect && drive.head == label.head)
	    label.cyl = drive.cyl;

In my experience this will solve the most widespread problems with
ESDI/IDE drives:

    1) drives simply not matched by the BIOS, in this case the disklabel
       can containe the right values, supported by the drives own idea.

    2) drives crippled by manufactures to match a "VENDOR_X"-67 Mb drive,
       even though the drive is 84 Mb, the right cylinder count can be picked
       up from the drive.

    3) cases like mine where even the bloddy drive is exposed to the famous
       MS-DOS brain-damage...

As soon as I can I'll produce a patch for this.

Don't forget to enjoy other aspects of life, even though you have got your
own unix box at home now !  :-)
-- 
phk@data.fls.dk		  || If you can't join 'em -- beat 'em !
Poul-Henning Kamp	  ||			the Danish foreign minister
FLS DATA A/S		  ||
Phone: (+45) 36 18 12 35  ||