depmod - handle dependency descriptions for loadable ker
nel modules
SYNOPSIS
depmod [-aA] [-ehnqrsuvV] [-C configfile] [-F kernelsyms]
[-b basedirectory] [forced_version]
depmod [-enqrsuv] [-F kernelsyms] module1.o module2.o ...
DESCRIPTION
The depmod and modprobe utilities are intended to make a
Linux modular kernel manageable for all users, administra
tors 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
/sbin/depmod -a
somewhere in the rc-files in /etc/rc.d, so that the cor
rect 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 immedi
ately 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 con
sider the GPL status of the modules nor of the exported
symbols. That is, depmod will not flag an error if a mod
ule 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 mod
ules so the actual load will fail.
OPTIONS
-a, --all
Search for modules in all directories specified in
the (optional) configuration file
-A, --quick
Compare file timestamps and, if necessary, act like
depmod -a. This option only updates the dependency
file if anything has changed.
-e, --errsyms
Show all the unresolved symbols for each module.
-h, --help
Display a summary of options and immediately exit.
-n, --show
Write the dependency file on stdout instead of in
the /lib/modules tree.
-q, --quiet
Tell depmod to keep quiet and not to complain about
missing symbols.
-r, --root
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 mod
ules that are not owned by root.
Use of -r is a major security exposure and is not
recommended.
-s, --syslog
Write all error messages via the syslog daemon
instead of stderr.
-u, --unresolved-error
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 unre
solved 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. depmod 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 pro
cessed.
-V, --version
Display the version of depmod.
The following options are useful for people managing dis
tributions:
-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 environ
ment, 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/mod
ules.conf. The environment variable MODULECONF can
also be used to select a different configuration
file from the default /etc/modules.conf (or
/etc/conf.modules (deprecated)).
When environment variable
UNAME_MACHINE is set, modutils will use its value
instead of the machine field from the uname()
syscall. This is mainly of use when you are com
piling 64 bit modules in 32 bit user space or vice
versa, set UNAME_MACHINE to the type of the modules
being built. Current modutils does not support
full cross build mode for modules, it is limited to
choosing between 32 and 64 bit versions of the host
architecture.
-F kernelsyms,--filesyms kernelsyms
When building dependency files for a different ker
nel than the currently running kernel, it is impor
tant 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 ver
sioned 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.
STRATEGY
Each time you compile a new kernel, the command "make mod
ules_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/modules.
This is the default strategy, which can be overridden in
/etc/modules.conf.
FILES
/etc/modules.conf (alternatively but deprecated /etc/conf.modules)
/lib/modules/*/modules.dep,
/lib/modules/*
SEE ALSO
modules.conf(5), modprobe(8), modinfo(8), lsmod(8),
ksyms(8)
BUGS
depmod [ -V | --version ] should exit immediately.
Instead, it prints the version information and behaves as
if no options were given.
AUTHORS
Jacques Gelinas (jack@solucorp.qc.ca)
Bjorn Ekwall (bj0rn@blox.se)
Man(1) output converted with
man2html