В systemd, что запускает единицы, сгенерированные генератором?

На моей машине (Arch linux), systemd-generator генерирует некоторые файлы модулей в /run/systemd/generator/ и они, похоже, как-то запускаются при загрузке. Что их начинает?

Например, boot.mount генерируется systemd. systemctl list-dependencies --all показывает, что он связан с local-fs.target (который не сгенерирован). Как они связаны между собой? В этих двух устройствах нет ничего, что, по-видимому, запускает запуск boot.mount . Ну, в boot.mount есть Before=local-fs.target , но это не запускает сервис, не так ли?

Системные файлы сгенерированы автоматически. В отношении systemd нет ничего особенного. Каждый отдельный генератор должен явно создавать символические ссылки, которые соединяют сгенерированный блок с целью, так что активация цели активирует сгенерированный блок через зависимость обычным способом.

Это использует тот факт, что не все соединения между единицами выражаются внутри файлов блоков. Требует и требует зависимости могут быть выражены с помощью символических ферм ссылок в *.wants/ и *.requires/ . И эти символические фермы ссылок включают в себя подкаталоги /run/systemd/ между прочим.

Другими словами: вместо того, чтобы выписывать единицу с WantedBy=local-fs.target а затем нужно явно ссылаться на sytemctl enable чтобы сделать символическую ссылку (что и делает это делает), генератор sytemctl enable процесс и делает символическим связать себя. И это делает его в эфемерном месте, которое, systemctl enable правило, не systemctl enable , тем самым предотвращая продолжение существования символической ссылки после следующего выключения и запутывания следующего запуска.

В частности, в вашей системе вы обнаружите, что /run/systemd/generator/boot.mount символически связан с /run/systemd/generator/local-fs.target.wants/boot.mount . systemd-fstab-generator создал эту символическую ссылку , и она делает boot.mount для local-fs.target . Генератор запускается на ранней стадии начальной загрузки до того, как система local-fs.target активировать local-fs.target , а это значит, что когда он активируется, чтобы активировать local-fs.target сгенерированную зависимость.

дальнейшее чтение

  • https://unix.stackexchange.com/a/233581/5132
  • Джонатан де Бойн Поллард (2016). « Отсутствует путь к системному поиску с systemd.unit справочной страницы systemd.unit ». Исправление для systemd doco . Часто задаваемые ответы.