Linux systems live in a world that could potentially include any of tens of thousands of different pieces of computer hardware, and must adapt to whatever hardware is present in the machine on which it's running. Learn how to build a new kernel configuration to increase system efficiency and add support for new devices.

This chapter is from the book

This chapter is from the book

Kernel adaptation

Linux systems live in a world that could potentially include any of tens of
thousands of different pieces of computer hardware. The kernel must adapt to
whatever hardware is present in the machine on which it's running.

A kernel can learn about the system's hardware in a variety of ways. The
most basic is for you to provide the kernel with explicit information about the
hardware it should expect to find (or pretend not to find, as the case may be).
Some kernels can also prospect for devices on their own, either at boot time or
dynamically once the system is running.

On the PC platform, where Linux is popular, the challenge of creating an
accurate inventory of the system's hardware is particularly difficult (and
sometimes impossible). PC hardware has followed an evolutionary path not unlike
our own, in which early protozoa have now given rise to everything from dingos
to killer bees. This diversity is compounded by the fact that PC manufacturers
usually don't give you much technical information about the systems they
sell, so you must often take your system apart and visually inspect the pieces
to answer questions such as "What chipset does my Ethernet card
use?"

Most modern Linux systems survive on a hybrid diet of static and dynamic
kernel components, with the mix between the two being dictated primarily by the
limitations of PC hardware. It's likely that at some point during your
system administration career you'll need to provide a helping hand in the
form of building a new kernel configuration.