<?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="depmod.d">
  <refentryinfo>
    <title>depmod.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>depmod.d</refentrytitle>
    <manvolnum>5</manvolnum>
  </refmeta>

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

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

  <refsect1><title>DESCRIPTION</title>
    <para>The order in which modules are processed by the
      <command>depmod</command> command can be altered on a global or
      per-module basis. This is typically useful in cases where built-in
      kernel modules are complemented by custom built versions of the
      same and the user wishes to affect the priority of processing in
      order to override the module version supplied by the kernel.
    </para>
    <para>
      The format of files under <filename>depmod.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 files a
      bit neater.
    </para>
  </refsect1>
  <refsect1>
    <title>COMMANDS</title>
    <variablelist>
      <varlistentry>
        <term>search <replaceable>subdirectory...</replaceable>
        </term>
        <listitem>
          <para>
            This allows you to specify the order in which /lib/modules
            (or other configured module location) subdirectories will
            be processed by <command>depmod</command>. Directories are
            listed in order, with the highest priority given to the
            first listed directory and the lowest priority given to the last
            directory listed. The special keyword <command>built-in</command> 
            refers to the standard module directories installed by the kernel.
            Another special keyword <command>external</command> refers to the
            list of external directories, defined by the
            <command>external</command> command.
          </para>
          <para>
            By default, depmod will give a higher priority to 
            a directory with the name <command>updates</command>
            using this built-in search string: "updates built-in"
            but more complex arrangements are possible and are
            used in several popular distributions.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>override <replaceable>modulename</replaceable> <replaceable>kernelversion</replaceable> <replaceable>modulesubdirectory</replaceable>
        </term>
        <listitem>
          <para>
            This command allows you to override which version of a
            specific module will be used when more than one module
            sharing the same name is processed by the
            <command>depmod</command> command. It is possible to
            specify one kernel or all kernels using the * wildcard.
            <replaceable>modulesubdirectory</replaceable> is the
            name of the subdirectory under /lib/modules (or other
            module location) where the target module is installed.
          </para>
          <para>
            For example, it is possible to override the priority of
            an updated test module called <command>kmod</command> by
            specifying the following command: "override kmod * extra".
            This will ensure that any matching module name installed
            under the <command>extra</command> subdirectory within
            /lib/modules (or other module location) will take priority
            over any likenamed module already provided by the kernel.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>external <replaceable>kernelversion</replaceable>
        <replaceable>absolutemodulesdirectory...</replaceable>
        </term>
        <listitem>
          <para>
            This specifies a list of directories, which will be checked
            according to the priorities in the <command>search</command>
            command. The order matters also, the first directory has the higher
            priority.
          </para>
          <para>
            The <replaceable>kernelversion</replaceable> is a POSIX regular
            expression or * wildcard, like in the <command>override</command>.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>exclude <replaceable>excludedir</replaceable>
        </term>
        <listitem>
          <para>
            This specifies the trailing directories that will be excluded
            during the search for kernel modules.
          </para>
          <para>
	    The <replaceable>excludedir</replaceable> is the trailing directory
	    to exclude
          </para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1><title>COPYRIGHT</title>
    <para>
      This manual page Copyright 2006-2010, Jon Masters, Red Hat, Inc.
    </para>
  </refsect1>
  <refsect1><title>SEE ALSO</title>
    <para>
      <citerefentry>
        <refentrytitle>depmod</refentrytitle><manvolnum>8</manvolnum>
      </citerefentry>
    </para>
  </refsect1>
</refentry>
