"The kernel is the heart of the Linux operating system, managing
all system threads, processes, resources, and resource allocation.
Unlike most other operating systems, Linux enables users to
reconfigure the kernel, which is usually done to reduce its size
and add or deactivate support for specific devices or subsystems.
Reconfiguring the kernel to remove support for unused devices and
subsystems is quite common when developing embedded systems,
because a smaller kernel requires less memory, increasing the
resources available to your applications.
"Device drivers are the software interface between your hardware
and the Linux kernel. Device drivers are low-level,
hardware-specific software components that enable devices to
interact with more generic, higher-level application programming
interfaces (APIs). Providing support for a specific subsystem or
hardware interface, such as SCSI, USB, or PCMCIA, is very different
than providing support for every SCSI, USB, or PCMCIA device.
Testing every possible device that could be used over a specific
subsystem is an impossibility; new devices are being made available
every day. The kernel provides support for specific subsystems;
device drivers provide support for specific devices that use those
subsystems. Maintaining the separation of high-level APIs and
low-level device functionality makes it relatively fast and easy to
add support for new devices to existing systems by writing the
appropriate driver for a new device and making it available to the