lfs/chapter06/udev.xml

347 lines
12 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"?>
<sect1info condition="script">
<productname>udev</productname>
<productnumber>&udev-version;</productnumber>
<address>&udev-url;</address>
</sect1info>
<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 remap="pre">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, or by Udev itself:</para>
<screen><userinput remap="install">install -dv /lib/{firmware,udev/devices/{pts,shm}}
mknod -m0666 /lib/udev/devices/null c 1 3
mknod -m0600 /lib/udev/devices/kmsg c 1 11
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 remap="make">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:</para>
<screen><userinput remap="test">make test</userinput></screen>
<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 remap="install">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 its default
configuration does not cover all devices. Install the (LFS-specific)
custom rules files:</para>
<screen><userinput remap="install">cd &udev-config;
make install</userinput></screen>
<para>Install the documentation that explains the LFS-specific rules
files:</para>
<screen><userinput remap="install">make install-doc</userinput></screen>
<para>Install the documentation that explains the commonly-used rules
files provided by Udev:</para>
<screen><userinput remap="install">make install-extra-doc</userinput></screen>
<para>Install the documentation that explains how to create custom Udev
rules:</para>
<screen><userinput remap="install">cd ..
install -dv /usr/share/doc/udev-&udev-version;
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, collect, create_floppy_devices, edd_id,
firmware.sh, fstab_import, path_id, scsi_id, udevadm, udevd,
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="collect">
<term><command>collect</command></term>
<listitem>
<para>Given an ID for the current uevent and a list of
IDs (for all target uevents), registers the current ID
and indicates whether all target IDs have been registered</para>
<indexterm zone="ch-system-udev collect">
<primary sortas="b-collect">collect</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="fstab_import">
<term><command>fstab_import</command></term>
<listitem>
<para>Finds an entry in <filename>/etc/fstab</filename> that
matches the current device, and provides its information to
Udev</para>
<indexterm zone="ch-system-udev fstab_import">
<primary sortas="b-fstab_import">fstab_import</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="path_id">
<term><command>path_id</command></term>
<listitem>
<para>Provides 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="udevadm">
<term><command>udevadm</command></term>
<listitem>
<para>Generic udev administration tool: controls the udevd daemon,
provides info from the Udev database, monitors uevents, waits for
uevents to finish, tests Udev configuration, and triggers uevents
for a given device</para>
<indexterm zone="ch-system-udev udevadm">
<primary sortas="b-udevadm">udevadm</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="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 configuration 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>