diff options
Diffstat (limited to 'lfs-12.1-sysv/chapter08/udev.html')
-rw-r--r-- | lfs-12.1-sysv/chapter08/udev.html | 406 |
1 files changed, 406 insertions, 0 deletions
diff --git a/lfs-12.1-sysv/chapter08/udev.html b/lfs-12.1-sysv/chapter08/udev.html new file mode 100644 index 0000000..fff3127 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/udev.html @@ -0,0 +1,406 @@ +<!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.75. Udev из Systemd-255 + </title> + <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" /> + <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /> + <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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </h4> + <h3> + Глава 8. Установка базового системного программного обеспечения + </h3> + <ul> + <li class="prev"> + <a accesskey="p" href="jinja2.html" title="Jinja2-3.1.3">Пред.</a> + <p> + Jinja2-3.1.3 + </p> + </li> + <li class="next"> + <a accesskey="n" href="man-db.html" title="Man-DB-2.12.0">След.</a> + <p> + Man-DB-2.12.0 + </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.1">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="ch-system-udev" name="ch-system-udev"></a>8.75. Udev из + Systemd-255 + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <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">144 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h2 class="sect2"> + 8.75.1. Установка пакета Udev + </h2> + <p> + Udev является частью пакета systemd-255. Используйте файл + systemd-255.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">sed '/NETWORK_DIRS/s/systemd/udev/' -i src/basic/path-lookup.h</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 \ + -Dlogind=false \ + -Dvconsole=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> + <dt> + <span class="term"><em class="parameter"><code>-Dlogind=false + -Dvconsole=false</code></em></span> + </dt> + <dd> + <p> + Эти параметры предотвращают создание нескольких файлов правил + udev, принадлежащих другим компонентам Systemd, которые мы не + будем устанавливать. + </p> + </dd> + </dl> + </div> + <p> + Получите список предоставляемых udev helpers и сохраните его в + переменной (экспортировать его не обязательно, но это упрощает + сборку от имени обычного пользователя или при использовании + менеджера пакетов): + </p> + <pre class="userinput"><kbd class= + "command">export udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \ + awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')</kbd></pre> + <p> + Соберите только компоненты, необходимые для udev: + </p> + <pre class="userinput"><kbd class= + "command">ninja udevadm systemd-hwdb \ + $(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \ + $(realpath libudev.so --relative-to .) \ + $udev_helpers</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">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</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-255.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*</kbd></pre> + <p> + Наконец, сбросьте значение переменной <code class= + "envar">udev_helpers</code>: + </p> + <pre class="userinput"><kbd class= + "command">unset udev_helpers</kbd></pre> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h2 class="sect2"> + <a id="conf-udev" name="conf-udev"></a>8.75.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="ru" xml:lang="ru"> + <h2 class="sect2"> + <a id="contents-udev" name="contents-udev"></a>8.75.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.3">Пред.</a> + <p> + Jinja2-3.1.3 + </p> + </li> + <li class="next"> + <a accesskey="n" href="man-db.html" title="Man-DB-2.12.0">След.</a> + <p> + Man-DB-2.12.0 + </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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> |