Merge upstream change of eudev->sysd.udev

This commit is contained in:
Thomas Trepl 2023-07-18 22:19:36 +02:00
commit 7d40eeb537
20 changed files with 386 additions and 380 deletions

View File

@ -3,6 +3,9 @@
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
<!-- Convenient entity for "Systemd" or "Udev" -->
<!ENTITY systemd-udev "<phrase revision='systemd'>Systemd</phrase>
<phrase revision='sysv'>Udev</phrase>">
]>
<appendix id="appendixc" xreflabel="Appendix C">
@ -466,9 +469,7 @@
<segmentedlist id="coreutils-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>Bash, Diffutils, <phrase revision="sysv">Eudev, </phrase>
Findutils, <phrase revision="sysv">and </phrase>Man-DB<phrase
revision="systemd">, and Systemd</phrase></seg>
<seg>Bash, Diffutils, Findutils, Man-DB, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@ -642,45 +643,6 @@
</seglistitem>
</segmentedlist>
<!-- Begin Eudev dependency info -->
<bridgehead renderas="sect2" id="eudev-dep" revision="sysv">Eudev</bridgehead>
<segmentedlist id="eudev-depends" revision="sysv">
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Gperf, Make,
Sed, and Util-linux</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="eudev-rundeps" revision="sysv">
<segtitle>&runtime;</segtitle>
<seglistitem>
<seg>Glibc, Kmod, Xz, Util-linux, and Zlib.</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="eudev-testdeps" revision="sysv">
<segtitle>&testsuites;</segtitle>
<seglistitem>
<seg>None</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="eudev-before" revision="sysv">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>None</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="eudev-optdeps" revision="sysv">
<segtitle>&external;</segtitle>
<seglistitem>
<seg>None</seg>
</seglistitem>
</segmentedlist>
<!-- Begin Expat dependency info -->
<bridgehead renderas="sect2" id="expat-dep">Expat</bridgehead>
@ -1555,7 +1517,7 @@
<segmentedlist id="jinja2-before" revision='systemd'>
<segtitle>&before;</segtitle>
<seglistitem>
<seg>Systemd</seg>
<seg>&systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@ -1633,8 +1595,7 @@
<segmentedlist id="kmod-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg><phrase revision="sysv">Eudev</phrase>
<phrase revision="systemd">Systemd</phrase></seg>
<seg>&systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@ -1913,9 +1874,7 @@
<segmentedlist id="libxcrypt-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>GCC, Perl, Python,
<phrase revision='sysv'>and </phrase>Shadow<phrase
revision='systemd'>, and Systemd</phrase></seg>
<seg>GCC, Perl, Python, Shadow, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@ -2236,10 +2195,7 @@
<segmentedlist id="meson-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>
<phrase revision='sysv'>None</phrase>
<phrase revision='systemd'>Systemd</phrase>
</seg>
<seg>&systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@ -2438,7 +2394,7 @@
<segmentedlist id="openssl-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>Coreutils, Kmod, and Linux</seg>
<seg>Coreutils, Kmod, Linux, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@ -2560,7 +2516,7 @@
<seglistitem>
<seg><phrase revision='systemd'>D-Bus, </phrase>E2fsprogs,
IProute2, Kmod, Man-DB, Procps-ng, Python,
<phrase revision='systemd'>Systemd, </phrase>and Util-linux</seg>
&systemd-udev;, and Util-linux</seg>
</seglistitem>
</segmentedlist>
@ -2866,16 +2822,17 @@
<segmentedlist id="systemd-depends" revision='systemd'>
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Expat, Gawk,
<seg>Acl, Bash, Binutils, Coreutils, Diffutils, Gawk,
GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Meson,
Pkgconf, Sed, Util-linux, and Zstd</seg>
OpenSSL, Pkgconf, Sed, Util-linux, and Zstd</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="systemd-rundeps" revision='systemd'>
<segtitle>&runtime;</segtitle>
<seglistitem>
<seg>Acl, Attr, Glibc, Libcap, Libxcrypt, and Util-linux</seg>
<seg>Acl, Glibc, Libcap, Libxcrypt, OpenSSL, Util-linux, Xz,
Zlib, and Zstd</seg>
</seglistitem>
</segmentedlist>
@ -3104,23 +3061,62 @@
</seglistitem>
</segmentedlist>
<!-- Begin Udev dependency info -->
<bridgehead renderas="sect2" id="udev-dep" revision="sysv">Udev</bridgehead>
<segmentedlist id="udev-depends" revision="sysv">
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Acl, Bash, Binutils, Coreutils, Diffutils, Gawk,
GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Meson,
OpenSSL, Pkgconf, Sed, Util-linux, and Zstd</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="udev-rundeps" revision="sysv">
<segtitle>&runtime;</segtitle>
<seglistitem>
<seg>Acl, Glibc, Libcap, OpenSSL, and Util-linux</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="udev-testdeps" revision="sysv">
<segtitle>&testsuites;</segtitle>
<seglistitem>
<seg>None</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="udev-before" revision="sysv">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>Util-linux</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="udev-optdeps" revision="sysv">
<segtitle>&external;</segtitle>
<seglistitem>
<seg>None</seg>
</seglistitem>
</segmentedlist>
<!-- Begin Util-linux dependency info -->
<bridgehead renderas="sect2" id="util-linux-dep">Util-linux</bridgehead>
<segmentedlist id="util-linux-depends">
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Bash, Binutils, Coreutils, Diffutils,
<phrase revision="sysv">Eudev, </phrase>File, Findutils, Gawk,
<seg>Bash, Binutils, Coreutils, Diffutils, File, Findutils, Gawk,
GCC, Gettext, Glibc, Grep, Make, Ncurses, Pkgconf, Sed,
<phrase revision="systemd">Systemd, </phrase>and Zlib</seg>
&systemd-udev;, and Zlib</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="util-linux-rundeps">
<segtitle>&runtime;</segtitle>
<seglistitem>
<seg>Glibc, Ncurses, Readline, and Zlib</seg>
<seg>Glibc, Ncurses, Readline, &systemd-udev;, and Zlib</seg>
</seglistitem>
</segmentedlist>
@ -3308,9 +3304,7 @@
<segmentedlist id="xz-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg><phrase revision="sysv">Eudev, </phrase>File, GRUB, Kmod,
Libelf, <phrase revision="sysv">and </phrase>Man-DB<phrase
revision="systemd">, and Systemd</phrase></seg>
<seg>File, GRUB, Kmod, Libelf, Man-DB, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@ -3386,8 +3380,7 @@
<segmentedlist id="zstd-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg><phrase revision='sysv'>GCC and Libelf</phrase>
<phrase revision='systemd'>GCC, Libelf, and Systemd</phrase></seg>
<seg>GCC, Libelf, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>

View File

@ -8,12 +8,12 @@
<appendix id="rules" xreflabel="Appendix E" revision="sysv">
<?dbhtml dir="scripts"?>
<?dbhtml filename="eudev-rules.html"?>
<?dbhtml filename="udev-rules.html"?>
<title>Udev configuration rules</title>
<para>The rules in this appendix are listed for convenience. Installation is
normally done via instructions in <xref linkend='ch-system-eudev'/>. </para>
normally done via instructions in <xref linkend='ch-system-udev'/>. </para>
<sect1 id="lfsrules" role="wrap">
<title>55-lfs.rules</title>

View File

@ -1,3 +1,6 @@
2023-07-15 Xi Ruoyao <xry111@xry111.site>
* Use /bin/udevadm instead of /sbin/udevadm.
2022-09-30 Bruce Dubbs <bdubbs@linuxfromscratch.org>
* Mount /dev/shm as a tmpfs.

View File

@ -45,17 +45,17 @@ case "${1}" in
# Start the udev daemon to continually watch for, and act on,
# uevents
/sbin/udevd --daemon
SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon
# Now traverse /sys in order to "coldplug" devices that have
# already been discovered
/sbin/udevadm trigger --action=add --type=subsystems
/sbin/udevadm trigger --action=add --type=devices
/sbin/udevadm trigger --action=change --type=devices
/bin/udevadm trigger --action=add --type=subsystems
/bin/udevadm trigger --action=add --type=devices
/bin/udevadm trigger --action=change --type=devices
# Now wait for udevd to process the uevents we triggered
if ! is_true "$OMIT_UDEV_SETTLE"; then
/sbin/udevadm settle
/bin/udevadm settle
fi
# If any LVM based partitions are on the system, ensure they

View File

@ -34,8 +34,6 @@ case "${1}" in
start)
log_info_msg "Retrying failed uevents, if any..."
# As of udev-186, the --run option is no longer valid
#rundir=$(/sbin/udevadm info --run)
rundir=/run/udev
# From Debian: "copy the rules generated before / was mounted
# read-write":
@ -52,13 +50,13 @@ case "${1}" in
/bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \
while read line ; do
for subsystem in $line ; do
/sbin/udevadm trigger --subsystem-match=$subsystem --action=add
/bin/udevadm trigger --subsystem-match=$subsystem --action=add
done
done
# Now wait for udevd to process the uevents we triggered
if ! is_true "$OMIT_UDEV_RETRY_SETTLE"; then
/sbin/udevadm settle
/bin/udevadm settle
fi
evaluate_retval

View File

@ -43,6 +43,10 @@
<listitem>
<para>2023-07-15</para>
<itemizedlist>
<listitem revision='sysv'>
<para>[xry111] - Replace eudev-3.2.12 with udev from systemd-253.
Fixes <ulink url='&lfs-ticket-root;5285'>#5085</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to iana-etc-20230629. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>

View File

@ -91,9 +91,9 @@
<!--<listitem>
<para>E2fsprogs-&e2fsprogs-version;</para>
</listitem>-->
<listitem revision="sysv">
<para>Eudev-&eudev-version;</para>
</listitem>
<!--<listitem revision="sysv">
<para>Udev-&systemd-version; (from systemd)</para>
</listitem>-->
<!--<listitem>
<para>Expat-&expat-version;</para>
</listitem>-->
@ -304,6 +304,18 @@
<title>Added:</title>
<listitem><para></para></listitem> <!-- satisfy build -->
<listitem revision="sysv">
<para>Udev-&systemd-version; (from systemd)</para>
</listitem>
<listitem revision="sysv">
<para>Jinja2-&jinja2-version;</para>
</listitem>
<listitem revision="sysv">
<para>MarkupSafe-&markupsafe-version;</para>
</listitem>
<listitem>
<para>Libxcrypt-&libxcrypt-version;</para>
</listitem>
@ -333,6 +345,10 @@
<title>Removed:</title>
<listitem><para></para></listitem> <!-- satisfy build -->
<listitem>
<para>eudev-3.2.12</para>
</listitem>
<listitem>
<para>Pkg-config-0.29.2</para>
</listitem>

View File

@ -174,14 +174,6 @@
</listitem>
</varlistentry>
<varlistentry revision="sysv">
<term>Eudev (&eudev-version;) - <token>&eudev-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&eudev-url;"/></para>
<para>MD5 sum: <literal>&eudev-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Expat (&expat-version;) - <token>&expat-size;</token>:</term>
<listitem>
@ -396,7 +388,7 @@
</listitem>
</varlistentry>
<varlistentry revision="systemd">
<varlistentry>
<term>Jinja2 (&jinja2-version;) - <token>&jinja2-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&jinja2-home;"/></para>
@ -545,7 +537,7 @@
</listitem>
</varlistentry>
<varlistentry revision="systemd">
<varlistentry>
<term>MarkupSafe (&markupsafe-version;) - <token>&markupsafe-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&markupsafe-home;"/></para>
@ -706,7 +698,7 @@
</listitem>
</varlistentry>
<varlistentry revision="systemd">
<varlistentry>
<term>Systemd (&systemd-version;) - <token>&systemd-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&systemd-home;"/></para>
@ -715,7 +707,7 @@
</listitem>
</varlistentry>
<varlistentry revision="systemd">
<varlistentry>
<term>Systemd Man Pages(&systemd-version;) - <token>&systemd-man-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&systemd-home;"/></para>

View File

@ -92,7 +92,7 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dbus.xml"/>
<!-- sysv only -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="eudev.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="udev.xml"/>
<!-- Both sysv on systemd builds -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="man-db.xml"/>

View File

@ -1,270 +0,0 @@
<?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-eudev" role="wrap" revision="sysv">
<?dbhtml filename="eudev.html"?>
<sect1info condition="script">
<productname>eudev</productname>
<productnumber>&eudev-version;</productnumber>
<address>&eudev-url;</address>
</sect1info>
<title>Eudev-&eudev-version;</title>
<indexterm zone="ch-system-eudev">
<primary sortas="a-Eudev">Eudev</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Eudev package contains programs for dynamic creation of device
nodes.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&eudev-fin-sbu;</seg>
<seg>&eudev-fin-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Eudev</title>
<!-- No longer seems needed. bdubbs 5/18/23
<para>First fix the location of udev rules in the .pc file:</para>
<screen><userinput remap="pre">sed -i '/udevdir/a udev_dir=${udevdir}' src/udev/udev.pc.in</userinput></screen>
-->
<!-- different from systemd: we do not have a render group and file is
named differently -->
<para>Remove an unneeded group
<systemitem class="groupname">sgx</systemitem>, from the default udev
rules:</para>
<screen><userinput remap="pre">sed -i -e 's/GROUP="sgx", //' rules/50-udev-default.rules</userinput></screen>
<para>Prepare Eudev for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--bindir=/usr/sbin \
--sysconfdir=/etc \
--enable-manpages \
--disable-static</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Create some directories now that are needed for tests, but
will also be used as a part of installation:</para>
<screen><userinput remap="test">mkdir -pv /usr/lib/udev/rules.d
mkdir -pv /etc/udev/rules.d</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</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>
</sect2>
<!-- - - - - - - - - - -->
<!-- Multilib - 32bit -->
<!-- - - - - - - - - - -->
<sect2 arch="ml_32,ml_all" role="installation">
<title>Installation of Eudev - 32bit</title>
<para>Clean previous build:</para>
<screen><userinput remap="pre">make distclean</userinput></screen>
<para>Prepare Eudev for compilation:</para>
<screen><userinput remap="configure">CC="gcc -m32" \
./configure --host=i686-pc-linux-gnu \
--prefix=/usr \
--bindir=/usr/sbin \
--libdir=/usr/lib32 \
--sysconfdir=/etc \
--disable-manpages \
--disable-static</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
rm -rf DESTDIR</userinput></screen>
</sect2><!-- m32 -->
<!-- - - - - - - - - - -->
<!-- Multilib - x32bit -->
<!-- - - - - - - - - - -->
<sect2 arch="ml_x32,ml_all" role="installation">
<title>Installation of Eudev - x32bit</title>
<para>Clean previous build:</para>
<screen><userinput remap="pre">make distclean</userinput></screen>
<para>Prepare Eudev for compilation:</para>
<screen><userinput remap="configure">CC="gcc -mx32" \
./configure --host=x86_64-lfs-linux-gnux32 \
--prefix=/usr \
--bindir=/usr/sbin \
--libdir=/usr/libx32 \
--sysconfdir=/etc \
--disable-manpages \
--disable-static</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
rm -rf DESTDIR</userinput></screen>
</sect2><!-- mx32 -->
<sect2 id="conf-eudev" role="configuration">
<title>Configuring Eudev</title>
<indexterm zone="conf-eudev">
<primary sortas="a-Eudev">Eudev</primary>
<secondary>configuring</secondary>
</indexterm>
<indexterm zone="conf-eudev">
<primary sortas="e-/etc/udev/rules.d/65-kvm.rules">/etc/udev/rules.d/65-kvm.rules</primary>
</indexterm>
<para>
The default udev rule installed by Eudev would allow all users to
access <filename class='devicefile'>/dev/kvm</filename>. The editors
consider it dangerous. Create a configuration file to override it:
</para>
<screen><userinput>cat > /etc/udev/rules.d/65-kvm.rules &lt;&lt; "EOF"
<literal>KERNEL=="kvm", GROUP="kvm", MODE="0660", TAG+="uaccess"</literal>
EOF</userinput></screen>
<indexterm zone="conf-eudev">
<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>Eudev</application> needs that information to be compiled
into a binary database <filename>/etc/udev/hwdb.bin</filename>. Create the
initial database:</para>
<screen><userinput>udevadm hwdb --update</userinput></screen>
<para>This command needs to be run each time the hardware information is
updated.</para>
</sect2>
<sect2 id="contents-eudev" role="content">
<title>Contents of Eudev</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<segtitle>Installed directories</segtitle>
<seglistitem>
<seg><!-- These are in /usr/lib/udev and not to be called by the user:
accelerometer, ata_id, cdrom_id, collect, mtd_probe,
scsi_id, v4l_id,--> udevadm and udevd</seg>
<seg>libudev.so</seg>
<seg>/etc/udev, /usr/lib/udev, and /usr/share/doc/udev-&udev-lfs-version;</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-eudev 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-eudev udevd">
<primary sortas="b-udevd">udevd</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-eudev 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-eudev etc-udev">
<primary sortas="e-/etc/udev">/etc/udev</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -5,7 +5,7 @@
%general-entities;
]>
<sect1 id="ch-system-jinja2" role="wrap" revision="systemd">
<sect1 id="ch-system-jinja2" role="wrap">
<?dbhtml filename="jinja2.html"?>
<sect1info condition="script">

View File

@ -40,6 +40,12 @@
<sect2 role="installation">
<title>Installation of Man-pages</title>
<para>Remove two man pages for password hashing functions.
<application>Libxcrypt</application> will provide a better version
of these man pages:</para>
<screen><userinput remap="pre">rm -v man3/crypt*</userinput></screen>
<para>Install Man-pages by running:</para>
<screen><userinput remap="install">make prefix=/usr install</userinput></screen>

View File

@ -5,7 +5,7 @@
%general-entities;
]>
<sect1 id="ch-system-markupsafe" role="wrap" revision="systemd">
<sect1 id="ch-system-markupsafe" role="wrap">
<?dbhtml filename="markupsafe.html"?>
<sect1info condition="script">

269
chapter08/udev.xml Normal file
View File

@ -0,0 +1,269 @@
<?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>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 \
..</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>
</variablelist>
<para>Only build the components needed for udev:</para>
<screen><userinput remap="make">ninja udevadm systemd-hwdb \
$(grep -o -E "^build (src/libudev|src/udev|rules.d|hwdb.d)[^:]*" \
build.ninja | awk '{ print $2 }') \
$(realpath libudev.so --relative-to .)</userinput></screen>
<para>Remove one udev rule file requiring a full Systemd
installation:</para>
<screen><userinput remap="make">rm rules.d/90-vconsole.rules</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">install -vm755 -d {/usr/lib,/etc}/udev/{hwdb,rules}.d
install -vm755 -d /usr/{lib,share}/pkgconfig
install -vm755 udevadm /usr/bin/
install -vm755 systemd-hwdb /usr/bin/udev-hwdb
ln -sv ../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/{*.rules,README} /usr/lib/udev/rules.d/
install -vm644 hwdb.d/* ../hwdb.d/{*.hwdb,README} /usr/lib/udev/hwdb.d/
install -vm755 $(find src/udev -type f | grep -F -v ".") /usr/lib/udev</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-253.tar.xz --strip-components=1 \
-C /usr/share/man --wildcards '*/udev*' '*/libudev*' \
'*/systemd-'{hwdb,udevd.service}.8
sed 's/systemd\(\\\?-\)/udev-/' /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/man8/systemd-*.8</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>

View File

@ -37,7 +37,7 @@
<para>The interface names depend on the implementation and
configuration of the udev daemon running on the system. The udev
daemon for LFS (installed in <xref linkend="ch-system-eudev"/>) will
daemon for LFS (installed in <xref linkend="ch-system-udev"/>) will
not run until the LFS system is booted. So the interface names
in the LFS system cannot always be determined by running
those commands on the host distro,

View File

@ -16,7 +16,7 @@
</indexterm>
<para>In <xref linkend="chapter-building-system"/>, we installed the udev
daemon when <phrase revision="sysv">eudev</phrase>
daemon when <phrase revision="sysv">udev</phrase>
<phrase revision="systemd">systemd</phrase> was built. Before we go into the
details regarding how udev works, a brief history of previous methods of
handling devices is in order.</para>

View File

@ -338,7 +338,7 @@ Device Drivers ---&gt;
<term><parameter>Support for uevent helper</parameter></term>
<listitem>
<para>Having this option set may interfere with device
management when using Udev/Eudev. </para>
management when using Udev.</para>
</listitem>
</varlistentry>
@ -348,7 +348,7 @@ Device Drivers ---&gt;
<para>This will create automated device nodes which are populated by the
kernel, even without Udev running. Udev then runs on top of this,
managing permissions and adding symlinks. This configuration
item is required for all users of Udev/Eudev.</para>
item is required for all users of Udev.</para>
</listitem>
</varlistentry>

View File

@ -124,7 +124,6 @@ if ( $package == "e2fsprogs" ) $dirpath = "https://sourceforge.net/projects/e2f
if ( $package == "expat" ) $dirpath = "https://sourceforge.net/projects/expat/files";
if ( $package == "elfutils" ) $dirpath = "https://sourceware.org/ftp/elfutils";
if ( $package == "expect" ) $dirpath = "https://sourceforge.net/projects/expect/files";
if ( $package == "eudev" ) $dirpath = github("eudev-project/eudev");
if ( $package == "file" ) $dirpath = "https://github.com/file/file/tags";
if ( $package == "flex" ) $dirpath = github("westes/flex");
if ( $package == "flit_core" ) $dirpath = "https://pypi.org/project/flit-core/";

View File

@ -156,13 +156,6 @@
<!ENTITY elfutils-fin-du "120 MB">
<!ENTITY elfutils-fin-sbu "0.3 SBU">
<!ENTITY eudev-version "3.2.12">
<!ENTITY eudev-size "2,145 KB">
<!ENTITY eudev-url "https://github.com/eudev-project/eudev/releases/download/v&eudev-version;/eudev-&eudev-version;.tar.gz">
<!ENTITY eudev-md5 "6f1559ca7c27013ff68816e2732498a3">
<!ENTITY eudev-fin-du "83 MB">
<!ENTITY eudev-fin-sbu "0.1 SBU">
<!ENTITY expat-version "2.5.0">
<!ENTITY expat-size "450 KB">
<!ENTITY expat-url "&sourceforge;expat/expat-&expat-version;.tar.xz">
@ -399,7 +392,7 @@
<!ENTITY less-fin-du "4.3 MB">
<!ENTITY less-fin-sbu "less than 0.1 SBU">
<!ENTITY lfs-bootscripts-version "20230101"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-version "20230716"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-size "BOOTSCRIPTS-SIZE KB">
<!ENTITY lfs-bootscripts-url "&downloads-root;lfs-bootscripts-&lfs-bootscripts-version;.tar.xz">
<!ENTITY lfs-bootscripts-md5 "BOOTSCRIPTS-MD5SUM">
@ -722,6 +715,9 @@
<!ENTITY tzdata-md5 "5aa672bf129b44dd915f8232de38e49a">
<!ENTITY tzdata-home "https://www.iana.org/time-zones">
<!ENTITY udev-fin-du "130 MB">
<!ENTITY udev-fin-sbu "0.2 SBU">
<!ENTITY udev-lfs-version "udev-lfs-20171102">
<!ENTITY udev-lfs-size "11 KB">
<!ENTITY udev-lfs-url "&anduin-sources;/&udev-lfs-version;.tar.xz">

View File

@ -138,7 +138,7 @@
</listitem>
<listitem revision="sysv">
<para>Eudev</para>
<para>Udev</para>
<para>This package is a device manager. It dynamically controls the ownership,
permissions, names, and symbolic links of device nodes in the /dev directory when
@ -233,7 +233,7 @@
<para>This package produces a program that generates a perfect hash
function from a set of keys. It is required by
<phrase revision='sysv'>Eudev</phrase>
<phrase revision='sysv'>Udev</phrase>
<phrase revision='systemd'>Systemd</phrase>.</para>
</listitem>