<?xml version="1.0"?>
<!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<refentry id="modprobe.d">
  <refentryinfo>
    <title>modprobe.d</title>
    <productname>kmod</productname>

    <authorgroup>
      <author>
        <contrib>Developer</contrib>
        <firstname>Jon</firstname>
        <surname>Masters</surname>
        <email>jcm@jonmasters.org</email>
      </author>
      <author>
        <contrib>Developer</contrib>
        <firstname>Robby</firstname>
        <surname>Workman</surname>
        <email>rworkman@slackware.com</email>
      </author>
      <author>
        <contrib>Developer</contrib>
        <firstname>Lucas</firstname>
        <surname>De Marchi</surname>
        <email>lucas.de.marchi@gmail.com</email>
      </author>
    </authorgroup>
  </refentryinfo>


  <refmeta>
    <refentrytitle>modprobe.d</refentrytitle>
    <manvolnum>5</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>modprobe.d</refname>
    <refpurpose>Configuration directory for modprobe</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <para><filename>/lib/modprobe.d/*.conf</filename></para>
    <para><filename>/usr/local/lib/modprobe.d/*.conf</filename></para>
    <para><filename>/run/modprobe.d/*.conf</filename></para>
    <para><filename>/etc/modprobe.d/*.conf</filename></para>
  </refsynopsisdiv>

  <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.  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 interchangeable throughout all the
      module commands as underscore conversion happens automatically.
    </para>
    <para>
      The format of files under <filename>modprobe.d</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 device 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 kmod 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>
