mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-01-19 13:37:39 +00:00
164e0ddbce
Now this variable is exported, thus it might potentially cause unwanted side effects building other packages. So unset it after installation.
306 lines
11 KiB
XML
306 lines
11 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" revision="sysv">
|
|
<?dbhtml filename="udev.html"?>
|
|
|
|
<sect1info condition="script">
|
|
<productname>udev</productname>
|
|
<productnumber>&systemd-version;</productnumber>
|
|
<address>&systemd-url;</address>
|
|
</sect1info>
|
|
|
|
<title>Udev from Systemd-&systemd-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-fin-sbu;</seg>
|
|
<seg>&udev-fin-du;</seg>
|
|
</seglistitem>
|
|
</segmentedlist>
|
|
</sect2>
|
|
|
|
<sect2 role="installation">
|
|
<title>Installation of Udev</title>
|
|
|
|
<para>Udev is part of the systemd-&systemd-version; package. Use
|
|
the systemd-&systemd-version;.tar.xz file as the source tarball.</para>
|
|
|
|
<para>Remove two unneeded groups,
|
|
<systemitem class="groupname">render</systemitem> and
|
|
<systemitem class="groupname">sgx</systemitem>, from the default udev
|
|
rules:</para>
|
|
|
|
<screen><userinput remap="pre">sed -i -e 's/GROUP="render"/GROUP="video"/' \
|
|
-e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in</userinput></screen>
|
|
|
|
<para>Remove one udev rule requiring a full Systemd installation:</para>
|
|
|
|
<screen><userinput remap="pre">sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in</userinput></screen>
|
|
|
|
<para>Adjust the hardcoded paths to network configuration files for the
|
|
standalone udev installation:</para>
|
|
|
|
<screen><userinput remap="pre">sed '/NETWORK_DIRS/s/systemd/udev/' -i src/basic/path-lookup.h</userinput></screen>
|
|
|
|
<para>Prepare Udev for compilation:</para>
|
|
|
|
<screen><userinput remap="configure">mkdir -p build
|
|
cd build
|
|
|
|
meson setup \
|
|
--prefix=/usr \
|
|
--buildtype=release \
|
|
-Dmode=release \
|
|
-Ddev-kvm-mode=0660 \
|
|
-Dlink-udev-shared=false \
|
|
-Dlogind=false \
|
|
-Dvconsole=false \
|
|
..</userinput></screen>
|
|
|
|
<variablelist>
|
|
<title>The meaning of the meson options:</title>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--buildtype=release</parameter></term>
|
|
<listitem>
|
|
<para>This switch overrides the default buildtype
|
|
(<quote>debug</quote>), which produces unoptimized
|
|
binaries.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>-Dmode=release</parameter></term>
|
|
<listitem>
|
|
<para>Disable some features considered experimental by upstream.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>-Ddev-kvm-mode=0660</parameter></term>
|
|
<listitem>
|
|
<para>The default udev rule would allow all users to access
|
|
<filename class='devicefile'>/dev/kvm</filename>. The editors
|
|
consider it dangerous. This option overrides it.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>-Dlink-udev-shared=false</parameter></term>
|
|
<listitem>
|
|
<para>This option prevents udev from linking to the internal
|
|
systemd shared library,
|
|
<systemitem class='library'>libsystemd-shared</systemitem>.
|
|
This library is designed to be shared by many Systemd components
|
|
and it's too overkill for a udev-only installation.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>-Dlogind=false -Dvconsole=false</parameter></term>
|
|
<listitem>
|
|
<para>These options prevent the generation of several udev rule
|
|
files belonging to the other Systemd components that we won't
|
|
install.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Get the list of the shipped udev helpers and save it into an
|
|
environment variable (exporting it is not strictly necessary, but it makes
|
|
building as a regular user or using a package manager easier):</para>
|
|
|
|
<screen><userinput remap="make">export udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \
|
|
awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')</userinput></screen>
|
|
|
|
<para>Only build the components needed for udev:</para>
|
|
|
|
<screen><userinput remap="make">ninja udevadm systemd-hwdb \
|
|
$(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \
|
|
$(realpath libudev.so --relative-to .) \
|
|
$udev_helpers udevadm</userinput></screen>
|
|
|
|
<para>Install the package:</para>
|
|
|
|
<screen><userinput remap="install">install -vm755 -d {/usr/lib,/etc}/udev/{hwdb.d,rules.d,network}
|
|
install -vm755 -d /usr/{lib,share}/pkgconfig
|
|
install -vm755 udevadm /usr/bin/
|
|
install -vm755 systemd-hwdb /usr/bin/udev-hwdb
|
|
ln -svfn ../bin/udevadm /usr/sbin/udevd
|
|
cp -av libudev.so{,*[0-9]} /usr/lib/
|
|
install -vm644 ../src/libudev/libudev.h /usr/include/
|
|
install -vm644 src/libudev/*.pc /usr/lib/pkgconfig/
|
|
install -vm644 src/udev/*.pc /usr/share/pkgconfig/
|
|
install -vm644 ../src/udev/udev.conf /etc/udev/
|
|
install -vm644 rules.d/* ../rules.d/README /usr/lib/udev/rules.d/
|
|
install -vm644 $(find ../rules.d/*.rules \
|
|
-not -name '*power-switch*') /usr/lib/udev/rules.d/
|
|
install -vm644 hwdb.d/* ../hwdb.d/{*.hwdb,README} /usr/lib/udev/hwdb.d/
|
|
install -vm755 $udev_helpers /usr/lib/udev
|
|
install -vm644 ../network/99-default.link /usr/lib/udev/network</userinput></screen>
|
|
|
|
<para>Install some custom rules and support files useful in an LFS
|
|
environment:</para>
|
|
|
|
<screen><userinput remap="install">tar -xvf ../../&udev-lfs-version;.tar.xz
|
|
make -f &udev-lfs-version;/Makefile.lfs install</userinput></screen>
|
|
|
|
<para>Install the man pages:</para>
|
|
|
|
<!-- Please make sure systemd man pages tarball has a common leading
|
|
component in the path. -->
|
|
<screen><userinput remap="install">tar -xf ../../systemd-man-pages-&systemd-man-version;.tar.xz \
|
|
--no-same-owner --strip-components=1 \
|
|
-C /usr/share/man --wildcards '*/udev*' '*/libudev*' \
|
|
'*/systemd.link.5' \
|
|
'*/systemd-'{hwdb,udevd.service}.8
|
|
|
|
sed 's|systemd/network|udev/network|' \
|
|
/usr/share/man/man5/systemd.link.5 \
|
|
> /usr/share/man/man5/udev.link.5
|
|
|
|
sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8 \
|
|
> /usr/share/man/man8/udev-hwdb.8
|
|
|
|
sed 's|lib.*udevd|sbin/udevd|' \
|
|
/usr/share/man/man8/systemd-udevd.service.8 \
|
|
> /usr/share/man/man8/udevd.8
|
|
|
|
rm /usr/share/man/man*/systemd*</userinput></screen>
|
|
|
|
<para>Finally, unset the <envar>udev_helpers</envar> variable:</para>
|
|
|
|
<!-- remap="make" seems confusing but we don't have sth. like
|
|
remap="clean". -->
|
|
<screen><userinput remap="make">unset udev_helpers</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="conf-udev" role="configuration">
|
|
<title>Configuring Udev</title>
|
|
|
|
<indexterm zone="conf-udev">
|
|
<primary sortas="a-Udev">Udev</primary>
|
|
<secondary>configuring</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm zone="conf-udev">
|
|
<primary sortas="e-/etc/udev/hwdb.bin">/etc/udev/hwdb.bin</primary>
|
|
</indexterm>
|
|
|
|
<para>Information about hardware devices is maintained in the
|
|
<filename class="directory">/etc/udev/hwdb.d</filename> and
|
|
<filename class="directory">/usr/lib/udev/hwdb.d</filename> directories.
|
|
<application>Udev</application> needs that information to be compiled
|
|
into a binary database <filename>/etc/udev/hwdb.bin</filename>. Create the
|
|
initial database:</para>
|
|
|
|
<screen><userinput>udev-hwdb update</userinput></screen>
|
|
|
|
<para>This command needs to be run each time the hardware information is
|
|
updated.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="contents-udev" role="content">
|
|
<title>Contents of Udev</title>
|
|
|
|
<segmentedlist>
|
|
<segtitle>Installed programs</segtitle>
|
|
<segtitle>Installed libraries</segtitle>
|
|
<segtitle>Installed directories</segtitle>
|
|
|
|
<seglistitem>
|
|
<seg>udevadm, udevd (symlink to udevadm), and udev-hwdb</seg>
|
|
|
|
<seg>libudev.so</seg>
|
|
|
|
<seg>/etc/udev and /usr/lib/udev</seg>
|
|
</seglistitem>
|
|
</segmentedlist>
|
|
|
|
<variablelist>
|
|
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
|
|
<?dbfo list-presentation="list"?>
|
|
<?dbhtml list-presentation="table"?>
|
|
<varlistentry id="udevadm" revision="sysv">
|
|
<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="udev-hwdb">
|
|
<term><command>udev-hwdb</command></term>
|
|
<listitem>
|
|
<para>Updates or queries the hardware database.</para>
|
|
<indexterm zone="ch-system-udev udev-hwdb">
|
|
<primary sortas="b-udev-hwdb">udev-hwdb</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>
|