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 ||