Seagate HD not detected by FreeBSD

Ted Mittelstaedt tedm at toybox.placo.com
Sun May 29 11:09:37 PDT 2005



> -----Original Message-----
> From: owner-freebsd-questions at freebsd.org
> [mailto:owner-freebsd-questions at freebsd.org]On Behalf Of Ulf Magnusson
> Sent: Sunday, May 29, 2005 3:58 AM
> To: Ted Mittelstaedt
> Cc: freebsd-questions at freebsd.org
> Subject: Re: RE: Seagate HD not detected by FreeBSD
>
>
>
>
> ----- Original Message -----
> From: Ted Mittelstaedt <tedm at toybox.placo.com>
> Date: Sunday, May 29, 2005 9:05 am
> Subject: RE: Seagate HD not detected by FreeBSD
> >
> >
> > > -----Original Message-----
> > > From: owner-freebsd-questions at freebsd.org
> > > [mailto:owner-freebsd-questions at freebsd.org]On Behalf Of Ulf
> > Magnusson> Sent: Saturday, May 28, 2005 4:48 PM
> > > To: freebsd-questions at freebsd.org
> > > Subject: Seagate HD not detected by FreeBSD
> > >
> > >
> > > I'm trying to add a 120 GiB Seagate Barracuda (ST3120022A) HD. I've
> > > attached it as the sole device on IDE cable 2, jumpering it as a
> > slave> device.
> >
> > Wrong.  Each IDE cable can have 2 devices a master and a
> slave.  So if
> > you
> > have 2 IDE controllers you can have master, slave, master, slave
> > for a
> > total
> > of 4 drives.
> >
> > It is not master on ide cable 1, slave on ide cable 2.
> >
> > >It is correctly detected by the BIOS as the Secondary Slave.
> >
> > Meaningless since BIOS routines do a lot of non-standard things and
> > arenot used for disk access in a protected mode OS.
> >
> > Ted
>
>
> That fixed it! Thanks, I learned something today.

Great!

> Wouldn't it be possible to have FreeBSD detect this (mis-)configuration
> and warn the user, or would that have to be done at the BIOS level?

Quite possible, you might submit a bug report on this.  Of course keep in
mind that most people installing for the first time do not see the DMESG
output since it quickly gets coverd by the sysinstall installation
screen.
Thus for an error like this - which will stop an install dead in it's
tracks -
it is only worth putting in the detection logic if you pass the errors
all
the way back through to sysinstall.

So, for this one feature your asking for a lot of work to be done - and
it
is a feature only useful for people who never read the disk drive setup
phamphlet that came with their new disk drive they bought, right? ;-)
I doubt the developers are in this group of people which is probably why
it's not in there. ;-)

Also, if they can install FreeBSD then even though the setup might be
wrong, they
have a running system at that point, and who cares then?

One other thing you might consider, there's some very good disk drive/ide
diagnostic software programs out there, one in particular is
http://mhddsoftware.com/ and I believe a few of these will check for
proper cable
setup - you should get in the habit of always runing one of these first
on any system before you set it up - unless such system (like a
commercial server like a HP or Dell) comes
with it's own set of diagnostics.  If you had done this you would
probably have
corrected the problem before installing.

> Oh, and with old BIOS:es that do not allow you to select which drive to
> boot from, if both the primary and the secondary master are bootable,
> will the primary master always be prefered?
>

Yes.  The original IDE standard was derived from the old MFM/RLL disk
drive controllers.
These controllers usually grabbed a chunk of ROM memory - c800-c9ff very
common -
and set themselves up on port 1F0, IRQ 14.  They only supported 2 disk
drives, primary
and slave, and the IBM PC convention hard-coded the primary as boot disk,
drive C:

Later on when the 286 and AT bus came out and people wanted to run more
than 2
MFM drives, IBM defined port 170 IRQ 15 for a second MFM/FLL controller,
and the
convention remained the same for the boot drive.  You would jumper the
second controller
to use ROM memory ca00-cbff or some such.

At this time all disk access through MS-DOS was through the rom routines
in the
controllers.

When Microsoft came out with Windows they wanted control of the disk
access for
the swapfile for decent performance so they wrote a disk driver that
suplanted the
controllers BIOS.

When IDE came out (and we are talking the first IDE disk drives were 20
and 40
megabyte drives, and I mean megabyte, not gigabyte) they wanted to take
advantage
of the work done on the disk driver for Windows by Microsoft, so they
made the
IDE register, port and IRQ settings and interface identical.  IBM also
took the
disk code off the controller card and put it into main system BIOS.

At that time with the IBM PC and AT, the convention IBM used had the same
strength
as a standard today.

There's been a gradual migration of these IBM PC conventions into various
standards
over the years.  One of the problems is that at any given time in
history, how
an IDE disk or IDE device worked on the IDE bus might have been governed
by a PC convention, or an ATA standard.  And many of the conventions used
are
stupid in modern hardware so they never made it into a standard.  The
defined
boot device is one of these conventions so it's not part of the standard
except in
a very vague way, so it has pretty much remained a convention,
implemented only
by motherboard manufacturers.

Worst of all is that when things were convention, manufacturers felt they
had
wide lattitude to violate convention for their own proprietary
extensions, and
many manufacturers hoped their own proprietary modifications would be so
desired by the market that they would make it into the standard that was
being
created, thus earning them millions in licensing patented modifications.

Ted



More information about the freebsd-questions mailing list