mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-01-19 21:49:13 +00:00
395ce82718
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@9169 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
379 lines
14 KiB
XML
379 lines
14 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
|
|
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>Prepare the package for compilation:</para>
|
|
|
|
<!-- Note that "libdir=/usr/lib64" would be required for multilib. -->
|
|
<screen><userinput remap="configure">./configure --prefix=/usr \
|
|
--sysconfdir=/etc --sbindir=/sbin \
|
|
--with-rootlibdir=/lib --libexecdir=/lib/udev \
|
|
--docdir=/usr/share/doc/udev-&udev-version; \
|
|
--disable-extras --disable-introspection</userinput></screen>
|
|
|
|
<variablelist>
|
|
<title>The meaning of the new configure options</title>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--with-rootlibdir=/lib</parameter></term>
|
|
<listitem>
|
|
<para>This controls where the <filename
|
|
class="libraryfile">libudev</filename> library is installed. The
|
|
library needs to be in <filename class="directory">/lib</filename>
|
|
because it's used by Udev at boot time, before <filename
|
|
class="directory">/usr</filename> might be available, and the default
|
|
--rootlibdir is <filename class="directory">/usr/lib</filename>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<!-- Note that libexecdir *MUST* stay /lib/udev, even on a 64-bit
|
|
/ multilib system where udev is compiled for 64-bit. Other
|
|
packages require this exact path; the udev maintainers have
|
|
said this is part of the udev API. -->
|
|
<varlistentry>
|
|
<term><parameter>--libexecdir=/lib/udev</parameter></term>
|
|
<listitem>
|
|
<para>This controls where Udev-internal rules and helper programs
|
|
are installed.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--docdir=/usr/share/doc/udev-&udev-version;</parameter></term>
|
|
<listitem>
|
|
<para>This option installs the Udev documentation in the
|
|
proper location with the naming convention consistent with
|
|
other packages.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--disable-extras</parameter></term>
|
|
<listitem>
|
|
<para>This option prevents Udev from installing helper programs and
|
|
other extras which require more external libraries. These libraries
|
|
are not part of the base LFS system. See the Udev
|
|
<filename>README</filename> file for more information.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--disable-introspection</parameter></term>
|
|
<listitem>
|
|
<para>This option prevents Udev's instrospection feature, which
|
|
requires packages not installed as part of the base LFS system. See
|
|
the Udev <filename>README</filename> file for more information.</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.</para>
|
|
|
|
<para>Install the package:</para>
|
|
|
|
<screen><userinput remap="install">make install</userinput></screen>
|
|
|
|
<para>Udev has to be configured in order to work properly, as its default
|
|
configuration does not cover all devices. First install two extra rules
|
|
files from Udev to help support device-mapper and RAID setups:</para>
|
|
|
|
<screen><userinput remap="install">install -m644 -v rules/packages/64-*.rules \
|
|
/lib/udev/rules.d/</userinput></screen>
|
|
|
|
<para>Now install a file to create symlinks for certain hand-held devices:</para>
|
|
|
|
<screen><userinput remap="install">install -m644 -v rules/packages/40-pilot-links.rules \
|
|
/lib/udev/rules.d/</userinput></screen>
|
|
|
|
<para>Now install a file to handle ISDN devices:</para>
|
|
|
|
<screen><userinput remap="install">install -m644 -v rules/packages/40-isdn.rules \
|
|
/lib/udev/rules.d/</userinput></screen>
|
|
|
|
<!-- There are more files available in the packages/ directory, if we want
|
|
to consider using them. Most are probably irrelevant to LFS though.
|
|
"alsa" isn't, but we already have those rules, using a better set of
|
|
matches. Most of the files in packages/ are for other architectures. -->
|
|
|
|
<para>Now 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>
|
|
</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, write_cd_rules, and write_net_rules</seg>
|
|
<seg>libudev.{a,so}</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="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="libudev">
|
|
<term><filename class="libraryfile">libudev</filename></term>
|
|
<listitem>
|
|
<para>A library interface to udev device information</para>
|
|
<indexterm zone="ch-system-udev libudev">
|
|
<primary sortas="c-libudev">libudev</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>
|