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

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

  <title>Udev-&udev-version;</title>

  <indexterm zone="ch-system-udev">
    <primary sortas="a-Udev">Udev</primary>
  </indexterm>

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

    <para>The Udev package contains programs for dynamic creation of device
    nodes.</para>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Udev</title>

    <para os="a">Compile the package:</para>

<screen os="b"><userinput>make EXTRAS="extras/floppy extras/cdrom_id extras/firmware \
    extras/scsi_id extras/volume_id extras/ata_id extras/usb_id \
    extras/edd_id extras/dasd_id extras/path_id" udevdir=/dev</userinput></screen>

    <variablelist os="c">
      <title>The meaning of the make parameter:</title>

      <varlistentry>
      <term><parameter>EXTRAS="extras/floppy extras/cdrom_id extras/firmware
      extras/scsi_id extras/volume_id extras/ata_id extras/usb_id extras/edd_id
      extras/dasd_id extras/path_id"</parameter></term>
        <listitem>
          <para>This builds the helper applications that are used with
          udev. The helper programs assist in correct handling of devices.</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para os="d">If you want to run the testsuite, you need to change
    a hardcoded reference to the <command>test</command>
    program:</para>

    <screen os="e"><userinput>sed -i 's@/usr/bin/test@/bin/test@' test/udev-test.pl</userinput></screen>

    <para os="f">To test the results, issue:
    <userinput>make test</userinput>.</para>

    <para os="g">Install the package:</para>

<screen os="h"><userinput>make DESTDIR=/ \
    EXTRAS="extras/floppy extras/cdrom_id extras/firmware \
    extras/scsi_id extras/volume_id extras/ata_id extras/usb_id \
    extras/edd_id extras/dasd_id extras/path_id" udevdir=/dev install</userinput></screen>

    <variablelist os="i">
      <title>The meaning of the make parameter:</title>

      <varlistentry>
      <term><parameter>DESTDIR=/</parameter></term>
        <listitem>
          <para>This prevents the Udev build process from killing any
          <command>udevd</command> processes that may be running on the
          system.</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para os="i">Install necessary helpers.</para>

<screen os="j"><userinput>install -v extras/eventrecorder.sh /lib/udev</userinput></screen>

    <para os="l">Install the documentation that explains how to create
    Udev rules:</para>

<screen os="m"><userinput>install -v -m644 -D docs/writing_udev_rules/index.html \
    /usr/share/doc/udev-&udev-version;/index.html</userinput></screen>

    <para os="n">Create a directory for storing firmware that can be
    loaded by <command>udev</command>:</para>

<screen os="o"><userinput>install -dv /lib/firmware</userinput></screen>

  </sect2>

  <sect2 id="contents-udev" role="content">
    <title>Contents of Udev</title>

    <segmentedlist>
      <segtitle>Installed programs</segtitle>
      <segtitle>Installed directory</segtitle>

      <seglistitem>
        <seg>udevcontrol, udevd, udevinfo, udevmonitor, udevsend,
        udevtest, and udevtrigger</seg>
        <seg>/etc/udev</seg>
      </seglistitem>
    </segmentedlist>

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

      <varlistentry id="udevcontrol">
        <term><command>udevcontrol</command></term>
        <listitem>
          <para>Configures a number of options for the running
          <command>udevd</command> daemon, such as the log level.</para>
          <indexterm zone="ch-system-udev udevcontrol">
            <primary sortas="b-udevcontrol">udevcontrol</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="udevd">
        <term><command>udevd</command></term>
        <listitem>
          <para>A daemon that reorders hotplug events before submitting them to
          <command>udev</command>,
          thus avoiding various race conditions</para>
          <indexterm zone="ch-system-udev udevd">
            <primary sortas="b-udevd">udevd</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="udevinfo">
        <term><command>udevinfo</command></term>
        <listitem>
          <para>Allows users to query the <command>udev</command> database for
          information on any device currently present on the system; it also
          provides a way to query any device in the <systemitem
          class="filesystem">sysfs</systemitem> tree to help create udev
          rules</para>
          <indexterm zone="ch-system-udev udevinfo">
            <primary sortas="b-udevinfo">udevinfo</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="udevmonitor">
        <term><command>udevmonitor</command></term>
        <listitem>
          <para>Prints the event received from the kernel and the event which
          <command>udev</command> sends out after rule processing</para>
          <indexterm zone="ch-system-udev udevmonitor">
            <primary sortas="b-udevmonitor">udevmonitor</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="udevsettle">
        <term><command>udevsettle</command></term>
        <listitem>
          <para>Watches the Udev event queue and exits if all current uevents
          have been handled</para>
          <indexterm zone="ch-system-udev udevsettle">
            <primary sortas="b-udevsettle">udevsettle</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="udevtest">
        <term><command>udevtest</command></term>
        <listitem>
          <para>Simulates a <command>udev</command> run for the given device,
          and prints out the name of the node the real <command>udev</command>
          would have created or (not in CLFS) the name of the renamed network
          interface</para>
          <indexterm zone="ch-system-udev udevtest">
            <primary sortas="b-udevtest">udevtest</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="udevtrigger">
        <term><command>udevtrigger</command></term>
        <listitem>
          <para>Walks the sysfs tree for devices that need to be added to the
	  system.</para>
          <indexterm zone="ch-system-udev udevtrigger">
            <primary sortas="b-udevtrigger">udevtrigger</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="ata_id">
        <term><command>ata_id</command></term>
        <listitem>
          <para>Provides Udev with a unique string and additional
          information (uuid, label) for an ATA drive</para>
          <indexterm zone="ch-system-udev ata_id">
            <primary sortas="b-ata_id">ata_id</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="cdrom_id">
        <term><command>cdrom_id</command></term>
        <listitem>
	  <para>To be written</para>  
          <indexterm zone="ch-system-udev cdrom_id">
            <primary sortas="b-cdrom_id">cdrom_id</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="create_floppy_devices">
        <term><command>create_floppy_devices</command></term>
        <listitem>
          <para>Creates all possible floppy devices based on the CMOS type</para>
          <indexterm zone="ch-system-udev create_floppy_devices">
            <primary sortas="b-create_floppy_devices">create_floppy_devices</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="firmware.sh">
        <term><command>firmware.sh</command></term>
        <listitem>
	  <para>To be written</para>  
          <indexterm zone="ch-system-udev firmware.sh">
            <primary sortas="b-firmware.sh">firmware.sh</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="path_id">
        <term><command>path_id</command></term>
        <listitem>
          <para>Provide the shortest possible unique hardware path to a
          device</para>
          <indexterm zone="ch-system-udev path_id">
            <primary sortas="b-path_id">path_id</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="scsi_id">
        <term><command>scsi_id</command></term>
        <listitem>
	  <para>To be written</para>  
          <indexterm zone="ch-system-udev scsi_id">
            <primary sortas="b-scsi_id">scsi_id</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="vol_id">
        <term><command>vol_id</command></term>
        <listitem>
	  <para>To be written</para>  
          <indexterm zone="ch-system-udev vol_id">
            <primary sortas="b-vol_id">vol_id</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="usb_id">
        <term><command>usb_id</command></term>
        <listitem>
	  <para>To be written</para>  
          <indexterm zone="ch-system-udev usb_id">
            <primary sortas="b-usb_id">usb_id</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="edd_id">
        <term><command>edd_id</command></term>
        <listitem>
	  <para>To be written</para>  
          <indexterm zone="ch-system-udev edd_id">
            <primary sortas="b-edd_id">edd_id</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="dasd_id">
        <term><command>dasd_id</command></term>
        <listitem>
	  <para>To be written</para>  
          <indexterm zone="ch-system-udev dasd_id">
            <primary sortas="b-dasd_id">dasd_id</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="etc-udev">
        <term><filename class="directory">/etc/udev</filename></term>
        <listitem>
          <para>Contains <command>udev</command> configuation files,
          device permissions, and rules for device naming</para>
          <indexterm zone="ch-system-udev etc-udev">
            <primary sortas="e-/etc/udev">/etc/udev</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="lib-udev">
        <term><filename class="directory">/lib/udev</filename></term>
        <listitem>
          <para>Contains <command>udev</command> helper programs
          and static devices which get copied to /dev when booted.</para>
          <indexterm zone="ch-system-udev lib-udev">
            <primary sortas="e-/lib/udev">/lib/udev</primary>
          </indexterm>
        </listitem>
      </varlistentry>
    </variablelist>

  </sect2>

</sect1>
