% Linux Installation and Getting Started    -*- TeX -*-
% hd.tex
% Copyright (c) 1992-1994 by Matt Welsh <mdw@sunsite.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".

\subsubsection{Problems recognizing hard drive or controller}

\index{hardware!problems!hard drive|(}

When Linux boots, you should see a series of messages on your screen such
as: 
\begin{tscreen}
Console: colour EGA+ 80x25, 8 virtual consoles \\
Serial driver version 3.96 with no serial options enabled \\
tty00 at 0x03f8 (irq = 4) is a 16450 \\
tty03 at 0x02e8 (irq = 3) is a 16550A \\
lp\_init: lp1 exists (0), using polling driver \\
\ldots
\end{tscreen}
Here, the kernel is detecting the various hardware devices present on your
system. At some point, you should see the line
\begin{tscreen}
Partition check:
\end{tscreen}
followed by a list of recognized partitions, for example:
\begin{tscreen}
Partition check: \\
\ \ hda: hda1 hda2 \\
\ \ hdb: hdb1 hdb2 hdb3
\end{tscreen}
If, for some reason, your drives or partitions are not recognized, then
you will not be able to access them in any way. 

There are several things that can cause this to happen:
\begin{itemize}
\item {\bf Hard drive or controller not supported.} If you are using a
hard drive controller (IDE, SCSI, or otherwise) that is not supported by 
Linux, the kernel will not recognize your partitions at boot time. 
\index{hard drive!problems}

\item {\bf Drive or controller improperly configured.}
Even if your controller is supported by Linux, it may not be configured 
correctly. (This is particularly a problem for SCSI controllers; most 
non-SCSI controllers should work fine without any additional configuration). 

Refer to the documentation for your hard drive and/or controller for 
information on solving these kinds of problems. In particular, many hard
drives will need to have a jumper set if they are to be used as a ``slave''
drive (for example, as the second hard drive). The acid test for this
kind of condition is to boot up MS-DOS, or some other operating system,
known to work with your drive and controller. If you can access the drive
and controller from another operating system, then it is not a problem with
your hardware configuration. 

See Section~\ref{sec-install-probs-hardware-conflicts}, above, for
information on resolving possible device conflicts, and 
Section~\ref{sec-install-probs-hardware-scsi}, below, for information on
configuring SCSI devices.

\item {\bf Controller properly configured, but not detected.}
Some BIOS-less SCSI controllers require the user to specify information about 
the controller at boot time. 
Section~\ref{sec-install-probs-hardware-scsi}, below, describes how to 
force hardware detection for these controllers.

\item {\bf Hard drive geometry not recognized.} Some systems, such as
the IBM PS/ValuePoint, do not store hard drive geometry information in 
the CMOS memory, where Linux expects to find it. Also, certain SCSI
controllers need to be told where to find drive geometry in order for
Linux to recognize the layout of your drive.

Most distributions provide a bootup option to specify the 
drive geometry. In general, when booting the installation
media, you can specify the drive geometry at the LILO boot prompt with
a command such as:
\begin{tscreen}
boot: {\em linux hd=\cparam{cylinders},\cparam{heads},\cparam{sectors}}
\end{tscreen}
where \cparam{cylinders}, \cparam{heads}, and \cparam{sectors} correspond
to the number of cylinders, heads, and sectors per track for your hard
drive. 

After installing the Linux software, you will be able to install LILO, 
allowing you to boot from the hard drive. At that time, you can specify the
drive geometry to the LILO installation procedure, making it unnecessary to
enter the drive geometry each time you boot. See Chapter~\ref{chap-sysadm-num}
for more about LILO.

\end{itemize}

\index{hardware!problems!hard drive|)}
