[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ next ]


Debian Linux Kernel Handbook
Chapter 6 - Managing the kernel modules


Linux device drivers come in the form of kernel modules - object files which may be loaded into the running kernel to extend its functionality. The list of currently loaded kernel modules can be obtained using the lsmod command, modules may be loaded using modprobe, and removed using modprobe -r. The depmod command may be used to regenerate the list of available modules (after installation of the new modules, for example), even though it is pretty unlikely that you will ever need to invoke it by hand.

Normally, the devices are detected and neccessary kernel modules are loaded by udev during boot time. Occasionally, one may need finer control over the loading of kernel modules, for example to pass the additional parameters to the module, force loading of some modules on startup, or prevent certain module(s) from being loaded.

If some modules are not loaded automatically by udev, but you would like them to be loaded during boot, it is possible to force it by listing the names of the modules in /etc/modules. This will be scanned for the names of the modules (one name per line), which will then be loaded using modprobe. You can also specify the arguments for the modules. For example, a typical /etc/modules might look like that

     loop max_int=32
     sbp2

To find out what parameters are accepted by a given module, you can use the modinfo command, for example:

     # modinfo loop
     filename:       /lib/modules/3.2.0-2-686-pae/kernel/drivers/block/loop.ko
     alias:          devname:loop-control
     alias:          char-major-10-237
     alias:          block-major-7-*
     license:        GPL
     depends:        
     intree:         Y
     vermagic:       3.2.0-2-686-pae SMP mod_unload modversions 686
     parm:           max_loop:Maximum number of loop devices (int)
     parm:           max_part:Maximum number of partitions per loop device (int)

To add custom arguments to the modules loaded by udev early in the boot process, you need to create a custom configuration file for modprobe, which udev uses to load the modules. For example, to pass an atapi_enabled=1 argument to the libata kernel module, create /etc/modprobe.d/local file with a following line:

     options libata atapi_enabled=1

You can choose arbitrary names for the configuration files in /etc/modprobe.d and put multiple options lines in the same file.

Sometimes two different modules claim support for the same device, usually because two slightly different versions of the device exist, requiring different kernel modules to operate. In such situation udev loads both kernel modules, with unpredictable results. To avoid this problem, you can prevent any module (let's say, tulip) from loading by creating an arbitrarily named file, containing a line

     blacklist tulip

in /etc/modprobe.d directory. See the modprobe manual page (man modprobe) for much more information on configuring and using modprobe.


[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ next ]


Debian Linux Kernel Handbook

version 1.0.16, Sat 14 Dec 16:00:39 GMT 2013

The Debian Kernel Handbook Project