diff --git a/chapter08/libelf.xml b/chapter08/libelf.xml index 8873315..6d26845 100644 --- a/chapter08/libelf.xml +++ b/chapter08/libelf.xml @@ -14,7 +14,7 @@
&elfutils-url;
- Libelf from Elfutils-&elfutils-version; + Libelf из Elfutils-&elfutils-version; Libelf diff --git a/chapter08/stripping.xml b/chapter08/stripping.xml index 06dfcc5..dfaa233 100644 --- a/chapter08/stripping.xml +++ b/chapter08/stripping.xml @@ -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 diff --git a/chapter08/systemd.xml b/chapter08/systemd.xml index 4a7f5c7..507a92b 100644 --- a/chapter08/systemd.xml +++ b/chapter08/systemd.xml @@ -39,11 +39,6 @@ Установка systemd - - Во-первых, исправьте проблему безопасности в systemd-coredump: - -patch -Np1 -i ../&systemd-upstream-patch; - Удалите две ненужные группы render и sgx, из правил udev по умолчанию: @@ -56,7 +51,8 @@ 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; \ .. @@ -139,7 +136,7 @@ meson --prefix=/usr \ -D{userdb,homed}=false - Удаляет две службы, чьи зависимости не удовлетворяет LFS. + Удаляет две службы, чьи зависимости не удовлетворяют LFS. @@ -166,6 +163,15 @@ meson --prefix=/usr \ Предотвращает установку файла конфигурации PAM, который не работает в LFS. + + + -Ddev-kvm-mode=0660 + + По умолчанию правило udev разрешает всем пользователям доступ к + /dev/kvm. Редакторы LFS считают + это опасным. Данная опция переопределяет разрешение по умолчанию. + + Скомпилируйте пакет: @@ -180,9 +186,11 @@ meson --prefix=/usr \ -tar -xf ../../systemd-man-pages-&systemd-man-version;.tar.xz --strip-components=1 -C /usr/share/man +tar -xf ../../systemd-man-pages-&systemd-version;.tar.xz \ + --no-same-owner --strip-components=1 \ + -C /usr/share/man - Создайте файл /etc/machine-id необходимый + Создайте файл /etc/machine-id необходимый systemd-journald: systemd-machine-id-setup @@ -220,12 +228,14 @@ meson --prefix=/usr \ busctl, coredumpctl, halt (символическая ссылка на systemctl), hostnamectl, init, journalctl, kernel-install, localectl, loginctl, - machinectl, networkctl, oomctl, portablectl, poweroff (символическая ссылка на - systemctl), reboot (символическая ссылка на systemctl), resolvconf (символическая ссылка на + 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 \ + + systemd-ac-power + + Сообщает, подключена ли система к внешнему источнику питания. + + systemd-ac-power + + + + systemd-analyze diff --git a/chapter08/tar.xml b/chapter08/tar.xml index fd55bab..7c444ae 100644 --- a/chapter08/tar.xml +++ b/chapter08/tar.xml @@ -73,9 +73,16 @@ make check + + Время тестирования Tar можно значительно сократить в системе с + несколькими ядрами. Для этого добавьте TESTSUITEFLAGS=-j<N> + к строке выше. Например, использование -j4 может сократить время тестирования + более чем на 70 процентов. + Известно, что один тест, capabilities: binary store/restore, завершается - неудачей при запуске, потому что в LFS отсутствует selinux, он будет пропущен, если ядро - хоста не поддерживает расширенные атрибуты файловой системы, используемой для сборки LFS. + ошибкой при запуске, потому что в LFS отсутствует selinux, он будет пропущен, если + ядро хоста не поддерживает расширенные атрибуты или метки безопасности файловой + системы, используемой для сборки LFS. Установите пакет: diff --git a/chapter08/udev.xml b/chapter08/udev.xml new file mode 100644 index 0000000..49fd3f8 --- /dev/null +++ b/chapter08/udev.xml @@ -0,0 +1,264 @@ + + + %general-entities; +]> + + + + + + udev + &systemd-version; +
&systemd-url;
+
+ + Udev из Systemd-&systemd-version; + + + Udev + + + + + + <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 + + Udev является частью пакета systemd-&systemd-version;. Используйте файл + systemd-&systemd-version;.tar.xz в качестве исходного архива. + + Удалите две ненужные группы + render и + sgx, из правил udev по умолчанию: + + sed -i -e 's/GROUP="render"/GROUP="video"/' \ + -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in + + Удалите одно правило udev, требующее полной установки Systemd: + + sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in + + Подготовьте Udev к компиляции: + +mkdir -p build +cd build + +meson setup \ + --prefix=/usr \ + --buildtype=release \ + -Dmode=release \ + -Ddev-kvm-mode=0660 \ + -Dlink-udev-shared=false \ + .. + + + Значение параметров meson: + + + --buildtype=release + + Этот параметр переопределяет тип сборки по умолчанию (debug), + который создает неоптимизированные двоичные файлы. + + + + + -Dmode=release + + Отключает некоторые функции, которые разработчики считают экспериментальными. + + + + + + -Ddev-kvm-mode=0660 + + По умолчанию правило udev разрешает всем пользователям доступ к + /dev/kvm. Редакторы LFS считают + это опасным. Данная опция переопределяет разрешение по умолчанию. + + + + + -Dlink-udev-shared=false + + Эта опция запрещает udev связываться с внутренней общей библиотекой + systemd libsystemd-shared. Эта + библиотека предназначена для совместного использования многими компонентами + Systemd, и ее использование избыточно, когда установлен только udev + + + + + Соберите только компоненты, необходимые для udev: + + 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 .) + + Удалите один файл правил udev, требующий полной установки Systemd: + +rm rules.d/90-vconsole.rules + + Установите пакет: + + 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 + + Установите некоторые пользовательские правила и файлы поддержки, + полезные в среде LFS: + +tar -xvf ../../&udev-lfs-version;.tar.xz +make -f &udev-lfs-version;/Makefile.lfs 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 + + + + + Настройка Udev + + + Udev + configuring + + + + /etc/udev/hwdb.bin + + + Информация об аппаратных устройствах хранится в каталогах + /etc/udev/hwdb.d и + /usr/lib/udev/hwdb.d. + Udev необходимо, чтобы эта информация была скомпилирована + в двоичную базу данных /etc/udev/hwdb.bin. Создайте исходную + базу данных: + +udev-hwdb update + + Эту команду необходимо запускать каждый раз при обновлении информации об + оборудовании. + + + + + Содержимое пакета Udev + + + Установленные программы + Установленные библиотеки + Созданные каталоги + + + udevadm, udevd (символическая ссылка на udevadm) и udev-hwdb + + libudev.so + + /etc/udev и /usr/lib/udev + + + + + Short Descriptions + + + + udevadm + + Универсальный инструмент администрирования udev: управляет демоном + udevd, предоставляет информацию из базы данных Udev, отслеживает uevents, + ожидает завершения uevents, проверяет конфигурацию Udev и запускает + uevents для данного устройства + + udevadm + + + + + + udevd + + Демон, который прослушивает uevents в сокете netlink, создает устройства + и запускает настроенные внешние программы в ответ на эти uevents + + udevd + + + + + + udev-hwdb + + Обновляет или запрашивает базу данных оборудования + + udev-hwdb + + + + + + libudev + + Библиотека для получения информации об устройствах udev + + libudev + + + + + + /etc/udev + + Содержит файлы конфигурации Udev, разрешения для устройств и правила + именования устройств + + /etc/udev + + + + + + + + +
diff --git a/chapter08/util-linux.xml b/chapter08/util-linux.xml index 4cba1b0..63f18cd 100644 --- a/chapter08/util-linux.xml +++ b/chapter08/util-linux.xml @@ -41,11 +41,16 @@ Установка пакета Util-linux + Сначала отключите проблемные тесты: + + sed -i '/test_mkfds/s/^/#/' tests/helpers/Makemodule.am + Подготовьте Util-linux к компиляции: ./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 @@ ./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" Тесты с жесткими ссылками завершатся неудачей, если в ядре хоста - не установлена опция CONFIG_CRYPTO_USER_API_HASH. Кроме того, известно, что два подтеста из - misc: mbsencode и один подтест из script: replay не проходят. + не включена опция или не включено никаких опций, + обеспечивающих реализацию SHA256 (например, или + , если процессор поддерживает инструкции SSE3). + Кроме того, известно, что два подтеста из misc: mbsencode и один подтест из script: replay + не проходят. Установите пакет: diff --git a/chapter08/wheel.xml b/chapter08/wheel.xml index d2eed4a..cb8c348 100644 --- a/chapter08/wheel.xml +++ b/chapter08/wheel.xml @@ -42,63 +42,12 @@ Скомпилируйте Wheel с помощью следующей команды: -PYTHONPATH=src pip3 wheel -w dist --no-build-isolation --no-deps $PWD +pip3 wheel -w dist --no-build-isolation --no-deps $PWD Установите Wheel: pip3 install --no-index --find-links=dist wheel - - Значение параметров конфигурации и команд pip3: - - - PYTHONPATH=src - - Позволяет этому пакету (еще не установленному) создавать для себя архив wheel. - - - - - wheel - - Эта команда создает архив wheel для этого пакета. - - - - - -w dist - - Указывает pip поместить созданный архив в каталог - dist. - - - - - install - - Эта команда устанавливает пакет. - - - - - --no-build-isolation, - --no-deps и - --no-index - - Эти параметры предотвращают получение файлов из онлайн-репозитория пакетов (PyPI). - Если пакеты установлены в правильном порядке, то нет необходимости загружать - какие-либо файлы; эти параметры усиливают безопасность в случае ошибки пользователя. - - - - - --find-links dist - - Указывает pip искать архивы wheel в каталоге - dist. - - -