depmod - handle dependency descriptions for loadable kernel modules
depmod [-aA] [-ehnqrsuvV] [-C configfile] [-F kernelsyms] [-b basedi-
depmod [-enqrsuv] [-F kernelsyms] module1.o module2.o ...
The depmod and modprobe utilities are intended to make a Linux modular
kernel manageable for all users, administrators and distribution maintainers.
Depmod creates a "Makefile"-like dependency file, based on the symbols
it finds in the set of modules mentioned on the command line or from
the directories specified in the configuration file. This dependency
file is later used by modprobe to automatically load the correct module
or stack of modules.
The normal use of depmod is to include the line
somewhere in the rc-files in /etc/rc.d, so that the correct module
dependencies will be available immediately after booting the system.
Note that the option -a is now optional. For boot-up purposes, the
option -q might be more appropriate since that makes depmod silent
about unresolved symbols.
It is also possible to create the dependency file immediately after
compiling a new kernel. If you do "depmod -a 2.2.99" when you have
compiled kernel 2.2.99 and its modules the first time, while still running
e.g. 2.2.98, the file will be created in the correct place. In
this case however, the dependencies on the kernel will not be guaranteed
to be correct. See the options -F, -C and -b above for more
information on handling this.
While building the relationship between modules and the symbols
exported by other modules, depmod does not consider the GPL status of
the modules nor of the exported symbols. That is, depmod will not flag
an error if a module without a GPL compatible license refers to a GPL
only symbol (EXPORT_SYMBOL_GPL in the kernel). However insmod will
refuse to resolve GPL only symbols for non-GPL modules so the actual
load will fail.
Search for modules in all directories specified in the
(optional) configuration file /etc/modules.conf.
Compare file timestamps and, if necessary, act like depmod -a.
This option only updates the dependency file if anything has
Show all the unresolved symbols for each module.
Display a summary of options and immediately exit.
Write the dependency file on stdout instead of in the /lib/mod-
Tell depmod to keep quiet and not to complain about missing symbols.
Some users compile modules under a non-root userid then install
the modules as root. This process can leave the modules owned
by the non-root userid, even though the modules directory is
owned by root. If the non-root userid is compromised, an
intruder can overwrite existing modules owned by that userid and
use this exposure to bootstrap up to root access.
By default, modutils will reject attempts to use a module that
is not owned by root. Specifying -r will suppress the error and
allow root to load modules that are not owned by root.
Use of -r is a major security exposure and is not recommended.
Write all error messages via the syslog daemon instead of
depmod 2.4 does not set a return code when there are any unresolved
symbols. The next major release of modutils (2.5) will
set a return code for unresolved symbols. Some distributions
want a non-zero return code in modutils 2.4 but that change
might cause problems for users who expect the old behaviour. If
you want a non-zero return code in depmod 2.4, specify -u. dep-
mod 2.5 will silently ignore the -u flag and will always give a
non-zero return code for unresolved symbols.
Show the name of each module as it is being processed.
Display the version of depmod.
The following options are useful for people managing distributions:
-b basedirectory, --basedir basedirectory
If the directory tree /lib/modules containing the sub-trees of
modules is moved somewhere else in order to handle modules for a
different environment, the -b option tells depmod where to find
the moved image of the /lib/modules tree. The file references
in the depmod output file that is built, modules.dep, will not
contain the basedirectory path. This means that when the file
tree is moved back from basedirectory/lib/modules into /lib/mod-
ules in the final distribution, all references will be correct.
-C configfile, --config configfile
Use the file configfile instead of /etc/modules.conf. The environment
variable MODULECONF can also be used to select a different
configuration file from the default /etc/modules.conf (or
-F kernelsyms,--filesyms kernelsyms
When building dependency files for a different kernel than the
currently running kernel, it is important that depmod uses the
correct set of kernel symbols to resolve the kernel references
in each module. These symbols can either be a copy of Sys-
tem.map from the other kernel, or a copy of the output from
/proc/ksyms. If your kernel uses versioned symbols, it is best
to use a copy of the /proc/ksyms output, since that file contains
the symbol versions of the kernel symbols. However you
can use a System.map even with versioned symbols.
The behavior of depmod and modprobe can be adjusted by the (optional)
configuration file /etc/modules.conf.
See modprobe(8) and modules.conf(5) for a complete description.
Each time you compile a new kernel, the command "make modules_install"
will create a new directory, but won't change the default.
When you get a module unrelated to the kernel distribution you should
place it in one of the version-independent directories under /lib/mod-
This is the default strategy, which can be overridden in /etc/mod-
/etc/modules.conf (alternatively but deprecated /etc/conf.modules)
modules.conf(5), modprobe(8), modinfo(8), lsmod(8), ksyms(8)
depmod [ -V | --version ] should exit immediately. Instead, it prints
the version information and behaves as if no options were given.
Jacques Gelinas (firstname.lastname@example.org)
Bjorn Ekwall (email@example.com)
Linux January 26, 2002 DEPMOD(8)
[ Back ]