module-assistant is the command-line tool for handling
module-source packages that have been prepared for the Debian
distribution. It helps users to build and install module package(s)
easily for one or more custom kernels.
Unless the -h, or --help option is given, one of
the commands below should be present to invoke a function
explicitly. If no (or no valid) command is specified and the
dialog tool is available, a simple graphical user
interface will pop up and guide you trough the available
NOTE: don't even think about using some random linux-source-x.y.z
package contents (or linux-x.y.z tarball from the Internet) to
specify the kernel source for your currently running
kernel. Don't! Those source is not exactly what
have been used to build the running kernel and its configuration
most likely does not match yours. You need the configured kernel
source directory or at least the derived linux-headers-... package
containing the kernel configuration for the exact kernel version
(complete version string). If you do not understand anything of
the above, run "m-a prepare" and/or look at the description and
contents of some linux-headers-... package. Please run
the module-assistant prepare command once before
you do anything else.
For some packages, linux-headers (reduced source) is not
enough. You will have the choice to run a completely customized
kernel, or to recreate the source that have been used to build the
current one. The fakesource function may be useful, see
In order to configure a kernel source properly, you need to make
sure that the file version.h is generated. To get it, configure the
options as usual (make menuconfig etc.) and
run make dep (for kernel 2.4.x) or make
prepare (for newer ones).
Most commands require a specification of the package names that
they should be applied on. pkg can be a single word
(package name) or multiple names. The word all will be
expanded to the list of all available packages, the word
alli to the list of currently installed (source) packages
and the word allu will be expanded to the list of
packages that seem to be installed and unpacked in the base source
directory. If a source package with the given name is not
available, module-assistant (abbreviated: m-a)
will extend the package name with the popular suffixes like
-kernel, -driver, -module, -source and combinations of them.
Multiple commands can be specified in one invocation,
eg. "m-a clean,get,build arla cdfs" is the short way to
write "module-assistant clean arla-modules-source ;
module-assistant clean cdfs-src ; module-assistant get
arla-modules-source cdfs-src ; module-assistant build
arla-modules-source cdfs-src" (or similar).
If you do not like the dialog/whiptail GUI, feel free to use the
-t switch to disable it.
update is used to resynchronize the version index files
from their sources. This happens with helper scripts provided by
the packages. module-assistant has a default built-in
list of the packages that it should look for but other packages
can be registered by module-assistant if the maintainer
adds the helper script.
Tries to determine the name of the required linux-headers
package (either the one matching the currently running kernel or
for the versions specified with -l), installs it if needed and
creates the /usr/src/linux symlink if
needed. Also installs the build-essential package to ensure that
a sane compiler environment is established.
Experimental function which tries to determine the name of the
required/compatible linux-source package, installs it, modifies
the Makefile to look like the original source and runs
configuration routines as needed. Warning: DO NOT RELY ON THE
RESULTING SOURCE. It may be very different from the original
list | list-available | la
list-available (abbreviated with la) presents
a list of details about specified packages, including installed
version, installable versions and recently built binary
packages. If the package names are omitted, shows all known
packages. With -v, prints long package paths.
list-installed | li
Synonym to list alli. Acts like
list-available but limits the list to the installed
Synonym to list -s. Looks for locally compiled packages
first and (if none found) searches for alternative installation
candidates with apt-cache.
get followed by the package list installs the package
source, downloading source packages when needed.
build is followed by one or more source packages that
should be built. It chooses the kernel source appropriate for the
currently running kernel unless different directories have been
specified. If the build fails, look for the most recent log file
in /var/cache/modass (or the user-specified location).
install is followed by one or more packages desired for
installation. The last built package for the current running
kernel is chosen.
auto-install | a-i
auto-install is followed by one or more packages
desired for installation. It will run prepare to configure your
system to build packages, get the package source, try to build it
for the current kernel and install it. You can use
alli or allu shortcuts to select all
installed modules source packages or only those that have been
unpacked before (similar to the make-kpkg tool normally
does, looking in $MODULE_LOC)
auto-build | a-b
like auto-install but does not install the package
clean clears the build directories of the kernel
purge clears the information cache of a source package
and removes all binary packages locally built from it (that
module-assistant knows about). USE WITH CARE!
Show pure build/install/update logs, no progress bars.
The kernel source directories to be used for builds. You can
specify multiple directories with multiple options or separated by
commas or line separators (e.g using
-k "`echo /usr/src/linux-headers-*`"
The kernel versions detected in this directories are automatically
added to the list of target kernel versions
(see --kvers-list for details).
List of kernel version strings (as in KVERS) to act on. If omitted,
the version string of the currently running kernel is inserted. If
--kernel-dir specifies additional source
directories, the kernel versions that belong to them will be
The locations of the kernel source (or headers) that belong to this
kernel versions are either detected by a lookup in the "usual"
locations on Linux systems, or they must be specified with the
Shows a bit more information, like full paths of the binary
If a package that is to be generated does already exist in the
target directory (maybe in on older version), -n prevents
from building the package again.
The default behaviour is to skip when exactly the same file (with
the same filename) is to be generated as the one that already
exists, and the new filename could be detected before starting the
build process (depends on the module package).
Never look for target file (in another version) and force a build.
For the get command, download a newer version of a package even if
it is already installed.
All relevant environment variables with paths will be redirected to
new directories under the one specified with this option.
When the package build was not successful, just continue with other
candidates. By default, module-assistant will suggest to examine
the build log. This option may also modify the behaviour of dpkg
and apt-get to reduce the need for human interaction and install
build dependencies as needed.
Try to not unpack twice. The option needs to be also specified when
the package is being unpacked for the first time. Experimental
option, don't rely on it.
Never unpack the source tarball. Usefull after manual manipulation
of module source.
Suppress some of the noisy messages during the processing.
A replacement command for superuser commands to be used instead of
See search command for details.
Prints the usage overview.
You can export the following environment variables to modify the
behaviour of the build scripts. Some packages may ignore them or
interpret them differently.
KPKG_DEST_DIR specify the target directory where the
resulting Debian package should be installed into. However, many
packages ignore this variable and install the file into the
directory above the kernel source directory or above the current
KERNELDIRS specifies or extends the list of kernel
source/header directory which m-a should build modules for. See
/-k/-Option for details.
If SIGNCHANGES is set, .changes files will be generated
(calling kdist_image rule instead of kdist) and debsign
(or gpg or pgp) will be executed to sign the changes.
KMAINT | DEBFULLNAME | DEBNAME
Specifies the realname of the person building the package
(interesting for .changes file only)
KEMAIL | DEBEMAIL
Specifies the email address of the person building the package
(interesting for .changes file only).
A different location for the (already extracted) module source
directories. Default is /usr/src/modules.
A different location for cached data, used by helper scripts from
A different location for module source tarballs. Default is
Wrapper command to execute command as root. If you are not root,
fakeroot is chosen automatically. This variable must be
interpreted by individual packages so some of them may ignore
it. However, you can still run module-assistant inside of the
module-assistant can work without being root. However you
won't be able to use apt-get or dpkg to install the packages, and
you cannot write to /var/cache/modass on a
normal Debian system. So the commands
are get, install,
auto-install and prepare are taboo for
regular users. However, if the sudo program is installed, it will be
invoked for apt-get and dpkg operations.
All remaining commands except of list
require additional environment variables to move the target paths to
locations writable for the user. They all can be trimmed to a
certain location (a writable directory) using the -u switch.
List of helper scripts shipped with the module-assistant package.