8.76. Systemd-255

Пакет systemd содержит программы для управления загрузкой, работой и выключением системы.

Приблизительное время сборки: 0.7 SBU
Требуемое дисковое пространство: 247 MB

8.76.1. Установка systemd

Удалите две ненужные группы render и sgx, из правил udev по умолчанию:

sed -i -e 's/GROUP="render"/GROUP="video"/' \
       -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in

Теперь исправьте уязвимость безопасности при проверке DNSSEC в systemd-resolved и ошибку запуска systemd-analyze verify у созданного экземпляра юнита systemd:

patch -Np1 -i ../systemd-255-upstream_fixes-1.patch

Подготовьте systemd к компиляции:

mkdir -p build
cd       build

meson setup \
      --prefix=/usr                 \
      --buildtype=release           \
      -Ddefault-dnssec=no           \
      -Dfirstboot=false             \
      -Dinstall-tests=false         \
      -Dldconfig=false              \
      -Dsysusers=false              \
      -Drpmmacrosdir=no             \
      -Dhomed=disabled              \
      -Duserdb=false                \
      -Dman=disabled                \
      -Dmode=release                \
      -Dpamconfdir=no               \
      -Ddev-kvm-mode=0660           \
      -Dnobody-group=nogroup        \
      -Dsysupdate=disabled          \
      -Dukify=disabled              \
      -Ddocdir=/usr/share/doc/systemd-255 \
      ..

Значение параметров meson:

--buildtype=release

Этот параметр переопределяет тип сборки по умолчанию («debug»), который создает неоптимизированные двоичные файлы.

-Ddefault-dnssec=no

Этот параметр отключает экспериментальную поддержку DNSSEC.

-Dfirstboot=false

Этот параметр предотвращает установку служб systemd, отвечающих за настройку системы при первом запуске. Они бесполезны в LFS, потому что всё делается вручную.

-Dinstall-tests=false

Этот параметр предотвращает установку скомпилированных тестов.

-Dldconfig=false

Этот параметр предотвращает установку юнита systemd, который запускает ldconfig при каждой загрузке системы. Это бесполезно для собранных из исходников дистрибутивов, таких как LFS, и замедляет загрузку. Удалите этот параметр, чтобы включить запуск ldconfig при загрузке.

-Dsysusers=false

Этот параметр предотвращает установку служб systemd отвечающих за настройку файлов /etc/group и /etc/passwd. Оба файла были созданы предыдущей главе. Этот демон бесполезен в системе LFS, поскольку учетные записи пользователей создаются вручную.

-Drpmmacrosdir=no

Этот параметр отключает установку макросов RPM для использования с systemd, поскольку LFS не поддерживает RPM.

-Dhomed=disabled and -Duserdb=false

Удаляет две службы, чьи зависимости не удовлетворяют LFS.

-Dman=disabled

Предотвращает генерацию справочных страниц, чтобы избежать дополнительных зависимостей. Мы установим предварительно сгенерированные справочные страницы для systemd из архива.

-Dmode=release

Отключает некоторые функции, которые разработчики считает экспериментальными.

-Dpamconfdir=no

Предотвращает установку файла конфигурации PAM, который не работает в LFS.

-Ddev-kvm-mode=0660

По умолчанию правило udev разрешает всем пользователям доступ к /dev/kvm. Редакторы LFS считают это опасным. Данная опция переопределяет разрешение по умолчанию.

-Dnobody-group=nogroup

Сообщает пакету, что имя группы с GID 65534 - это nogroup.

-Dsysupdate=disabled

Предотвращает установку инструмента systemd-sysupdate. Он предназначен для автоматического обновления бинарных дистрибутивов, поэтому бесполезен в базовой системы Linux, собранной из исходного кода. Кроме этого, при загрузке будут выдаваться сообщения об ошибках, если он включен, но не настроен должным образом.

-Dukify=disabled

Предотвращает установку скрипта systemd-ukify. Во время выполнения этого сценария требуется модуль Python pefile, который не предоставляется ни LFS, ни BLFS.

Скомпилируйте пакет:

ninja

Установите пакет:

ninja install

Установите справочные страницы:

tar -xf ../../systemd-man-pages-255.tar.xz \
    --no-same-owner --strip-components=1   \
    -C /usr/share/man

Создайте файл /etc/machine-id необходимый systemd-journald:

systemd-machine-id-setup

Настройте базовую целевую структуру:

systemctl preset-all

8.76.2. Установка systemd - 32-битная версия

Выполните очистку после предыдущей сборки (находясь в каталоге сборки):

rm -rf *

Создайте символическую ссылку, чтобы обойти отсутствие xsltproc:

ln -sf /bin/true /usr/bin/xsltproc

Подготовьте systemd к компиляции:

PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
CC="gcc -m32 -march=i686"              \
CXX="g++ -m32 -march=i686"             \
LANG=en_US.UTF-8                       \
meson --prefix=/usr                    \
      --sysconfdir=/etc                \
      --localstatedir=/var             \
      --libdir=/usr/lib32              \
      -Drootlibdir=/usr/lib32          \
      -Dblkid=true                  \
      -Ddefault-dnssec=no           \
      -Dfirstboot=false             \
      -Dinstall-tests=false         \
      -Dldconfig=false              \
      -Dsysusers=false              \
      -Db_lto=false                 \
      -Drpmmacrosdir=no             \
      -Dhomed=false                 \
      -Duserdb=false                \
      -Dman=false                   \
      -Dmode=release                \
      ..

Скомпилируйте пакет:

LANG=en_US.UTF-8 ninja

Установите пакет:

LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
rm -rf DESTDIR
rm -f /usr/bin/xsltproc

8.76.3. Содержимое пакета systemd

Установленные программы: busctl, coredumpctl, halt (символическая ссылка на systemctl), hostnamectl, init, journalctl, kernel-install, localectl, loginctl, machinectl, mount.ddi (символическая ссылка на systemd-dissect), networkctl, oomctl, portablectl, poweroff (символическая ссылка на systemctl), reboot (символическая ссылка на systemctl), resolvconf (символическая ссылка на resolvectl), resolvectl, runlevel (символическая ссылка на systemctl), shutdown (символическая ссылка на systemctl), systemctl, systemd-ac-power, systemd-analyze, systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop, 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, systemd-repart, systemd-resolve (символическая ссылка на resolvectl), systemd-run, systemd-socket-activate, systemd-stdio-bridge, systemd-sysext, systemd-tmpfiles, systemd-tty-ask-password-agent, systemd-umount (символическая ссылка на systemd-mount), telinit (символическая ссылка на systemctl), timedatectl и udevadm
Установленные библиотеки: libnss_myhostname.so.2, libnss_mymachines.so.2, libnss_resolve.so.2, libnss_systemd.so.2, libsystemd.so, libsystemd-shared-255.so (в /usr/lib/systemd) и libudev.so
Созданные каталоги: /etc/binfmt.d, /etc/init.d, /etc/kernel, /etc/modules-load.d, /etc/sysctl.d, /etc/systemd, /etc/tmpfiles.d, /etc/udev, /etc/xdg/systemd, /usr/lib/systemd, /usr/lib/udev, /usr/include/systemd, /usr/lib/binfmt.d, /usr/lib/environment.d, /usr/lib/kernel, /usr/lib/modules-load.d, /usr/lib/sysctl.d, /usr/lib/systemd, /usr/lib/tmpfiles.d, /usr/share/doc/systemd-255, /usr/share/factory, /usr/share/systemd, /var/lib/systemd и /var/log/journal

Краткое описание

busctl

Используется для самоанализа и мониторинга шины D-Bus

coredumpctl

Используется для извлечения дампов памяти из журнала systemd

halt

Обычно вызывает shutdown с параметром -h, за исключением случаев, когда уровень запуска уже равен 0, тогда он посылает ядру сигнал на остановку системы; Кроме этого отмечает в файле /var/log/wtmp, что система отключается

hostnamectl

Используется для чтения и изменения имени хоста и связанных с ним настроек

init

Первый процесс, который запускается после инициализации оборудования; init берет на себя процесс загрузки и запускает процессы, указанные в его конфигурационных файлах; в данном случае, он запускает systemd

journalctl

Используется для чтения содержимого журнала systemd

kernel-install

Используется для добавления и удаления образов ядра и initramfs в /boot и из него. В LFS это делается вручную

localectl

Используется для чтения и изменения настроек локали и раскладки клавиатуры

loginctl

Используется для самоанализа и контроля состояния Login-менеджера systemd

machinectl

Используется для самоанализа и контроля состояния диспетчера виртуальной машины и регистрации контейнеров systemd

networkctl

Используется для самоанализа и настройки состояния сетевых соединений настроенных с помощью systemd-networkd

oomctl

Управляет демоном systemd, отвечающим за нехватку памяти (OOM)

portablectl

Используется для подключения или отсоединения переносимых служб от локальной системы

poweroff

Дает команду ядру остановить работу системы и выключить компьютер (смотрите halt)

reboot

Дает указание ядру перезагрузить систему (смотрите halt)

resolvconf

Регистрирует DNS сервер и конфигурацию домена с помощью systemd-resolved

resolvectl

Отправляет управляющие команды диспетчеру разрешения сетевых имен или разрешает доменные имена, адреса IPv4 и IPv6, записи DNS и службы

runlevel

Возвращает предыдущий и текущий уровни запуска в соответствии с данными из /run/utmp

shutdown

Отключает систему безопасным образом, отправляя сигналы всем процессам и уведомляя всех вошедших в систему пользователей

systemctl

Используется для самоанализа и контроля состояния системы и управления службами

systemd-ac-power

Сообщает, подключена ли система к внешнему источнику питания.

systemd-analyze

Используется для анализа производительности запуска системы, а также для выявления проблемных модулей systemd

systemd-ask-password

Используется для запроса системного пароля или парольной фразы от пользователя с помощью сообщения, указанного в командной строке Linux

systemd-cat

Используется для соединения выходных данных STDOUT и STDERR процесса с журналом systemd

systemd-cgls

Рекурсивно отображает содержимое выбранной иерархии групп управления Linux(cgroups) в виде дерева

systemd-cgtop

Отображает группы управления, в локальной иерархии групп управления Linux, упорядоченные по загрузке процессора, памяти и дискового ввода-вывода

systemd-creds

Отображает и обрабатывает учетные данные

systemd-delta

Используется для идентификации и сравнения конфигурационных файлов в /etc, которые переопределяют значения по умолчанию из /usr

systemd-detect-virt

Определяет, работает ли система в виртуальном окружении, и соответствующим образом настраивает udev

systemd-dissect

Используется для проверки образов дисков операционной системы

systemd-escape

Используется для экранирования строк для включения их в имена юнитов systemd

systemd-hwdb

Используется для управления базой данных оборудования (hwdb)

systemd-id128

Генерирует и выводит строки id128 (UUID)

systemd-inhibit

Используется для выполнения программы с включенной блокировкой выключения, режима ожидания или бездействия, предотвращающей выполнение таких действий, как выключение системы, до завершения процесса

systemd-machine-id-setup

Используется инструментами установщика для инициализации идентификатора машины, хранящегося в /etc/machine-id, во время установки со случайно сгенерированным идентификатором

systemd-mount

Используется для временного или автоматического монтирования дисков

systemd-notify

Используется скриптами служб для уведомления системы инициализации об изменении статуса

systemd-nspawn

Используется для запуска команды или всей ОС в легковесном контейнере пространства имен

systemd-path

Используется для чтения системных и пользовательских путей

systemd-repart

Используется для увеличения и добавления разделов в таблицу разделов, когда systemd используется с образом операционной системы (например, контейнером).

systemd-resolve

Используется для разрешения доменных имен, адресов IPV4 и IPv6, ресурсных записей DNS и служб

systemd-run

Используется для создания и запуска временного юнита .service или .scope, а также запуска в нём указанной команды. Это полезно для проверки юнитов systemd.

systemd-socket-activate

Используется для прослушивания сокетов и запуска процесса при успешном подключении к сокету

systemd-sysext

Активирует образы системных расширений

systemd-tmpfiles

Создает, удаляет и очищает изменяемые и временные файлы и каталоги на основе формата и местоположения файла конфигурации, указанного в tmpfiles.d

systemd-umount

Размонтирует точки монтирования

systemd-tty-ask-password-agent

Используется для составления списка и/или обработки очереди запросов пароля

telinit

Сообщает init, на какой уровень выполнения следует перейти

timedatectl

Используется для чтения и изменения системного времени и сопутствующих настроек

udevadm

Универсальный инструмент администрирования udev, который управляет демоном udevd, предоставляет информацию из базы данных оборудования Udev, отслеживает uevents, ожидает завершения uevents, тестирует конфигурацию udev и запускает uevents для данного устройства

libsystemd

Основная библиотека systemd

libudev

Библиотека доступа Udev к информации об устройствах