<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
  <!ENTITY debian  "<productname>Debian GNU/Linux</productname>">
  <!ENTITY docbook "<productname>DocBook</productname>">
  <!ENTITY sgml    "<abbrev>SGML</abbrev>">
]>

<!-- Stolen from manual page for docbook-to-man, DocBook source file
     (C) 1999 W. Borgert debacle@debian.org

     $Id: docbook-to-man.sgml,v 1.8 2002/04/27 15:28:02 debacle Exp $ -->

<refentry>
  <refentryinfo>
    <address>
      <email>jcm@jonmasters.org</email>
    </address>
    <author>
      <firstname>Jon</firstname>
      <surname>Masters</surname>
    </author>
    <date>2010-03-09</date>
  </refentryinfo>
  <refmeta>
    <refentrytitle>modprobe.conf</refentrytitle>
    <manvolnum>5</manvolnum>
  </refmeta>
  <refnamediv>
    <refname>modprobe.d</refname><refname>modprobe.conf</refname> <refpurpose>Configuration directory/file for modprobe</refpurpose>
  </refnamediv>
  <refsect1>
    <title>DESCRIPTION</title>

    <para>Because the <command>modprobe</command> command can add or
      remove more than one module, due to modules having dependencies,
      we need a method of specifying what options are to be used with
      those modules.  All files underneath the 
      <filename>/etc/modprobe.d</filename> directory which end with the
      <filename>.conf</filename> extension specify those options as
      required. (the <filename>/etc/modprobe.conf</filename> file can
      also be used if it exists, but that will be removed in a future 
      version).  They can also be used to create convenient aliases: 
      alternate names for a module, or they can override the normal 
      <command>modprobe</command> behavior altogether for those with 
      special requirements (such as inserting more than one module).
    </para>
    <para>
      Note that module and alias names (like other module names) can
      have - or _ in them: both are interchangable throughout all the
      module commands as underscore conversion happens automatically.
    </para>
    <para>
      The format of and files under <filename>modprobe.d</filename> and
      <filename>/etc/modprobe.conf</filename> is simple: one
      command per line, with blank lines and lines starting with '#'
      ignored (useful for adding comments).  A '\' at the end of a line
      causes it to continue on the next line, which makes the file a
      bit neater.
    </para>
  </refsect1>
  <refsect1>
    <title>COMMANDS</title>
    <variablelist>
      <varlistentry>
        <term>alias <replaceable>wildcard</replaceable> <replaceable>modulename</replaceable>
        </term>
	<listitem>
	  <para>
	    This allows you to give alternate names for a module.  For
	    example: "alias my-mod really_long_modulename"
	    means you can use "modprobe my-mod" instead of "modprobe
	    really_long_modulename".  You can also use shell-style
	    wildcards, so "alias my-mod* really_long_modulename"
	    means that "modprobe my-mod-something" has the same
	    effect.  You can't have aliases to other aliases (that
	    way lies madness), but aliases can have options, which
	    will be added to any other options.
	  </para>
	  <para>
	    Note that modules can also contain their own aliases,
	    which you can see using <command>modinfo</command>.  These
	    aliases are used as a last resort (ie. if there is no real
	    module, <command>install</command>,
	    <command>remove</command>, or <command>alias</command>
	    command in the configuration).
	  </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>blacklist <replaceable>modulename</replaceable>
        </term>
	<listitem>
	  <para>
	    Modules can contain their own aliases: usually these are
	    aliases describing the devices they support, such as
	    "pci:123...".  These "internal" aliases can be overridden
	    by normal "alias" keywords, but there are cases where two
	    or more modules both support the same devices, or a module
	    invalidly claims to support a devicei that it does not: the
	    <command>blacklist</command> keyword indicates that all of
	    that particular module's internal aliases are to be ignored.
	  </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>install <replaceable>modulename</replaceable> <replaceable>command...</replaceable>
        </term>
	<listitem>
	  <para>
	    This command instructs <command>modprobe</command> to run your
	    command instead of inserting the module in the kernel as normal.
	    The command can be any shell command: this allows you to do any
	    kind of complex processing you might wish.  For example, if the
	    module "fred" works better with the module "barney"
	    already installed (but it doesn't depend on it, so
	    <command>modprobe</command> won't automatically load it),
	    you could say "install fred /sbin/modprobe barney;
	    /sbin/modprobe --ignore-install fred", which would do what
	    you wanted.  Note the <option>--ignore-install</option>,
	    which stops the second <command>modprobe</command> from
	    running the same <command>install</command> command again.
	    See also <command>remove</command> below.
	  </para>
	  <para>The long term future of this command as a solution to the
	    problem of providing additional module dependencies is not assured
	    and it is intended to replace this command with a warning about
	    its eventual removal or deprecation at some point in a future
	    release. Its use complicates the automated determination of module
	    dependencies by distribution utilities, such as mkinitrd (because
	    these now need to somehow interpret what the
	    <command>install</command> commands might be doing.
	    In a perfect world, modules would provide all dependency
	    information without the use of this command and work is underway
	    to implement soft dependency support within the Linux kernel.
	  </para>
	  <para>
	    If you use the string "$CMDLINE_OPTS" in the command, it
	    will be replaced by any options specified on the modprobe
	    command line.  This can be useful because users expect
	    "modprobe fred opt=1" to pass the "opt=1" arg to the
	    module, even if there's an install command in the
	    configuration file.  So our above example becomes "install
	    fred /sbin/modprobe barney; /sbin/modprobe
	    --ignore-install fred $CMDLINE_OPTS"
	  </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>options <replaceable>modulename</replaceable> <replaceable>option...</replaceable>
        </term>
	<listitem>
	  <para>
	    This command allows you to add options to the module
	    <replaceable>modulename</replaceable> (which might be an
	    alias) every time it is inserted into the kernel: whether
	    directly (using <command>modprobe</command> 
	    <replaceable>modulename</replaceable> or because the
	    module being inserted depends on this module.
	  </para>
	  <para>
	    All options are added together: they can come from an
	    <command>option</command> for the module itself, for an
	    alias, and on the command line.
	  </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>remove <replaceable>modulename</replaceable> <replaceable>command...</replaceable>
        </term>
	<listitem>
	  <para>
	    This is similar to the <command>install</command> command
	    above, except it is invoked when "modprobe -r" is run.
	  </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>softdep <replaceable>modulename</replaceable> pre: <replaceable>modules...</replaceable> post: <replaceable>modules...</replaceable>
        </term>
	<listitem>
	  <para>
            The <command>softdep</command> command allows you to specify soft,
            or optional, module dependencies. <replaceable>modulename</replaceable>
            can be used without these optional modules installed, but usually with
            some features missing. For example, a driver for a storage HBA might
            require another module be loaded in order to use management features.
	  </para>
	  <para>
            pre-deps and post-deps modules are lists of names and/or aliases of other
            modules that modprobe will attempt to install (or remove) in order
            before and after the main module given in the
            <replaceable>modulename</replaceable> argument.
	  </para>
	  <para>
            Example: Assume "softdep c pre: a b post: d e" is provided in the
            configuration. Running "modprobe c" is now equivalent to
            "modprobe a b c d e" without the softdep.
            Flags such as --use-blacklist are applied to all the specified
            modules, while module parameters only apply to module c.
	  </para>
	  <para>
            Note: if there are <command>install</command> or
            <command>remove</command> commands with the same
            <replaceable>modulename</replaceable> argument,
            <command>softdep</command> takes precedence.
	  </para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>
  <refsect1>
    <title>COMPATIBILITY</title>
    <para>
      A future version of module-init-tools will come with a strong warning
      to avoid use of the <command>install</command> as explained above. This
      will happen once support for soft dependencies in the kernel is complete.
      That support will complement the existing softdep support within this
      utility by providing such dependencies directly within the modules.
    </para>
  </refsect1>
  <refsect1>
    <title>COPYRIGHT</title>
    <para>
      This manual page originally Copyright 2004, Rusty Russell, IBM
      Corporation. Maintained by Jon Masters and others.
    </para>
  </refsect1>
  <refsect1>
    <title>SEE ALSO</title>

    <para><citerefentry>
	<refentrytitle>modprobe</refentrytitle><manvolnum>8</manvolnum>
      </citerefentry>,
      <citerefentry>
	<refentrytitle>modules.dep</refentrytitle><manvolnum>5</manvolnum>
      </citerefentry>
    </para>
  </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
