lfs/chapter06/udev.xml
2007-05-12 20:45:29 +00:00

375 lines
13 KiB
XML

<?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-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>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&udev-ch6-sbu;</seg>
<seg>&udev-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Udev</title>
<para>The udev-config tarball contains LFS-specific files used to configure
Udev. Unpack it into the Udev source directory:</para>
<screen><userinput>tar -xvf ../&udev-config;.tar.bz2</userinput></screen>
<para>Create some devices and directories that Udev cannot handle due to
them being required very early in the boot process:</para>
<screen><userinput>install -dv /lib/{firmware,udev/devices/{pts,shm}}
mknod -m0666 /lib/udev/devices/null c 1 3
ln -sv /proc/self/fd /lib/udev/devices/fd
ln -sv /proc/self/fd/0 /lib/udev/devices/stdin
ln -sv /proc/self/fd/1 /lib/udev/devices/stdout
ln -sv /proc/self/fd/2 /lib/udev/devices/stderr
ln -sv /proc/kcore /lib/udev/devices/core</userinput></screen>
<para>Compile the package:</para>
<screen><userinput>make EXTRAS="`echo extras/*/`"</userinput></screen>
<variablelist>
<title>The meaning of the make option:</title>
<varlistentry>
<term><parameter>EXTRAS=...</parameter></term>
<listitem>
<para>This builds the helper binaries that can aid in writing custom
Udev rules.</para>
</listitem>
</varlistentry>
</variablelist>
<para>To test the results, issue:
<userinput>make test</userinput>.</para>
<para>Note that the Udev testsuite will produce numerous messages in
the host system's logs. These are harmless and can be ignored.</para>
<para>Install the package:</para>
<screen><userinput>make DESTDIR=/ EXTRAS="`echo extras/*/`" install</userinput></screen>
<variablelist>
<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
host system.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Udev has to be configured in order to work properly, as it only
installs a few configuration files by default. First install the
commonly-used rules files provided by Udev:</para>
<screen><userinput>cp -v etc/udev/rules.d/[0-9]* /etc/udev/rules.d/</userinput></screen>
<para>Now install the LFS-specific rules files:</para>
<screen><userinput>cd &udev-config;
make install</userinput></screen>
<para>Install the documentation that explains the LFS-specific rules
files:</para>
<screen><userinput>make install-doc</userinput></screen>
<para>Install the documentation that explains the commonly-used rules
files provided by Udev:</para>
<screen><userinput>make install-extra-doc</userinput></screen>
<para>Install the documentation that explains how to create custom Udev
rules:</para>
<screen><userinput>cd ..
install -m644 -v docs/writing_udev_rules/index.html \
/usr/share/doc/udev-&udev-version;/index.html</userinput></screen>
</sect2>
<sect2 id="contents-udev" role="content">
<title>Contents of Udev</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>
<seg>ata_id, cdrom_id, create_floppy_devices, edd_id, firmware.sh,
path_id, scsi_id, udevcontrol, udevd, udevinfo, udevmonitor, udevsettle,
udevtest, udevtrigger, usb_id, vol_id, write_cd_rules, and
write_net_rules</seg>
<seg>libvolume_id</seg>
<seg>/etc/udev</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<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>Provides Udev with the capabilities of a
CD-ROM or DVD-ROM drive</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="edd_id">
<term><command>edd_id</command></term>
<listitem>
<para>Provides Udev with the EDD ID for a BIOS disk drive</para>
<indexterm zone="ch-system-udev edd_id">
<primary sortas="b-edd_id">edd_id</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="firmware.sh">
<term><command>firmware.sh</command></term>
<listitem>
<para>Uploads firmware to devices</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>Provides Udev with a unique SCSI identifier
based on the data returned from sending a SCSI INQUIRY command to
the specified device</para>
<indexterm zone="ch-system-udev scsi_id">
<primary sortas="b-scsi_id">scsi_id</primary>
</indexterm>
</listitem>
</varlistentry>
<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 listens for uevents on the netlink socket,
creates devices and runs the configured external programs in
response to these uevents</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 Udev 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 environment
which Udev 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 uevent for the given device, and prints out the
name of the node the real <command>udevd</command> would have created,
or 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>Triggers kernel device uevents to be replayed</para>
<indexterm zone="ch-system-udev udevtrigger">
<primary sortas="b-udevtrigger">udevtrigger</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="usb_id">
<term><command>usb_id</command></term>
<listitem>
<para>Provides Udev with information about USB
devices</para>
<indexterm zone="ch-system-udev usb_id">
<primary sortas="b-usb_id">usb_id</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="vol_id">
<term><command>vol_id</command></term>
<listitem>
<para>Provides Udev with the label and uuid of a
filesystem</para>
<indexterm zone="ch-system-udev vol_id">
<primary sortas="b-vol_id">vol_id</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="write_cd_rules">
<term><command>write_cd_rules</command></term>
<listitem>
<para>A script which generates Udev rules to provide stable names for
optical drives (see also <xref linkend="ch-scripts-symlinks"/>)</para>
<indexterm zone="ch-system-udev write_cd_rules">
<primary sortas="b-write_cd_rules">write_cd_rules</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="write_net_rules">
<term><command>write_net_rules</command></term>
<listitem>
<para>A script which generates rules to provide stable names for
network interfaces (see also <xref linkend="ch-scripts-network"/>)
</para>
<indexterm zone="ch-system-udev write_net_rules">
<primary sortas="b-write_net_rules">write_net_rules</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libvolume_id">
<term><command>libvolume_id</command></term>
<listitem>
<para></para>
<indexterm zone="ch-system-udev libvolume_id">
<primary sortas="c-libvolume_id">libvolume_id</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="etc-udev">
<term><filename class="directory">/etc/udev</filename></term>
<listitem>
<para>Contains Udev 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>
</variablelist>
</sect2>
</sect1>