Loading Kernel Modules

The Linux kernel has a modular design. At boot time, only a minimal resident kernel is loaded into memory. Thereafter, whenever a user requests a feature that is not present in the resident kernel, a kernel module is dynamically loaded into memory. After a specified period of inactivity, the module may be removed from memory.

The mechanism that supports dynamic loading of modules is a kernel thread called kmod. Modules are not loaded unless they are needed. When the kernel requests a module, the module is loaded along with all its module dependencies.

When you install Red Hat Linux, the hardware on your system is probed and you provide information about how the system will be typically used and which programs should be loaded. Based on this probing and the information you provide, the installation program decides which features to compile into the resident kernel and which to put in loadable modules. The installation program sets up the dynamic loading mechanism to work transparently. If you build your own custom kernel, you can make all of these decisions for yourself.

If you add new hardware after installation and the hardware requires a kernel module, you need to set up the dynamic loading mechanism. Kudzu usually detects new hardware. You can also add the new driver by editing the module configuration file, /etc/modules.conf.

For example, if your system included a model SMC EtherPower 10 PCI network adapter at the time of installation, the module configuration file will contain this following line:

alias eth0 tulip

After installation, if you install a second identical network adapter to your system, add the following line to /etc/modules.conf:

alias eth1 tulip

See the Official Red Hat Linux Reference Guide for an alphabetical list of kernel modules and the hardware supported by the modules.