Translated pages from chapter 8

This commit is contained in:
Poltern 2023-09-02 02:00:11 +05:00
parent 0198ef0dbc
commit d8c9bd7cb3
7 changed files with 320 additions and 71 deletions

View File

@ -14,7 +14,7 @@
<address>&elfutils-url;</address>
</sect1info>
<title>Libelf from Elfutils-&elfutils-version;</title>
<title>Libelf из Elfutils-&elfutils-version;</title>
<indexterm zone="ch-system-libelf">
<primary sortas="a-Libelf">Libelf</primary>

View File

@ -83,7 +83,7 @@ done
online_usrbin="bash find strip"
online_usrlib="libbfd-&binutils-version;.so
libsframe.so.0.0.0
libsframe.so.&libsframe-version;
libhistory.so.&readline-soversion;
libncursesw.so.&ncurses-version;
libm.so.6

View File

@ -39,11 +39,6 @@
<sect2 role="installation">
<title>Установка systemd</title>
<para>Во-первых, исправьте проблему безопасности в systemd-coredump:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&systemd-upstream-patch;</userinput></screen>
<para>Удалите две ненужные группы
<systemitem class="groupname">render</systemitem> и
<systemitem class="groupname">sgx</systemitem>, из правил udev по умолчанию:</para>
@ -56,7 +51,8 @@
<screen><userinput remap="configure">mkdir -p build
cd build
meson --prefix=/usr \
meson setup \
--prefix=/usr \
--buildtype=release \
-Ddefault-dnssec=no \
-Dfirstboot=false \
@ -69,6 +65,7 @@ meson --prefix=/usr \
-Dman=false \
-Dmode=release \
-Dpamconfdir=no \
-Ddev-kvm-mode=0660 \
-Ddocdir=/usr/share/doc/systemd-&systemd-version; \
..</userinput></screen>
@ -139,7 +136,7 @@ meson --prefix=/usr \
<varlistentry>
<term><parameter>-D{userdb,homed}=false</parameter></term>
<listitem>
<para>Удаляет две службы, чьи зависимости не удовлетворяет LFS.</para>
<para>Удаляет две службы, чьи зависимости не удовлетворяют LFS.</para>
</listitem>
</varlistentry>
@ -166,6 +163,15 @@ meson --prefix=/usr \
<para>Предотвращает установку файла конфигурации PAM, который не работает в LFS.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Ddev-kvm-mode=0660</parameter></term>
<listitem>
<para>По умолчанию правило udev разрешает всем пользователям доступ к
<filename class='devicefile'>/dev/kvm</filename>. Редакторы LFS считают
это опасным. Данная опция переопределяет разрешение по умолчанию.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Скомпилируйте пакет:</para>
@ -180,7 +186,9 @@ meson --prefix=/usr \
<!-- Please make sure systemd man pages tarball has a common leading
component in the path. -->
<screen><userinput remap="install">tar -xf ../../systemd-man-pages-&systemd-man-version;.tar.xz --strip-components=1 -C /usr/share/man</userinput></screen>
<screen><userinput remap="install">tar -xf ../../systemd-man-pages-&systemd-version;.tar.xz \
--no-same-owner --strip-components=1 \
-C /usr/share/man</userinput></screen>
<para>Создайте файл <filename>/etc/machine-id</filename> необходимый
<command>systemd-journald</command>:</para>
@ -220,12 +228,14 @@ meson --prefix=/usr \
<seglistitem>
<seg>busctl, coredumpctl, halt (символическая ссылка на systemctl),
hostnamectl, init, journalctl, kernel-install, localectl, loginctl,
machinectl, networkctl, oomctl, portablectl, poweroff (символическая ссылка на
machinectl, mount.ddi (символическая ссылка на systemd-dissect), networkctl,
oomctl, portablectl, poweroff (символическая ссылка на
systemctl), reboot (символическая ссылка на systemctl), resolvconf (символическая ссылка на
resolvectl), resolvectl, runlevel (символическая ссылка на systemctl), shutdown
(символическая ссылка на systemctl), systemctl, systemd-analyze,
(символическая ссылка на systemctl), systemctl, systemd-ac-power, systemd-analyze,
systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop,
systemd-creds, systemd-delta, systemd-detect-virt,
systemd-confext (символическая ссылка на systemd-sysext), systemd-creds,
systemd-delta, systemd-detect-virt,
systemd-dissect, systemd-escape, systemd-hwdb, systemd-id128,
systemd-inhibit, systemd-machine-id-setup,
systemd-mount, systemd-notify, systemd-nspawn, systemd-path,
@ -467,6 +477,16 @@ meson --prefix=/usr \
</listitem>
</varlistentry>
<varlistentry id="systemd-ac-power">
<term><command>systemd-ac-power</command></term>
<listitem>
<para>Сообщает, подключена ли система к внешнему источнику питания.</para>
<indexterm zone="ch-system-systemd systemd-ac-power">
<primary sortas="b-systemd-ac-power">systemd-ac-power</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="systemd-analyze">
<term><command>systemd-analyze</command></term>
<listitem>

View File

@ -73,9 +73,16 @@
<screen><userinput remap="test">make check</userinput></screen>
<!-- On one system the -j4 improvement is 167s - 46s = 121s (72.46%) -->
<note><para>Время тестирования Tar можно значительно сократить в системе с
несколькими ядрами. Для этого добавьте <command>TESTSUITEFLAGS=-j&lt;N&gt;</command>
к строке выше. Например, использование -j4 может сократить время тестирования
более чем на 70 процентов.</para></note>
<para>Известно, что один тест, capabilities: binary store/restore, завершается
неудачей при запуске, потому что в LFS отсутствует selinux, он будет пропущен, если ядро
хоста не поддерживает расширенные атрибуты файловой системы, используемой для сборки LFS.</para>
ошибкой при запуске, потому что в LFS отсутствует selinux, он будет пропущен, если
ядро хоста не поддерживает расширенные атрибуты или метки безопасности файловой
системы, используемой для сборки LFS.</para>
<para>Установите пакет:</para>

264
chapter08/udev.xml Normal file
View File

@ -0,0 +1,264 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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 из Systemd-&systemd-version;</title>
<indexterm zone="ch-system-udev">
<primary sortas="a-Udev">Udev</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>Пакет Udev содержит программы для динамического создания узлов устройств.</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>Установка пакета Udev</title>
<para>Udev является частью пакета systemd-&systemd-version;. Используйте файл
systemd-&systemd-version;.tar.xz в качестве исходного архива.</para>
<para>Удалите две ненужные группы
<systemitem class="groupname">render</systemitem> и
<systemitem class="groupname">sgx</systemitem>, из правил udev по умолчанию:</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>Удалите одно правило udev, требующее полной установки Systemd:</para>
<screen><userinput remap="pre">sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in</userinput></screen>
<para>Подготовьте Udev к компиляции:</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>Значение параметров meson:</title>
<varlistentry>
<term><parameter>--buildtype=release</parameter></term>
<listitem>
<para>Этот параметр переопределяет тип сборки по умолчанию (<quote>debug</quote>),
который создает неоптимизированные двоичные файлы.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Dmode=release</parameter></term>
<listitem>
<para>Отключает некоторые функции, которые разработчики считают экспериментальными.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Ddev-kvm-mode=0660</parameter></term>
<listitem>
<para>По умолчанию правило udev разрешает всем пользователям доступ к
<filename class='devicefile'>/dev/kvm</filename>. Редакторы LFS считают
это опасным. Данная опция переопределяет разрешение по умолчанию.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Dlink-udev-shared=false</parameter></term>
<listitem>
<para>Эта опция запрещает udev связываться с внутренней общей библиотекой
systemd <systemitem class='library'>libsystemd-shared</systemitem>. Эта
библиотека предназначена для совместного использования многими компонентами
Systemd, и ее использование избыточно, когда установлен только udev</para>
</listitem>
</varlistentry>
</variablelist>
<para>Соберите только компоненты, необходимые для 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>Удалите один файл правил udev, требующий полной установки Systemd:</para>
<screen><userinput remap="make">rm rules.d/90-vconsole.rules</userinput></screen>
<para>Установите пакет:</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 -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</userinput></screen>
<para>Установите некоторые пользовательские правила и файлы поддержки,
полезные в среде LFS:</para>
<screen><userinput remap="install">tar -xvf ../../&udev-lfs-version;.tar.xz
make -f &udev-lfs-version;/Makefile.lfs install</userinput></screen>
<para>Установите справочные страницы:</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-&systemd-man-version;.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 \
> /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>Настройка 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>Информация об аппаратных устройствах хранится в каталогах
<filename class="directory">/etc/udev/hwdb.d</filename> и
<filename class="directory">/usr/lib/udev/hwdb.d</filename>.
<application>Udev</application> необходимо, чтобы эта информация была скомпилирована
в двоичную базу данных <filename>/etc/udev/hwdb.bin</filename>. Создайте исходную
базу данных:</para>
<screen><userinput>udev-hwdb update</userinput></screen>
<para>Эту команду необходимо запускать каждый раз при обновлении информации об
оборудовании.</para>
</sect2>
<sect2 id="contents-udev" role="content">
<title>Содержимое пакета Udev</title>
<segmentedlist>
<segtitle>Установленные программы</segtitle>
<segtitle>Установленные библиотеки</segtitle>
<segtitle>Созданные каталоги</segtitle>
<seglistitem>
<seg>udevadm, udevd (символическая ссылка на udevadm) и udev-hwdb</seg>
<seg>libudev.so</seg>
<seg>/etc/udev и /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>Универсальный инструмент администрирования udev: управляет демоном
udevd, предоставляет информацию из базы данных Udev, отслеживает uevents,
ожидает завершения uevents, проверяет конфигурацию Udev и запускает
uevents для данного устройства</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>Демон, который прослушивает uevents в сокете netlink, создает устройства
и запускает настроенные внешние программы в ответ на эти 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>Обновляет или запрашивает базу данных оборудования</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>Библиотека для получения информации об устройствах udev</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>Содержит файлы конфигурации Udev, разрешения для устройств и правила
именования устройств</para>
<indexterm zone="ch-system-udev etc-udev">
<primary sortas="e-/etc/udev">/etc/udev</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -41,11 +41,16 @@
<sect2 role="installation">
<title>Установка пакета Util-linux</title>
<para>Сначала отключите проблемные тесты:</para>
<screen><userinput remap="pre">sed -i '/test_mkfds/s/^/#/' tests/helpers/Makemodule.am</userinput></screen>
<para>Подготовьте Util-linux к компиляции:</para>
<screen revision="sysv"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
--bindir=/usr/bin \
--libdir=/usr/lib \
--runstatedir=/run \
--sbindir=/usr/sbin \
--disable-chfn-chsh \
--disable-login \
@ -63,6 +68,7 @@
<screen revision="systemd"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
--bindir=/usr/bin \
--libdir=/usr/lib \
--runstatedir=/run \
--sbindir=/usr/sbin \
--disable-chfn-chsh \
--disable-login \
@ -98,8 +104,11 @@
su tester -c "make -k check"</userinput></screen>
<para>Тесты с <emphasis>жесткими ссылками</emphasis> завершатся неудачей, если в ядре хоста
не установлена опция CONFIG_CRYPTO_USER_API_HASH. Кроме того, известно, что два подтеста из
misc: mbsencode и один подтест из script: replay не проходят.</para>
не включена опция <option>CONFIG_CRYPTO_USER_API_HASH</option> или не включено никаких опций,
обеспечивающих реализацию SHA256 (например, <option>CONFIG_CRYPTO_SHA256</option> или
<option>CONFIG_CRYPTO_SHA256_SSSE3</option>, если процессор поддерживает инструкции SSE3).
Кроме того, известно, что два подтеста из misc: mbsencode и один подтест из script: replay
не проходят.</para>
<para>Установите пакет:</para>

View File

@ -42,63 +42,12 @@
<para>Скомпилируйте Wheel с помощью следующей команды:</para>
<screen><userinput remap="make">PYTHONPATH=src pip3 wheel -w dist --no-build-isolation --no-deps $PWD</userinput></screen>
<screen><userinput remap="make">pip3 wheel -w dist --no-build-isolation --no-deps $PWD</userinput></screen>
<para>Установите Wheel:</para>
<screen><userinput remap="install">pip3 install --no-index --find-links=dist wheel</userinput></screen>
<variablelist>
<title>Значение параметров конфигурации и команд pip3:</title>
<varlistentry>
<term><envar>PYTHONPATH=src</envar></term>
<listitem>
<para>Позволяет этому пакету (еще не установленному) создавать для себя архив wheel.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>wheel</command></term>
<listitem>
<para>Эта команда создает архив wheel для этого пакета.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-w dist</parameter></term>
<listitem>
<para>Указывает pip поместить созданный архив в каталог
<filename class='directory'>dist</filename>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>install</command></term>
<listitem>
<para>Эта команда устанавливает пакет.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--no-build-isolation</parameter>,
<parameter>--no-deps</parameter> и
<parameter>--no-index</parameter></term>
<listitem>
<para>Эти параметры предотвращают получение файлов из онлайн-репозитория пакетов (PyPI).
Если пакеты установлены в правильном порядке, то нет необходимости загружать
какие-либо файлы; эти параметры усиливают безопасность в случае ошибки пользователя.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--find-links dist</parameter></term>
<listitem>
<para>Указывает pip искать архивы wheel в каталоге
<filename class='directory'>dist</filename>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="contents-wheel" role="content">