insmod
Hurricane Electric Internet Services
NAME
insmod - install loadable modules (aout and ELF format)
SYNOPSIS
insmod [ -fkmsxv ] [ -o internal_name ] object_file [ sym-
bol=value ... ]
DESCRIPTION
Insmod installs a loadable module in the kernel.
Insmod tries to load a module into the kernel, and
resolves all symbols from the exported kernel symbols,
with version information, if available. The module will
get its name by removing the '.o' extension from the base-
name of the object file.
If the '.o' extension is omitted, insmod will attempt to
locate the module in some common default directories. If
the environment contains the variable MODPATH, where all
directories are separated with ':', insmod will look in
these directories for the module, in the specified order.
It is possible to load unversioned modules in a versioned
kernel, and all combinations of these.
It is also possible to load ELF modules into an a.out ker-
nel, and all combinations of these.
It is possible to stack modules, i.e. let one module use a
previously loaded module. All modules that are referenced
are updated with this reference. This ensures that a mod-
ule can't be unloaded if there is another module that
refers to it.
It is possible to change integer values in the module when
loading it. This makes it possible to "tune" the module.
The options are as follows:
-f The -f option tries to load the module even if the
kernel or symbol versions differs from the version
expected by the module. A warning will be issued
if the module is locked to a specific kernel ver-
sion that differs from the current version.
-k This option should really only be used by mod-
probe, to indicate that the module insertion was
requested by kerneld. All modules inserted using
this option will be subject to auto-removal by the
kerneld utiliy if they have been unused for more
that a minute. (I.e. the usage count is zero and
no modules depend on this module.)
If the kernel is not "kerneld-aware", the module
will be rejected by the kernel. Just load it with-
out the "-k" option, and all should be well.
-m The -m option will make insmod ouput a load map,
that will make it easier to debug your modules
after a kernel panic...
Thanks to Derek Atkins <warlord@MIT.EDU>.
-o The -o option allows the module to be named to an
explicit name instead of having a name derived
from the name of the object file.
Note that this option can also be placed _after_
the module name, so that the syntax of insmod
looks more similar to ld.
symbol=value[,value] ...
The values of all integer or character pointer
symbols in the module can be changed at load-time
by naming a symbol and giving the new value(s).
If the symbol is defined as an array of integers
or character pointers, the elements in the array
can be initialized by giving the values separated
by commas (','). Specific array entries can be
skipped by omitting the value, as in 'sym-
bol=value1,,value2'.
Each integer value can be given as a decimal,
octal or hexadecimal value: 17, 021 or 0x11.
If the first character in the given value is non-
numeric, the value is interpreted as a string.
The symbol is assumed to be a character pointer,
which will be initialized to point to the string.
If you want to use a string that starts with a
number, you have to enclose the string with
quotes, i.e. " or ' (Inspired by Giorgio Caset
<gca@wag.ch>).
Extra space in the module will be allocated for
the string itself.
Note the syntax: no spaces are allowed around the
'=' or ','-signs!
If you want to use persistent module storage,
there is a special syntax for selecting persistent
data:
symbol=?key:default,default.. (Note the
'?' and ':' markers!)
This means that if there exists some module infor-
mation that was previously saved with "key" (by
e.g. "set_persist("a key", &value, size)"), then
this value will be used to update the symbol. The
key name can be enclosed in quotes if it contains
whitespace.
If no persistent value can be found, then the
default values will be used.
-s With this option insmod will produce debugging
information and error messages using the syslog
facility. (Also used by "kerneld", if you have
installed it.)
-v If you want verbose information from the loading,
select this option.
-x is the no-export-flag, which will inhibit the
default insmod behaviour: i.e. inserting all the
module's external symbols into the kernel symbol
table.
Note that the kernel will still update the refer-
ences that the module makes to previously loaded
modules.
SEE ALSO
rmmod(1), modprobe(1), depmod(1), lsmod(1), ksyms(1), mod-
ules(2), genksyms(8)
HISTORY
The module support was first concieved by Anonymous (as
far as I know...).
Linux version by Bas Laarhoven <bas@vimec.nl>,
0.99.14 version by Jon Tombs <jon@gtex02.us.es>,
extended by Bjorn Ekwall <bj0rn@blox.se>.
ELF help from Eric Youngdale <eric@aib.com>
BUGS
Insmod relies on the "fact" that symbols, for which one
wants to change the value, are defined as integers or
character pointers, and that sizeof(int) == sizeof(char
*).
Hurricane Electric Internet Services
Copyright (C) 1998
Hurricane Electric.
All Rights Reserved.