MODULES.CONF (5)
configuration file for loading kernel modules
DESCRIPTION
The behaviour of
modprobe(8)
(and
depmod(8)
)
can be modified by the (optional) configuration file
/etc/modules.conf.
The configuration file consists of a set of lines.
All empty lines, and all text on a line after a '#', will be ignored.
Lines may be continued by ending the line with a '\\'.
The remaining lines should all conform to one of the following formats:
[add] above module module_list
alias alias_name real_name
[add] below module module_list
define VARIABLE WORD
depfile=A_PATH
else
elseif EXPRESSION
endif
if EXPRESSION
include PATH_TO_CONFIG_FILE
insmod_opt=GENERIC_OPTIONS_TO_INSMOD
install module command ...
keep
[add] options module MODULE_SPECIFIC_OPTIONS
path=A_PATH
path[TAG]=A_PATH
[add] probe name module_list
[add] probeall name module_list
post-install module command ...
post-remove module command ...
pre-install module command ...
pre-remove module command ...
remove module command ...
All arguments to a directive will be processed to handle
shell meta-characters,
which means that "shell tricks" like wild-cards
and commands enclosed in back-quotes can be used:
path[misc]=/lib/modules/1.1.5?/local
path[net]=/lib/modules/`uname -r`/net
Directives may be repeated multiple times.
Note that some directives can have an optional prefix:
add.
When this prefix is used, the new module_list will be
added
to the previous module_list instead of replacing it.
SEMANTICS
A_PATH
is the fully qualified path to the target.
It is possible to use shell meta-characters in
A_PATH
including command output, such as
\`uname -r\`
and
\`kernelversion\`.
These two commands are also understood internally in these utilities
as meaning the version number of the current kernel and the current
kernel version respectively (e.g.: 2.2.3 and 2.2).
WORD
is a sequence if non-white characters.
If ' " or ` is found in the string, all characters up to the
matching ' " or ` will also be included, even whitespace.
Every
WORD
will then be expanded w.r.t. meta-characters.
If the expanded result gives more than one word then only
the first word of the result will be used.
EXPRESSION below can be:
WORD compare_op WORD
where compare_op is one of ==, !=, <, <=, >= or >.
The string values of the WORDs are compared.
-n WORD compare_op WORD
where compare_op is one of ==, !=, <, <=, >= or >.
The numeric values of the WORDs are compared.
WORD
If the expansion of WORD fails, or if the
expansion is "0" (zero), "false" or "" (empty)
then the expansion has the value FALSE.
Otherwise the expansion has the value TRUE
-f FILENAME
Test if the file FILENAME exists.
-k
Test if "autoclean" is enabled (i.e. called from the kernel).
! EXPRESSION
A negated expression is also an expression.
SYNTAX
This is a description of the legal directives.
define VARIABLE WORD
Do a
putenv("VARIABLE=WORD").
Variables can be created and modified by this directive.
The variables will be available in the environment, which makes them
usable for all commands executed in the current session.
depfile=A_PATH
This is the path to the dependency file that will be created by
depmod
and used by
modprobe
to find the modules and their dependent modules.
Normally the default value should be used, see below.
if EXPRESSION
If the expression is evaluated to be
TRUE
then all directives up to the matching
else, elseif
or
endif
are processed. Otherwise they are ignored.
if
directives may be nested up to an internal maximum of 20.
Note: please avoid having any
path
directives conditionally processed.
Since
modprobe
has enough built-in "smarts", a conditionally processed
path
directive will gain you nothing but confusion. Really.
else
If the previous matching
if
or
elseif
directive evaluated its expression to be
FALSE
then the directives enclosed by the (optional)
else
directive and its matching
endif
directive will be processed.
elseif EXPRESSION
If the previous matching
if
or
elseif
directives evaluated their expression to be
FALSE
and if the expression for this directive evaluates to
TRUE
then the directives up to the next matching
elseif, else
or
endif
directive will be processed.
endif
This directive ends the chain of matching
if, elseif
or
else
directive(s) controlling the conditional processing of configuration
file directives.
if EXPRESSION
any config lines
elseif EXPRESSION
any config lines
else
any config lines
endif
The
else
and
elseif
directives are optional.
include PATH_TO_CONFIG_FILE
To handle different platforms or configurations with a
single configuration file can be quite complex.
With the use of the
include
directive, conditionally processed by
if
directives, this is now easier to handle.
insmod_opt=GENERIC_OPTIONS_TO_INSMOD
If insmod should need some special options, not specified elsewhere,
this directive makes it possible to add such an option,
to be used for every invocation.
The standard default options to insmod does normally not have to
be modified unless some special situation needs to be handled.
keep
If this word is found on a line
before
any lines that contain the
path
descriptions, the default set of paths will be saved, and thus added to.
Otherwise the normal behaviour is that the default set will be
replaced
by the set of paths in the configuration file.
path=A_PATH
path[TAG]=A_PATH
The
A_PATH
argument specifies an additional directory to search for modules.
The
path
directive can carry an optional tag.
This tells us a little more about the purpose of the modules in
this directory and allows some automated operations by
modprobe.
The tag is appended to the "path" keyword enclosed in square brackets.
If the tag is missing, the tag "misc" is assumed.
One very useful tag is
boot,
which can be used to mark all directories containing modules
that should be loaded at boot-time.
alias alias_name real_name
The "alias" directive can be used to give alias names to modules.
A line in /etc/modules.conf that looks like this:
alias iso9660 isofs
makes it possible to write
modprobe iso9660
although there is no object file for such a module available.
Note that the line:
alias some_module off
will make modprobe ignore requests to load that module.
Another special alias is:
alias some_module null
which will make requests for some_module always succeed, but no
module will actually be installed.
This can be used as a base for stacks created via the
above
and
below
directives.
It is possible to have an unlimited number of levels of
alias
directives, since all aliases will be recursively expanded in
order to find the physical module actually referred to.
7
It is legal for an alias to map module A to module B and for module
A to exist at the same time but this construct is ambiguous and is
not
recommended. For historical reasons, the kernel sound system has a
module called sound.o but the sound developers also want an alias from
sound to the module for the user's sound card, e.g. "alias\ sound\ sb".
In an attempt to support this requirement but still maintain the
defined behaviour where options can be applied to aliases, modprobe
bypasses alias expansion when processing a module name if the name was
obtained via modules.dep, otherwise aliases are expanded. This is not
guaranteed to give the expected behaviour on all combinations of
aliases and real modules, you should avoid using an alias with the same
name as a real module.
[add] probe name module_list
[add] probeall name module_list
These directives can only be used when
name
is the name of the module requested on the command line of
modprobe.
The effect is that when a request for
name
is made, the modules in module_list will be tried, in the specified order.
The difference between the directives is that
probe
will continue until the first successful module insertion, while
probeall
will continue until the end of the list.
The exit status reflects whether any module has been successfully
installed or not.
The optional
add
prefix adds the new list to the previous list instead of replacing it.
[add] options [-k] module [MODULE_SPECIFIC_OPTIONS]
All module names, including aliased names, can have their own
options
directives.
Options specified for an alias have higher priority than the options
specified for more "basic" names. This rule is used to resolve
conflicting
options
directives.
Options given on the command line have the highest priority.
If there is
-k
before the module name, then the module won't be autocleaned even if
modprobe
has been invoked with the
-k
autoclean option.
The optional
add
prefix adds the new list to the previous list instead of replacing it.
[add] above module module_list
This directive makes it possible for one module to "pull in"
another set of modules on top of itself in a module stack,
as seen in the output of the
lsmod(8)
command.
The
above
directive is useful for those circumstances when the dependencies
are more complex than what can be described in the
modules.dep
dependency file.
This is an optimized case of the
post-install
and
pre-remove
directives.
Note that failure of installing the module will not influence the
exit status of
modprobe.
The optional
add
prefix adds the new list to the previous list instead of replacing it.
[add] below module module_list
This directive makes it possible for one module to "push"
another set of modules below itself in a module stack,
as seen in the output of the
lsmod(8)
command.
The
below
directive is useful for those circumstances when the dependencies
are more complex than what can be described in the
modules.dep
dependency file.
This is an optimized case of the
pre-install
and
post-remove
directives.
Note that failure of installing the module will not influence the
exit status of
modprobe.
The optional
add
prefix adds the new list to the previous list instead of replacing it.
The following directives are useful for (optionally) executing specific
commands when loading and unloading a module. Note that even aliased
module names can have these directives,
which will be executed in the proper order together with any
directives for the unaliased module name.
pre-install module command
Execute
command
before installing the specified module.
See the
below
directive as well.
install module command
Execute
command
instead of the default
insmod
when installing the specified module.
post-install module command
Execute
command
after installing the specified module.
See the
above
directive as well.
pre-remove module command
Execute
command
before removing the specified module.
See the
above
directive as well.
remove module command
Execute
command
instead of the default (built-in)
rmmod
when removing the specified module.
post-remove module command
Execute
command
after removing the specified module.
See the
below
directive as well.
DEFAULT CONFIGURATION
If the configuration file '/etc/modules.conf' is missing,
or if any directive is not overridden,
the following defaults are assumed:
depfile=/lib/modules/`uname -r`/modules.dep
path[boot]=/lib/modules/boot
path[fs]=/lib/modules/`uname -r`/fs
path[net]=/lib/modules/`uname -r`/net
path[scsi]=/lib/modules/`uname -r`/scsi
path[block]=/lib/modules/`uname -r`/block
path[cdrom]=/lib/modules/`uname -r`/cdrom
path[ipv4]=/lib/modules/`uname -r`/ipv4
path[ipv6]=/lib/modules/`uname -r`/ipv6
path[sound]=/lib/modules/`uname -r`/sound
path[fc4]=/lib/modules/`uname -r`/fc4
path[video]=/lib/modules/`uname -r`/video
path[misc]=/lib/modules/`uname -r`/misc
path[pcmcia]=/lib/modules/`uname -r`/pcmcia
path[atm]=/lib/modules/`uname -r`/atm
path[usb]=/lib/modules/`uname -r`/usb
path[fs]=/lib/modules/`kernelversion`/fs
path[net]=/lib/modules/`kernelversion`/net
path[scsi]=/lib/modules/`kernelversion`/scsi
path[block]=/lib/modules/`kernelversion`/block
path[cdrom]=/lib/modules/`kernelversion`/cdrom
path[ipv4]=/lib/modules/`kernelversion`/ipv4
path[ipv6]=/lib/modules/`kernelversion`/ipv6
path[sound]=/lib/modules/`kernelversion`/sound
path[fc4]=/lib/modules/`kernelversion`/fc4
path[video]=/lib/modules/`kernelversion`/video
path[misc]=/lib/modules/`kernelversion`/misc
path[pcmcia]=/lib/modules/`kernelversion`/pcmcia
path[atm]=/lib/modules/`kernelversion`/atm
path[usb]=/lib/modules/`kernelversion`/usb
path[fs]=/lib/modules/default/fs
path[net]=/lib/modules/default/net
path[scsi]=/lib/modules/default/scsi
path[block]=/lib/modules/default/block
path[cdrom]=/lib/modules/default/cdrom
path[ipv4]=/lib/modules/default/ipv4
path[ipv6]=/lib/modules/default/ipv6
path[sound]=/lib/modules/default/sound
path[fc4]=/lib/modules/default/fc4
path[video]=/lib/modules/default/video
path[misc]=/lib/modules/default/misc
path[pcmcia]=/lib/modules/default/pcmcia
path[atm]=/lib/modules/default/atm
path[usb]=/lib/modules/default/usb
path[fs]=/lib/modules/fs
path[net]=/lib/modules/net
path[scsi]=/lib/modules/scsi
path[block]=/lib/modules/block
path[cdrom]=/lib/modules/cdrom
path[ipv4]=/lib/modules/ipv4
path[ipv6]=/lib/modules/ipv6
path[sound]=/lib/modules/sound
path[fc4]=/lib/modules/fc4
path[video]=/lib/modules/video
path[misc]=/lib/modules/misc
path[pcmcia]=/lib/modules/pcmcia
path[atm]=/lib/modules/atm
path[usb]=/lib/modules/usb
There are also a set of default
alias
and
options
directives.
Since this set is continously extended, no list will be given here.
The (current) default set can be viewed by using the
modprobe -c
command with an empty
/etc/modules.conf
file.
All
options
directives specify the options needed for
a module, as in:
modprobe de620 bnc=1
These options will be overridden by any options given
in the
/etc/modules.conf
file, and on the
modprobe
command line.
Remember that it is possible to have an
options
directive for aliased module names as well
as for the non-aliased name.
This is useful for e.g. the dummy module:
alias dummy0 dummy
options dummy0 -o dummy0
ALTERNATIVE CONFIGURATION FILE
For historical reasons, if /etc/modules.conf does not exist, modutils
will read /etc/conf.modules instead.
However the use of this historical name is depreciated and it should be
replaced with /etc/modules.conf.
SEE ALSO
AUTHOR
Bjorn Ekwall <bj0rn@blox.se>
Keith Owens <kaos@ocs.com.au>
|