Сгенерированные файлы модулей не создаются автоматически активируется systemd. Что касается systemd, то в них нет ничего особенного. Каждый отдельный генератор должен явно создавать символические ссылки, которые соединяют сгенерированный модуль с целью, так что активация цели активирует сгенерированный модуль через зависимость обычным способом.
Это использует тот факт, что не все связи между модулями выражены внутри файлов модулей. Зависимости Wants и Requires могут быть выражены с помощью ферм символических ссылок в подкаталогах *. Want /
и *. Requires /
. И эти фермы символических ссылок включают, помимо прочего, подкаталоги / run / systemd /
.
Другими словами: вместо того, чтобы записывать модуль с помощью WantedBy = local-fs.target
, а затем явно вызывать sytemctl 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
, сгенерированный зависимость должна соблюдаться.
systemd.unit
». Исправления для systemd doco . Часто задаваемые ответы.