Linux Device Drivers Demystified
Introduction

James Andrews
Thursday, September 23, 1999 12:49:47 PM
People new to Linux often hear that it has
excellent support for all kinds of cards and
that the device drivers are stable and fast.
Sometimes, though, setting up devices
under Linux is often not all plug-and-play.
Below we try to demystify Linux
device drivers, with the aim of smoothing device
selection during installs.
Everything is a file
Skip this section if you aren't interested
in the inside technical details.
Many modern operating systems have a method
for installing special files to make hardware
work. On the Apple Mac, for instance, the drivers
for the hardware devices are usually special
files that go in the System Extensions folder.
Linux also has special files that it uses to
control the hardware.
Linux device drivers work through
special kernel code that directly
accesses the hardware. To make the services
that the card or other device offers available
to normal user programs, the kernel uses the
special files in /dev
One end of the file in /dev
can be opened normally and the other end is
attached to the kernel. That is of course an
oversimplification, but I think you get the
general idea: hardware, kernel, special file,
user program and the same path back from user
program to hardware. There are two forms of
the kernel portion of this equation: compiled-in
drivers that are coded in permanently when the
kernel is built, and modules.
Next: All About Modules »