diff options
author | Xi Ruoyao <xry111@xry111.site> | 2023-07-16 11:02:09 +0800 |
---|---|---|
committer | Xi Ruoyao <xry111@xry111.site> | 2023-07-16 11:11:12 +0800 |
commit | a289860668ca293abca38227ae3a0721d2558688 (patch) | |
tree | fc7bdd895374ea85f8cae3312f6d994494fac61c | |
parent | c7ee38fb5ad62d2153980b4a2518cc5d527a1c86 (diff) |
Replace eudev with udev from systemd
-rw-r--r-- | appendices/udev-rules.xml | 2 | ||||
-rw-r--r-- | chapter01/changelog.xml | 4 | ||||
-rw-r--r-- | chapter01/whatsnew.xml | 14 | ||||
-rw-r--r-- | chapter03/packages.xml | 10 | ||||
-rw-r--r-- | chapter08/chapter08.xml | 2 | ||||
-rw-r--r-- | chapter08/eudev.xml | 202 | ||||
-rw-r--r-- | chapter08/udev.xml | 245 | ||||
-rw-r--r-- | chapter09/network.xml | 2 | ||||
-rw-r--r-- | packages.ent | 10 |
9 files changed, 267 insertions, 224 deletions
diff --git a/appendices/udev-rules.xml b/appendices/udev-rules.xml index d1ab70dcf..ca1a7c88b 100644 --- a/appendices/udev-rules.xml +++ b/appendices/udev-rules.xml @@ -13,7 +13,7 @@ <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> diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index e13faf328..18ac4f3f7 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -44,6 +44,10 @@ <para>2023-07-15</para> <itemizedlist> <listitem> + <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> </listitem> diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml index a2d4cc179..e2803d08c 100644 --- a/chapter01/whatsnew.xml +++ b/chapter01/whatsnew.xml @@ -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,10 @@ <title>Added:</title> <listitem><para></para></listitem> <!-- satisfy build --> + <listitem revision="sysv"> + <para>Udev-&systemd-version; (from systemd)</para> + </listitem> + <listitem> <para>Libxcrypt-&libxcrypt-version;</para> </listitem> @@ -334,6 +338,10 @@ <listitem><para></para></listitem> <!-- satisfy build --> <listitem> + <para>eudev-3.2.12</para> + </listitem> + + <listitem> <para>Pkg-config-0.29.2</para> </listitem> diff --git a/chapter03/packages.xml b/chapter03/packages.xml index 86932b428..30474944c 100644 --- a/chapter03/packages.xml +++ b/chapter03/packages.xml @@ -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> @@ -697,7 +689,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> diff --git a/chapter08/chapter08.xml b/chapter08/chapter08.xml index e97ae7057..3f356d39e 100644 --- a/chapter08/chapter08.xml +++ b/chapter08/chapter08.xml @@ -91,7 +91,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"/> diff --git a/chapter08/eudev.xml b/chapter08/eudev.xml deleted file mode 100644 index 785e70103..000000000 --- a/chapter08/eudev.xml +++ /dev/null @@ -1,202 +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> - - <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 << "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> diff --git a/chapter08/udev.xml b/chapter08/udev.xml new file mode 100644 index 000000000..c1e2af312 --- /dev/null +++ b/chapter08/udev.xml @@ -0,0 +1,245 @@ +<?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>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>Install the package:</para> + + <screen><userinput remap="install">install -vm755 -d {/usr/lib,/etc}/udev/{hwdb,rules}.d +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> + + </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 query 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> diff --git a/chapter09/network.xml b/chapter09/network.xml index e2d0a5edf..c86edf56a 100644 --- a/chapter09/network.xml +++ b/chapter09/network.xml @@ -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, diff --git a/packages.ent b/packages.ent index 8e0a2d222..ab075f7a4 100644 --- a/packages.ent +++ b/packages.ent @@ -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"> @@ -713,6 +706,9 @@ <!ENTITY tzdata-md5 "5aa672bf129b44dd915f8232de38e49a"> <!ENTITY tzdata-home "https://www.iana.org/time-zones"> +<!ENTITY udev-fin-du "83 MB"> +<!ENTITY udev-fin-sbu "0.1 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"> |