Understanding hardware support

Saqib Shaikh S.Shaikh at sussex.ac.uk
Tue Apr 27 16:30:56 EDT 2004


Hi Debee

I'm going to take a big step back and try and explain the terms, which will
probably help you understand what all the things you've been reading about
mean.

But first, before I start, let me point you at the howtos and guides at
www.tldp.org.  But back to this hardware issue.  I'm sure you already know
that UnderDOS you had to install drivers for everything you owned, then
under Windows Microsoft bundle more and more of the drivers so sometimes you
won't even need third party drivers.  This is a gross simplification, but it
is enough to understand the point.

Now Linux is a kernel - equivalent to command.com under DOS.  The kernel
deals with all the hardware in the system and you can imagine the kernel as
everything between bash and hardware; it provides scheduling facilities and
memory management as well as hardware support.  The Linux kernel supports a
whole load of hardware.

If you recompile your own kernel you'll have to answer a whole load of
questions about whether you want x included properly in the kernel, excluded
from the kernel, or made as a module that can be loaded when required.  The
advantage of modules is that they can be loaded and unloaded at will, but if
something is built into the kernel proper it stays.  Also, it is obviously
more efficient to have most common things that you use most of the time in
the kernel proper.  The other side of the coin is that there is a limit how
big your kernel can be so you may like to leave certain things as modules,
as modules don't effect the size of the kernel.  For example, I like to have
Parallel port support built into the kernel as I often use a parallel port,
but have support for the NTFS filesystem built as a module so that this
module is only automatically loaded when I use it.  I say "no" to multi
processor support so it is not in my kernel at all.

Ok.  Now we know that a certain amount of hardware support is built into
your own kernel, and some is built in in the form of loadable modules.  What
most common linux distributions like Redhat, SuSE and Mandrake do is have a
very generic set of drivers built into a generic kernel, and then have
things like sound card and network drivers left as modules.  During
installation, or maybe during boot-up, a program will scan for physical
hardware devices by sending signals down the PCI bus for example and seeing
what responds on the other end.  ~Depending on what it found it will cause
only those modules to be loaded, so suddenly you have all your hardware
supported.

Finally, I am not sure about this last method, but you can also specify
which modules are loaded by editing the /etc/modules.conf file.  I think,
though am not sure, that when you recompile your kernel all modules you did
not build are commented out; uncommenting a module line will cause that
module to be added to the system.  Again, I've never done this.

I hope all this starts to clarify your questions, and I urge you to read the
linux documentation project's stuff - it is very useful.  And yes, while you
could use a convenient Linux distro, I think running zipslack on a libretto
is a fantastic (but certainly not the easiest) way to learn.  The best way
to learn is to solve problems, so you wouldn't learn much if everything
worked flawlessly!

Saqib






More information about the Speakup mailing list