<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-system-kmod" role="wrap">
  <?dbhtml filename="kmod.html"?>

  <sect1info condition="script">
    <productname>kmod</productname>
    <productnumber>&kmod-version;</productnumber>
    <address>&kmod-url;</address>
  </sect1info>

  <title>Kmod-&kmod-version;</title>

  <indexterm zone="ch-system-kmod">
    <primary sortas="a-Kmod">Kmod</primary>
  </indexterm>

  <sect2 role="package">
    <title/>

    <para>The Kmod package contains libraries and utilities for loading kernel
    modules</para>

    <segmentedlist>
      <segtitle>&buildtime;</segtitle>
      <segtitle>&diskspace;</segtitle>

      <seglistitem>
        <seg>&kmod-ch6-sbu;</seg>
        <seg>&kmod-ch6-du;</seg>
      </seglistitem>
    </segmentedlist>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Kmod</title>
    
    <para> </para>
    
  </sect2>

  <sect2 role="installation">
    <title>32-bit Installation</title>

    <para>Prepare Kmod for 32-bit compilation:</para>

<screen><userinput remap="configure">PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
./configure --prefix=/usr          \
            --bindir=/bin          \
            --sysconfdir=/etc      \
            --libdir=/usr/lib32    \
            --with-rootlibdir=/lib32 \
            --with-xz              \
            --with-zlib            \
            CC="gcc -m32"</userinput></screen>

    <variablelist>
      <title>The meaning of the configure options:</title>

      <varlistentry>
        <term><parameter>--with-xz, --with-zlib</parameter></term>
        <listitem>
          <para>These options enable Kmod to handle compressed kernel modules.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>--with-rootlibdir=/lib32</parameter></term>
        <listitem>
          <para>This option ensures different library related files are placed 
          in the correct directories.</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para>Compile the package:</para>

    <para>This package does not come with a test suite that can be run in the
    LFS chroot environment.  At a minimum the git program is required and
    several tests will not run outside of a git repository. </para>

<!--
    <para>To test the results, issue:</para>

<screen><userinput remap="test">make check</userinput></screen>
-->

    <para>Install the package: </para>

<screen><userinput remap="install">make install</userinput></screen>

    <para>Clean up the build directory before moving on to the next platform:</para>
<screen><userinput remap="install">make mostlyclean</userinput></screen>

  </sect2>
  
  <sect2 role="installation">
    <title>x32 ABI Installation</title>

    <para>Prepare Kmod for x32 ABI compilation:</para>

<screen><userinput remap="configure">PKG_CONFIG_PATH=/usr/libx32/pkgconfig \
./configure --prefix=/usr          \
            --bindir=/bin          \
            --sysconfdir=/etc      \
            --libdir=/usr/libx32    \
            --with-rootlibdir=/libx32 \
            --with-xz              \
            --with-zlib            \
            CC="gcc -mx32"</userinput></screen>

    <variablelist>
      <title>The meaning of the configure options:</title>

      <varlistentry>
        <term><parameter>--with-xz, --with-zlib</parameter></term>
        <listitem>
          <para>These options enable Kmod to handle compressed kernel modules.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>--with-rootlibdir=/libx32</parameter></term>
        <listitem>
          <para>This option ensures different library related files are placed 
          in the correct directories.</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para>Compile the package:</para>

<screen><userinput remap="make">make</userinput></screen>

    <para>This package does not come with a test suite that can be run in the
    LFS chroot environment.  At a minimum the git program is required and
    several tests will not run outside of a git repository. </para>

<!--
    <para>To test the results, issue:</para>

<screen><userinput remap="test">make check</userinput></screen>
-->

    <para>Install the package: </para>

<screen><userinput remap="install">make install</userinput></screen>

    <para>Clean up the build directory before moving on to the next platform:</para>
<screen><userinput remap="install">make mostlyclean</userinput></screen>

  </sect2>

  <sect2 role="installation">
    <title>64-bit Installation</title>

    <para>Prepare Kmod for 64-bit compilation:</para>

<screen><userinput remap="configure">./configure --prefix=/usr          \
            --bindir=/bin          \
            --sysconfdir=/etc      \
            --with-rootlibdir=/lib \
            --with-xz              \
            --with-zlib</userinput></screen>

    <variablelist>
      <title>The meaning of the configure options:</title>

      <varlistentry>
        <term><parameter>--with-xz, --with-zlib</parameter></term>
        <listitem>
          <para>These options enable Kmod to handle compressed kernel modules.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>--with-rootlibdir=/lib</parameter></term>
        <listitem>
          <para>This option ensures different library related files are placed 
          in the correct directories.</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para>Compile the package:</para>

<screen><userinput remap="make">make</userinput></screen>

    <para>This package does not come with a test suite that can be run in the
    LFS chroot environment.  At a minimum the git program is required and
    several tests will not run outside of a git repository. </para>

<!--
    <para>To test the results, issue:</para>

<screen><userinput remap="test">make check</userinput></screen>
-->
    <para>Install the package, and create symlinks for
    compatibility with Module-Init-Tools (the package that previously handled
    Linux kernel modules):</para>

<screen><userinput remap="install">make install

for target in depmod insmod lsmod modinfo modprobe rmmod; do
  ln -sv ../bin/kmod /sbin/$target
done

ln -sv kmod /bin/lsmod</userinput></screen>

  </sect2>

  <sect2 id="contents-kmod" role="content">
    <title>Contents of Kmod</title>

    <segmentedlist>
      <segtitle>Installed programs</segtitle>
      <segtitle>Installed library</segtitle>

      <seglistitem>
        <seg>depmod (link to kmod), insmod (link to kmod), kmod, 
        lsmod (link to kmod), modinfo (link to kmod), modprobe (link to kmod),
        and rmmod (link to kmod)</seg>
        <seg>libkmod.so</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="depmod">
        <term><command>depmod</command></term>
        <listitem>
          <para>Creates a dependency file based on the symbols it finds in the
          existing set of modules; this dependency file is used by
          <command>modprobe</command> to automatically load the required
          modules</para>
          <indexterm zone="ch-system-kmod depmod">
            <primary sortas="b-depmod">depmod</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="insmod">
        <term><command>insmod</command></term>
        <listitem>
          <para>Installs a loadable module in the running kernel</para>
          <indexterm zone="ch-system-kmod insmod">
            <primary sortas="b-insmod">insmod</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="kmod">
        <term><command>kmod</command></term>
        <listitem>
          <para>Loads and unloads kernel modules</para>
          <indexterm zone="ch-system-kmod kmod">
            <primary sortas="b-kmod">kmod</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="lsmod">
        <term><command>lsmod</command></term>
        <listitem>
          <para>Lists currently loaded modules</para>
          <indexterm zone="ch-system-kmod lsmod">
            <primary sortas="b-lsmod">lsmod</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="modinfo">
        <term><command>modinfo</command></term>
        <listitem>
          <para>Examines an object file associated with a kernel module and
          displays any information that it can glean</para>
          <indexterm zone="ch-system-kmod modinfo">
            <primary sortas="b-modinfo">modinfo</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="modprobe">
        <term><command>modprobe</command></term>
        <listitem>
          <para>Uses a dependency file, created by
          <command>depmod</command>, to automatically load relevant modules</para>
          <indexterm zone="ch-system-kmod modprobe">
            <primary sortas="b-modprobe">modprobe</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="rmmod">
        <term><command>rmmod</command></term>
        <listitem>
          <para>Unloads modules from the running kernel</para>
          <indexterm zone="ch-system-kmod rmmod">
            <primary sortas="b-rmmod">rmmod</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libkmod">
        <term><filename class="libraryfile">libkmod</filename></term>
        <listitem>
          <para>This library is used by other programs to load and unload kernel
           modules</para>
          <indexterm zone="ch-system-kmod">
            <primary sortas="c-libkmod">libkmod</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>

