Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Nov 1996 07:52:00 +1100
From:      Bruce Evans <bde@zeta.org.au>
To:        fenner@parc.xerox.com, freebsd-current@freebsd.org, jkh@freebsd.org, phk@freebsd.org
Subject:   Re: 2.2-ALPHA install failure
Message-ID:  <199611232052.HAA04600@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>reasonably well, it won't reboot the new disk.  I used the "dangerously
>dedicated" mode, so that I wouldn't have to deal with partition tables
>and weird track values and stuff.  Woo, was I wrong.  The very first
>thing the install said to me was that the value of 4839 cylinders, 109
>sectors/track was ridiculous and that it was setting it to 64/32.  Er,
>ok, whatever.

4839 cylinders, 109 sectors/track and some small number of heads is
a normal semi-physical drive geometry (4839 is probably physical and
109 is probably the average).  64/32 is a normal BIOS geometry.  109
sectors/track can't be used because the BIOS and the DOSpartition table
only have 6 bits for the sector number.  64/32 should only be used for
drives smaller than 1GB since it causes the number of cylinders to
be > 1024 on larger drives.  Since most new drives are larger than
1GB, 64/32 should never be used :-).

>When I tried booting the drive as sd2, I would try either 2:sd(2,a)/kernel
>or just sd(2,a)/kernel, and get:
>
>dosdev = 82, biosdrive = 2, unit = 2, maj = 4
>Invalid format!

I'm not sure what would cause that.  Old versions of sysinstall had
a bug that caused the geometry to appear to be 1/1 to the kernel.
The ncr BIOS has more robust geometry detection than the kernel, and
I think the 1/1 geometry is invalid so it would be rejected by the
ncr BIOS and a default geometry that should work for (the dedicated
case only ) would be used.  Older versions of sysinstall did not
attempt to set the geometry by writing a dummy DOSpartition table,
and the kernel has kludges to make this case work - in particular it
gives no chance of getting a 1/1 geometry.

>Ok, so I unplugged the flaky drive from the SCSI bus, so that the new drive
>is now the second SCSI disk; maybe it was having trouble with loading stuff
>off of the third disk.  Now I get the dreaded:
>
>Error: C 2000>1023 (bios limit) error.  I booted the fixit floppy,

This might be caused by different handling of the partition table by a
different controller.

>checked the disklabel, and discovered that the installer had written
>a disklabel with 1 sector per track, 1 track per cylinder, 1 sector
>per cylinder, and 2000000+ cylinders.  I got the proper data for my disk

Sysinstall apparently still has the bug.  This is caused by making
the partition size and/or end one sector too large, so that the
ending head/sector numbers are 0/1 instead of max_head/max_cylinder.
This confuses the kernel since by definition a valid BSD slice
ends at a cylinder boundary to help the kernel detect the geometry.
This important requirement seems to be unknown to most install programs
and persons :-(.

The SCSI BIOS is unlikely to think that the geometry is 1/1.  It should
see that the partition table is invalid and switch to a default.  The
defaullt is unlikely to be what sysinstall used, but it should work
(in the dedicated case only) for an ncr BIOS.  Lesser BIOSes may always
default to a 64/32 geometry which won't work if any part of the kernel
is above 1GB.

>from the Seagate web page and edited it into the disklabel.  The bootstrap
>still complains that C 2000>1023, even though disklabel -r /dev/sd1c
>shows that the a partition goes from cylinder 0 to 150.

The geometry reported by disklabel is independent of both the physical
geometry and the BIOS geometry.  Install programs and persons should
make it identical with one of these geometries to minimise confusion.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199611232052.HAA04600>