*BSD News Article 13161


Return to BSD News archive

Newsgroups: comp.os.386bsd.questions
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!saimiri.primate.wisc.edu!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!destroyer!cs.ubc.ca!van-bc!inde!newshost!gday
From: gday@ignatz.inde.bc.ca (Gordon Day)
Subject: Re: Ack!  Ick!  Ook!  Argh! (IDE disklabel problems revisited)
In-Reply-To: jdg00@ccc.amdahl.com's message of 17 Mar 93 22:08:21 GMT
Message-ID: <GDAY.93Mar19161328@ignatz.inde.bc.ca>
Sender: news@inde.bc.ca
Organization: INDE Electronics, Inc.
References: <fcpA02Mq3aKZ01@JUTS.ccc.amdahl.com>
Date: Sat, 20 Mar 1993 00:13:28 GMT
Lines: 64

Josh> Using disklabel from the fixit diskette, I am able to determine that a
Josh> label sort-of-exists using "disklabel -r /dev/rwd0", with plenty of
Josh> incorrect entries.  The entries seemed just fine with the entire-disk
Josh> instead of the partitioned method.  My disk is a PC/AT "Type 37" 120MB
Josh> drive.  

The problem is that your disk drive is pretending to be something that
it isn't.  As MS-DOG can't access more than 1024 cylinders, drives
will pretend to have more heads and fewer cylinders than they really
do to allow MS-DOG to access them.  For example (on a 100M IDE drive I
use):

Translated values (for MS-DOG): 732 cyl, 8 heads
Untranslated (real) values: 1464 cyl, 4 heads

Josh> Looking at the label under "entire-disk" format, I see that it's an
Josh> ESDI/IDE drive.  It has 3 "partitions" defined, the first is a 4.2BSD,
Josh> the others are unused.  And, it boots fine.  Looking at the label
Josh> when I'm running partitioned, I see that the number of cylinders is
Josh> incorrect, rpm and interleave are 0, and there is one partition unused.

What happens is that the boot blocks you install on the hard disk load
properly (via the program in the Master Boot Record loaded by BIOS)
using translated parms) but when they look for the 386BSD disklabel on
the disk, they can't find it (using untranslated parms).  The thing to
do is to look at those "incorrect" number of cylinders and heads in
the disklabel from the correct install of 386BSD on the whole disk,
and use those to set you CMOS disk values (any reasonable CMOS lets
you use type 47 to set the disk parms to anything you want).

Once you have done this, set up the partition tables again.  Don't
worry if the program you use to set the table up won't let you use >
1024 cylinders -- you just have to make sure that the MS-DOG partition
is with the first 1024 cyl (I started mine at 0) and that the start of
the 386BSD partition is within that range as well (so any DOS program
you use to set the boot partition can "see" the start of the BSD
partition).

Reinstall MS-DOG, and 386BSD (using _untranslated_ parms in the
disklabel), and you're away!

Having read all this, I believe that a set of boot/fixit disks do
exist with a new set of boot blocks (written by Julian E.) which use
the regular old translated parms all the way through (so you don't
have to fiddle with the CMOS settings).  I no do not know where these
may exist.

Ta,

Gordon.

P.S.: Remember to set your partition c to the entire 386BSD portion
      of the disk and partition d to the entire disk in the disklabel.
        .
        .
        .
        :pc#163520:oc#41160: \
        :pd#204680:od#0: \
        .
        .

_______________________________________________________________________________
gordon day, inde electronics, +1-604-430-1446.