MODULE-ASSISTANT(8)MODULE-ASSISTANT(8)NAMEmodule-assistant - manage kernel modules packages
SYNOPSISmodule-assistant [ -fihnqstv ] [ -k source/headers directory ] [ -l
kernel versions ] { update | search | prepare | auto-install | list |
list-available | list-installed | auto-unpacked | get | build | install
| clean | purge | fakesource } [ pkg ... ]
m-a ...
DESCRIPTIONmodule-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 graphi‐
cal user interface will pop up and guide you trough the available func‐
tionality.
NOTE: don't even think about using some random linux-source-x.y.z pack‐
age 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-... pack‐
age 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 pre‐
pare 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 below.
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).
COMMANDS
Most commands require a specification of the package names that they
should be applied on. pkg can be a single word (package name) or mul‐
tiple 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-assis‐
tant (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 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 reg‐
istered by module-assistant if the maintainer adds the helper
script.
prepare
Tries to determine the name of the required linux-headers pack‐
age (either the one matching the currently running kernel or for
the versions specified with -l), installs it if needed and cre‐
ates the /usr/src/linux symlink if needed. Also installs the
build-essential package to ensure that a sane compiler environ‐
ment is established.
fakesource
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 configu‐
ration routines as needed. Warning: DO NOT RELY ON THE RESULTING
SOURCE. It may be very different from the original version.
list | list-available | la
list-available (abbreviated with la) presents a list of details
about specified packages, including installed version, instal‐
lable versions and recently built binary packages. If the pack‐
age 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 source packages.
search Synonym to list -s. Looks for locally compiled packages first
and (if none found) searches for alternative installation candi‐
dates with apt-cache.
get get followed by the package list installs the package source,
downloading source packages when needed.
build build is followed by one or more source packages that should be
built. It chooses the kernel source appropriate for the cur‐
rently 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
install is followed by one or more packages desired for instal‐
lation. 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 short‐
cuts 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 immediately
clean clean clears the build directories of the kernel packages.
purge 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!
OPTIONS-t
--text-mode
Show pure build/install/update logs, no progress bars.
-k
--kernel-dir
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).
-l
--kvers-list
List of kernel version strings (as in KVERS) to act on. If omit‐
ted, the version string of the currently running kernel is
inserted. If --kernel-dir specifies additional source directo‐
ries, the kernel versions that belong to them will be inserted
too.
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 --kernel-dir option.
-v
--verbose
Shows a bit more information, like full paths of the binary
packages.
-n
--no-rebuild
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).
-f
--force
Never look for target file (in another version) and force a
build. For the get command, download a newer version of a pack‐
age even if it is already installed.
-u
--userdir
All relevant environment variables with paths will be redirected
to new directories under the one specified with this option.
-i
--non-inter
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.
-o
--unpack-once
Try to not unpack twice. The option needs to be also specified
when the package is being unpacked for the first time. Experi‐
mental option, don't rely on it.
-O
--not-unpack
Never unpack the source tarball. Usefull after manual manipula‐
tion of module source.
-q
--quiet
Suppress some of the noisy messages during the processing.
-S
--sudo-cmd
A replacement command for superuser commands to be used instead
of sudo.
-s
--apt-search
See search command for details.
-h
--help Prints the usage overview.
ENVIRONMENT VARIABLES
You can export the following environment variables to modify the behav‐
iour of the build scripts. Some packages may ignore them or interpret
them differently.
KPKG_DEST_DIR
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 direc‐
tory.
KERNELDIRS
KERNELDIRS specifies or extends the list of kernel source/header
directory which m-a should build modules for. See /-k/-Option
for details.
SIGNCHANGES
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).
MODULE_LOC
A different location for the (already extracted) module source
directories. Default is /usr/src/modules.
MA_VARDIR
A different location for cached data, used by helper scripts
from module-assistant. Default is /var/cache/modass.
MA_APTCMD
Command to download install packages, to use instead of the apt-
get.
MOD_SRCDIR
A different location for module source tarballs. Default is
/usr/src.
ROOT_CMD
Wrapper command to execute command as root. If you are not root,
fakeroot is chosen automatically. This variable must be inter‐
preted by individual packages so some of them may ignore it.
However, you can still run module-assistant inside of the
ROOT_CMD wrapper.
NON-ROOT USAGE
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 addi‐
tional 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.
FILES
/usr/share/modass/packages/*
List of helper scripts shipped with the module-assistant pack‐
age.
/usr/share/modass/overrides/*
Helper scripts installed by other packages.
SEE ALSOmake-kpkg(1), /usr/share/doc/module-assistant/README
BUGS
See the module-assistant bug page <URL:http://bugs.debian.org/src:mod‐
ule-assistant>. If you wish to report a bug in module-assistant,
please use the reportbug(1) command.
RETURN CODES
0 Success
1..249 various errors during the build process
254 problem with permissions
255 fixable error after user intervention
TODO
Quicklist (fast output without details)
Integration into APT and/or into the init system
"Aggressive" debianisation using the templates set (to generate a pack‐
age with guessed name from any source that looks like being compatible
with kernel 2.6 build system)
Automatic transformation of kernel sources to generate .udeb packages
AUTHOR
Module-Assistant was written by Eduard Bloch <blade@debian.org> for the
Debian distribution.
29 June 2011 MODULE-ASSISTANT(8)