summaryrefslogtreecommitdiff
path: root/lfs-12.0-sysv/chapter08/udev.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.0-sysv/chapter08/udev.html')
-rw-r--r--lfs-12.0-sysv/chapter08/udev.html366
1 files changed, 366 insertions, 0 deletions
diff --git a/lfs-12.0-sysv/chapter08/udev.html b/lfs-12.0-sysv/chapter08/udev.html
new file mode 100644
index 0000000..a55d603
--- /dev/null
+++ b/lfs-12.0-sysv/chapter08/udev.html
@@ -0,0 +1,366 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ 8.74. Udev из Systemd-254
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Глава 8. Установка базового системного программного обеспечения
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="jinja2.html" title="Jinja2-3.1.2">Пред.</a>
+ <p>
+ Jinja2-3.1.2
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="man-db.html" title="Man-DB-2.11.2">След.</a>
+ <p>
+ Man-DB-2.11.2
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter08.html" title=
+ "Глава 8. Установка базового системного программного обеспечения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ch-system-udev" name="ch-system-udev"></a>8.74. Udev из
+ Systemd-254
+ </h1>
+ <div class="package" lang="en" xml:lang="en">
+ <p>
+ Пакет Udev содержит программы для динамического создания узлов
+ устройств.
+ </p>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Приблизительное время сборки:</strong>
+ <span class="segbody">0.2 SBU</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Требуемое дисковое
+ пространство:</strong> <span class="segbody">138 MB</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="installation" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ 8.74.1. Установка пакета Udev
+ </h2>
+ <p>
+ Udev является частью пакета systemd-254. Используйте файл
+ systemd-254.tar.xz в качестве исходного архива.
+ </p>
+ <p>
+ Удалите две ненужные группы <code class="systemitem">render</code>
+ и <code class="systemitem">sgx</code>, из правил udev по умолчанию:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">sed -i -e 's/GROUP="render"/GROUP="video"/' \
+ -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in</kbd></pre>
+ <p>
+ Удалите одно правило udev, требующее полной установки Systemd:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in</kbd></pre>
+ <p>
+ Подготовьте Udev к компиляции:
+ </p>
+ <pre class="userinput"><kbd class="command">mkdir -p build
+cd build
+
+meson setup \
+ --prefix=/usr \
+ --buildtype=release \
+ -Dmode=release \
+ -Ddev-kvm-mode=0660 \
+ -Dlink-udev-shared=false \
+ ..</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значение параметров meson:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--buildtype=release</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр переопределяет тип сборки по умолчанию
+ (<span class="quote">«<span class=
+ "quote">debug</span>»</span>), который создает
+ неоптимизированные двоичные файлы.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>-Dmode=release</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Отключает некоторые функции, которые разработчики считают
+ экспериментальными.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>-Ddev-kvm-mode=0660</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ По умолчанию правило udev разрешает всем пользователям доступ
+ к <code class="filename">/dev/kvm</code>. Редакторы LFS
+ считают это опасным. Данная опция переопределяет разрешение
+ по умолчанию.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>-Dlink-udev-shared=false</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Эта опция запрещает udev связываться с внутренней общей
+ библиотекой systemd <code class=
+ "systemitem">libsystemd-shared</code>. Эта библиотека
+ предназначена для совместного использования многими
+ компонентами Systemd, и ее использование избыточно, когда
+ установлен только udev
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Соберите только компоненты, необходимые для udev:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">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 .)</kbd></pre>
+ <p>
+ Удалите один файл правил udev, требующий полной установки Systemd:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">rm rules.d/90-vconsole.rules</kbd></pre>
+ <p>
+ Установите пакет:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">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 -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/{*.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</kbd></pre>
+ <p>
+ Установите некоторые пользовательские правила и файлы поддержки,
+ полезные в среде LFS:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">tar -xvf ../../udev-lfs-20230818.tar.xz
+make -f udev-lfs-20230818/Makefile.lfs install</kbd></pre>
+ <p>
+ Установите справочные страницы:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">tar -xf ../../systemd-man-pages-254.tar.xz \
+ --no-same-owner --strip-components=1 \
+ -C /usr/share/man --wildcards '*/udev*' '*/libudev*' \
+ '*/systemd-'{hwdb,udevd.service}.8
+sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8 \
+ &gt; /usr/share/man/man8/udev-hwdb.8
+sed 's|lib.*udevd|sbin/udevd|' \
+ /usr/share/man/man8/systemd-udevd.service.8 \
+ &gt; /usr/share/man/man8/udevd.8
+rm /usr/share/man/man8/systemd-*.8</kbd></pre>
+ </div>
+ <div class="configuration" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ <a id="conf-udev" name="conf-udev"></a>8.74.2. Настройка Udev
+ </h2>
+ <p>
+ Информация об аппаратных устройствах хранится в каталогах
+ <code class="filename">/etc/udev/hwdb.d</code> и <code class=
+ "filename">/usr/lib/udev/hwdb.d</code>. <span class=
+ "application">Udev</span> необходимо, чтобы эта информация была
+ скомпилирована в двоичную базу данных <code class=
+ "filename">/etc/udev/hwdb.bin</code>. Создайте исходную базу
+ данных:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">udev-hwdb update</kbd></pre>
+ <p>
+ Эту команду необходимо запускать каждый раз при обновлении
+ информации об оборудовании.
+ </p>
+ </div>
+ <div class="content" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ <a id="contents-udev" name="contents-udev"></a>8.74.3. Содержимое
+ пакета Udev
+ </h2>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Установленные программы:</strong>
+ <span class="segbody">udevadm, udevd (символическая ссылка на
+ udevadm) и udev-hwdb</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Установленные библиотеки:</strong>
+ <span class="segbody">libudev.so</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Созданные каталоги:</strong>
+ <span class="segbody">/etc/udev и /usr/lib/udev</span>
+ </div>
+ </div>
+ </div>
+ <div class="variablelist">
+ <h3>
+ Short Descriptions
+ </h3>
+ <table border="0" class="variablelist">
+ <colgroup>
+ <col align="left" valign="top" />
+ <col />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <p>
+ <a id="udevadm" name="udevadm"></a><span class=
+ "term"><span class=
+ "command"><strong>udevadm</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Универсальный инструмент администрирования udev:
+ управляет демоном udevd, предоставляет информацию из базы
+ данных Udev, отслеживает uevents, ожидает завершения
+ uevents, проверяет конфигурацию Udev и запускает uevents
+ для данного устройства
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="udevd" name="udevd"></a><span class=
+ "term"><span class=
+ "command"><strong>udevd</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Демон, который прослушивает uevents в сокете netlink,
+ создает устройства и запускает настроенные внешние
+ программы в ответ на эти uevents
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="udev-hwdb" name="udev-hwdb"></a><span class=
+ "term"><span class=
+ "command"><strong>udev-hwdb</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Обновляет или запрашивает базу данных оборудования
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libudev" name="libudev"></a><span class=
+ "term"><code class="filename">libudev</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека для получения информации об устройствах udev
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="etc-udev" name="etc-udev"></a><span class=
+ "term"><code class="filename">/etc/udev</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Содержит файлы конфигурации Udev, разрешения для
+ устройств и правила именования устройств
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="jinja2.html" title="Jinja2-3.1.2">Пред.</a>
+ <p>
+ Jinja2-3.1.2
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="man-db.html" title="Man-DB-2.11.2">След.</a>
+ <p>
+ Man-DB-2.11.2
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter08.html" title=
+ "Глава 8. Установка базового системного программного обеспечения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>