LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

Что такое юнит типа scope? Какие функции он исполняет?

Юниты типа scope создаются через API systemd (т. е. не заранее в /etc/systemd/system, а на лету) и используются для того, чтобы силами systemd добавить уже существующие процессы в новую контрольную группу. Например,

  • systemd-run /path/to/program запустит программу в отдельном service-юните, т. е. как потомка systemd, а
  • systemd-run --scope /path/to/program — запустит ту же программу как потомка systemd-run, но всё равно в отдельной контрольной группе (в отдельном scope-юните).

Зачем это обязательно нужно делать силами systemd (а не самостоятельно) — вот примерно поэтому.

Правильно ли я понимаю, что управление всеми точками монтирования, свап-файлами происходит силами systemd, основываясь на юнитах, сгенерированных из fstab или созданных отдельно?

Да. systemd (точнее, отдельный бинарь-генератор) при запуске и при каждом daemon-reload перечитывает fstab и создаёт во временной директории эквивалентный ему набор .mount и .swap-юнитов, между которыми уже расставляются зависимости и так далее.

Можно, например, написать systemctl stop /mnt/something (или systemctl stop mnt-something.mount). Это отмонтирует директорию /mnt/something, предварительно 1) отмонтировав всё, что под ней, 2) отмонтировав все bind-ы её частей и 3) остановив все юниты, в которых указана зависимость от этой директории.

Как происходит монтирование корневой ФС <...> с точки зрения systemd?

Оно происходит до запуска systemd.

а так же работа с шифрованными носителями

Я не пользовался dm-crypt'ом и cryptsetup, но вроде как для этого есть отдельный набор юнитов, которые запускаются до монтирования всех ФС. Результатом их работы является создание какого-то количества новых виртуальных блочных устройств. Они автоматически подцепляются systemd и уже с них монтируются файловые системы.

Правильно ли я понимаю, что те юниты, которые имеют состояние masked, мне трогать не следует, и, если я не пишу и не меняю юниты, то меня интересуют только те, которые имеют состояние enabled/disabled?

Нет. По умолчанию, без вмешательства администратора, ни один юнит не имеет состояние masked. Маскировка — это принудительный запрет любого запуска юнита; грубо говоря, замещение файла юнита пустым файлом.

И да: про операции с юнитами и прочие подробности, действительно, читай SIA #1 и SIA #2.

Исходная версия intelfx, :

Что такое юнит типа scope? Какие функции он исполняет?

Юниты типа scope создаются через API systemd (т. е. не заранее в /etc/systemd/system, а на лету) и используются для того, чтобы силами systemd добавить уже существующие процессы в новую контрольную группу. Например,

  • systemd-run /path/to/program запустит программу в отдельном service-юните, т. е. как потомка systemd, а
  • systemd-run --scope /path/to/program — запустит ту же программу как потомка systemd-run, но всё равно в отдельной контрольной группе (в отдельном scope-юните).

Зачем это обязательно нужно делать силами systemd (а не самостоятельно) — вот примерно поэтому.

Правильно ли я понимаю, что управление всеми точками монтирования, свап-файлами происходит силами systemd, основываясь на юнитах, сгенерированных из fstab или созданных отдельно?

Да. systemd (точнее, отдельный бинарь-генератор) при запуске и при каждом daemon-reload перечитывает fstab и создаёт во временной директории эквивалентный ему набор .mount и .swap-юнитов, между которыми уже расставляются зависимости и так далее.

Можно, например, написать systemctl stop /mnt/something (или systemctl stop mnt-something.mount). Это отмонтирует директорию /mnt/something, предварительно 1) отмонтировав всё, что под ней, 2) отмонтировав все bind-ы её частей и 3) остановив все юниты, в которых указана зависимость от этой директории.

Как происходит монтирование корневой ФС <...> с точки зрения systemd?

Оно происходит до запуска systemd.

а так же работа с шифрованными носителями

Я не пользовался dm-crypt'ом и cryptsetup, но вроде как для этого есть отдельный набор юнитов, которые запускаются до монтирования всех ФС. Результатом их работы является создание какого-то количества новых виртуальных блочных устройств. Они автоматически подцепляются systemd и уже с них монтируются файловые системы.

Правильно ли я понимаю, что те юниты, которые имеют состояние masked, мне трогать не следует, и, если я не пишу и не меняю юниты, то меня интересуют только те, которые имеют состояние enabled/disabled?

Нет. По умолчанию, без вмешательства администратора, ни один юнит не имеет состояние masked. Маскировка — это запрет любого запуска юнита; грубо говоря, замещение файла юнита пустым файлом.

И да: про операции с юнитами и прочие подробности, действительно, читай SIA #1 и SIA #2.