Difference between revisions of "Kernel module"
Gadget3000 (talk | contribs) m (→Using files in {{Filename|/etc/modprobe.d/}}) |
Gadget3000 (talk | contribs) |
||
Line 48: | Line 48: | ||
==Options== | ==Options== | ||
− | To pass a parameter to a kernel module | + | To pass a parameter to a kernel module you can use a modprobe conf file or use the kernel command line. |
===Using files in {{Filename|/etc/modprobe.d/}}=== | ===Using files in {{Filename|/etc/modprobe.d/}}=== | ||
Line 56: | Line 56: | ||
{{File|name=/etc/modprobe.d/thinkfan.conf|content=# On thinkpads, this lets the thinkfan daemon control fan speed | {{File|name=/etc/modprobe.d/thinkfan.conf|content=# On thinkpads, this lets the thinkfan daemon control fan speed | ||
options thinkpad_acpi fan_control=1}} | options thinkpad_acpi fan_control=1}} | ||
+ | |||
+ | ===Using kernel command line=== | ||
+ | If the module is built into the kernel you can also pass options to the module using the kernel command line (e.g. in [[GRUB]], [[LILO]] or [[Syslinux]]) using the following syntax: | ||
+ | modname.parametername=parametercontents | ||
+ | for example: | ||
+ | thinkpad_acpi.fan_control=1 | ||
==Aliasing== | ==Aliasing== |
Revision as of 21:06, 2 July 2011
This article covers the various methods for operating with kernel modules.
Contents
Overview
For a module to be recognized as such, it has to be compiled as a module in the kernel configuration (the line related to the module will therefore display the letter M).
Modules are stored in Template:Filename (use the command Template:Codeline to print your current kernel release).
The Template:Codeline command handles the addition and removal of modules from the Linux kernel.
The Template:Filename directory can be used to pass module settings to udev, which will use Template:Codeline to manage the loading of the modules during system boot. You can use configuration files with any name in the directory, given that they end with the Template:Filename extension. It is not recommended to use the Template:Filename file, since it will be likely deprecated in the future (see Template:Codeline).
Loading
To manually load (or add) a module, run:
# modprobe module_name
For informations on loading modules automatically at system boot, see rc.conf.
Removal
Occasionally you could need to remove (or unload) a module; in this case use the following command:
# modprobe -r module_name
Or, alternatively:
# rmmod module_name
Configuration
If you want to display the comprehensive configuration of all the modules you can use the command:
$ modprobe -c
Since the output of that command will probably turn out to be very long, you should better page it with:
$ modprobe -c | more
To display the configuration of a particular module, use:
$ modprobe -c | grep module_name
Options
To pass a parameter to a kernel module you can use a modprobe conf file or use the kernel command line.
Using files in Template:Filename
To pass options to a module using modprobe config files, a .conf file with any name (you can even use modprobe.conf) needs to be placed in /etc/modprobe.d/ with this syntax: Template:File for example: Template:File
Using kernel command line
If the module is built into the kernel you can also pass options to the module using the kernel command line (e.g. in GRUB, LILO or Syslinux) using the following syntax:
modname.parametername=parametercontents
for example:
thinkpad_acpi.fan_control=1
Aliasing
Blacklisting
Blacklisting, when referring to Kernel modules, is a mechanism to prevent the kernel module from loading. This could be useful if for example the associated hardware is not required to be used, or if loading that module causes problems: for instance there may be two kernel modules that try to control the same piece of hardware, and loading them together would result in a conflict.
Some modules are loaded as part of the initramfs. Template:Codeline will print out all autodetected modules: to prevent initramfs from loading some of those modules, blacklist them in Template:Filename. Running Template:Codeline will list all modules pulled in by the various hooks (e.g. filesystem hook, SCSI hook, etc.). Remember to rebuild initramfs once you have blacklisted the modules.
mkinitcpio -M | sed 1d | sort -u
Using files in Template:Filename
Create a Template:Filename file inside Template:Filename and append a line for each module you want to blacklist, using the Template:Codeline keyword. If for example you want to prevent the Template:Codeline module from loading:
However, there is a workaround for this behaviour; the Template:Codeline command instructs modprobe to run a custom command instead of inserting the module in the kernel as normal, so you can force the module to always fail loading with:
This will effectively "blacklist" that module and any other that depends on it.Using kernel command line
You can also blacklist modules on the kernel command line (e.g. in GRUB, LILO or Syslinux) using the following syntax:
modprobe.blacklist=modname1,modname2,modname3
Alternatively:
modname.disable=1
Examples using GRUB
Dependencies
The following commands can help determine the dependencies of a module from the module itself.
- Format the contents of Template:Filename and show what kernel modules are currently loaded:
$ lsmod
- Use Template:Codeline to show information about Template:Codeline:
$ modinfo MODULE_1
- Use Template:Codeline to show information about Template:Codeline (including aliases and install commands):
$ modprobe --show-depends MODULE_2