[LBo] Linux Drivers

Brice Hunt shoalcreek5 at gmail.com
Mon Jan 22 09:56:59 CET 2007


Tech wrote:
> Way back when ......
>
> I installed RHx. Except for the usual Operator Errors, it went in
> fine. My installation learning curve was short and I was happy.
>
> Then RH changed its policy so I switched to FCx. Again, I had no real
> problems with installation or upgrading the the next version until FC6.
>
> I had to many problems with it (others had the same problems , so it
> was not me for once.)
>
> Waking up to the fact that FC was bleeding edge and an edge I do not
> want to be on, I decided to go to Centos.
>
> Well it seems that my local computer store is more advanced than
> Centos. Centos 4.4 does not like the SATA drive on my mb.
>
> I know I need to install the driver at installation time. That was the
> easy part. But...... what exactly is a driver in Linux or better yet
> what extensions do they use? I know I need SATA_NV. SATA_NV.c does not
> work. I haven't tried SATA_NV.ko. Will it work if I put it on a disk
> and specify it when asked at installation time?
>
> Is there a good simple drive explanation for Linux?
>
> Thanks.
If anyone notices errors in my explanation, please feel free to correct
them.  This is close to my strongest area of expertise, but I'm not
involved with kernel programming and I might not explain things quite right.

Any file ending in a ".c" is plain text source code for the "C"
language.  Such files have not been compiled into code that is native to
the CPU.  You could open them with your favorite text editor and read
the C source code; however, unless you've programmed in C or C++, you
probably wouldn't understand much of what it said.  On the other hand,
files ending in ".ko" are "kernel objects" which are, essentially,
loadable kernel modules.  These files have been compiled into code that
is native to the CPU.  In Linux, most hardware drivers that the kernel
needs to communicate with the hardware can either be compiled "within"
the kernel (given that the kernel source code and configuration allow
it) or they can be compiled "externally" and loaded as kernel modules at
runtime.  Many hardware drivers are compiled as kernel modules to be
loaded at runtime.  This saves on the amount of memory used by the
kernel and the rest of the OS as non-important drivers are not loaded
into memory.

In the case of Serial ATA, there are many chipsets on the market that
implement the SATA protocol.  Most of these chipsets behave differently
from each other.  To use an SATA drive in Linux, you need to load the
kernel module for your SATA chipset, if one exists.  To load extra
drivers during install depends on how your chosen distribution's
installer asks for extra drivers or kernel modules.  Some distributions
require you to type in a command line parameter during boot, others will
give you a chance to add modules in the install routine.  From your
post, it sounds like CentOS asks for additional modules during the
install routine.  If this is the case, you need to point it to the
sata_nv.ko file (if your installer uses Linux kernel 2.6.8 or later, it
should be included on the installation CD).  This should make it so that
you can install Linux onto your SATA hard drive.

Brice


More information about the QnA mailing list