diff options
Diffstat (limited to 'chapter08')
-rw-r--r-- | chapter08/chapter08.xml | 2 | ||||
-rw-r--r-- | chapter08/eudev.xml | 202 | ||||
-rw-r--r-- | chapter08/jinja2.xml | 2 | ||||
-rw-r--r-- | chapter08/markupsafe.xml | 2 | ||||
-rw-r--r-- | chapter08/udev.xml | 269 |
5 files changed, 272 insertions, 205 deletions
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/jinja2.xml b/chapter08/jinja2.xml index 8fa12dd25..ca614ecdc 100644 --- a/chapter08/jinja2.xml +++ b/chapter08/jinja2.xml @@ -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"> diff --git a/chapter08/markupsafe.xml b/chapter08/markupsafe.xml index 27fdb1627..b4a0cbc58 100644 --- a/chapter08/markupsafe.xml +++ b/chapter08/markupsafe.xml @@ -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"> diff --git a/chapter08/udev.xml b/chapter08/udev.xml new file mode 100644 index 000000000..2d3792511 --- /dev/null +++ b/chapter08/udev.xml @@ -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> |