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> <address>&elfutils-url;</address>
</sect1info> </sect1info>
<title>Libelf from Elfutils-&elfutils-version;</title> <title>Libelf из Elfutils-&elfutils-version;</title>
<indexterm zone="ch-system-libelf"> <indexterm zone="ch-system-libelf">
<primary sortas="a-Libelf">Libelf</primary> <primary sortas="a-Libelf">Libelf</primary>

View File

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

View File

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

View File

@ -73,9 +73,16 @@
<screen><userinput remap="test">make check</userinput></screen> <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, завершается <para>Известно, что один тест, capabilities: binary store/restore, завершается
неудачей при запуске, потому что в LFS отсутствует selinux, он будет пропущен, если ядро ошибкой при запуске, потому что в LFS отсутствует selinux, он будет пропущен, если
хоста не поддерживает расширенные атрибуты файловой системы, используемой для сборки LFS.</para> ядро хоста не поддерживает расширенные атрибуты или метки безопасности файловой
системы, используемой для сборки LFS.</para>
<para>Установите пакет:</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"> <sect2 role="installation">
<title>Установка пакета Util-linux</title> <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> <para>Подготовьте Util-linux к компиляции:</para>
<screen revision="sysv"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ <screen revision="sysv"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
--bindir=/usr/bin \ --bindir=/usr/bin \
--libdir=/usr/lib \ --libdir=/usr/lib \
--runstatedir=/run \
--sbindir=/usr/sbin \ --sbindir=/usr/sbin \
--disable-chfn-chsh \ --disable-chfn-chsh \
--disable-login \ --disable-login \
@ -63,6 +68,7 @@
<screen revision="systemd"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ <screen revision="systemd"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
--bindir=/usr/bin \ --bindir=/usr/bin \
--libdir=/usr/lib \ --libdir=/usr/lib \
--runstatedir=/run \
--sbindir=/usr/sbin \ --sbindir=/usr/sbin \
--disable-chfn-chsh \ --disable-chfn-chsh \
--disable-login \ --disable-login \
@ -98,8 +104,11 @@
su tester -c "make -k check"</userinput></screen> su tester -c "make -k check"</userinput></screen>
<para>Тесты с <emphasis>жесткими ссылками</emphasis> завершатся неудачей, если в ядре хоста <para>Тесты с <emphasis>жесткими ссылками</emphasis> завершатся неудачей, если в ядре хоста
не установлена опция CONFIG_CRYPTO_USER_API_HASH. Кроме того, известно, что два подтеста из не включена опция <option>CONFIG_CRYPTO_USER_API_HASH</option> или не включено никаких опций,
misc: mbsencode и один подтест из script: replay не проходят.</para> обеспечивающих реализацию SHA256 (например, <option>CONFIG_CRYPTO_SHA256</option> или
<option>CONFIG_CRYPTO_SHA256_SSSE3</option>, если процессор поддерживает инструкции SSE3).
Кроме того, известно, что два подтеста из misc: mbsencode и один подтест из script: replay
не проходят.</para>
<para>Установите пакет:</para> <para>Установите пакет:</para>

View File

@ -42,63 +42,12 @@
<para>Скомпилируйте Wheel с помощью следующей команды:</para> <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> <para>Установите Wheel:</para>
<screen><userinput remap="install">pip3 install --no-index --find-links=dist wheel</userinput></screen> <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>
<sect2 id="contents-wheel" role="content"> <sect2 id="contents-wheel" role="content">