История изменений
Исправление 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.