Как объяснил @StephenHarris, проблема заключается в том, что в тот момент, когда systemd пытается прочитать модуль, файл с символической ссылкой еще недоступен
Чтобы systemd просто перезагрузил юниты после монтирования:
[Unit]
Description=reloads units stored in /mnt/data
DefaultDependencies=no
After=mnt-data.mount
Requires=mnt-data.mount
[Service]
Type=oneshot
ExecStart=/bin/systemctl daemon-reload
[Install]
WantedBy=local-fs.target
Это приведет к тому, что юниты станут доступными, потому что на этот раз на этот раз цель символических ссылок смонтирована.
Но к тому времени список заданий, которые необходимо выполнить для достижения default.target , уже сформирован,и служба не будет запущена.
Чтобы он также перезапустил вашу службу:
[Unit]
Description=restart unit stored in /mnt/data
Requires=mnt-data.mount
[Service]
Type=oneshot
ExecStart=/bin/systemctl daemon-reload
ExecStartPost=/bin/systemctl start sprinterd.service
[Install]
WantedBy=multi-user.target
Альтернативы:
ExecStart=
и ExecStartPost=
, но он, очевидно, должен работать с ExecStartPre=
иExecStart=
ExecStart=/bin/systemctl enable /mnt/data/sprinterd.service
вместо демон -перезагрузкаConsistsOf=
или PartOf=
для загрузки всех нескольких служб. local-fs.target
не лучший вариант установки для вас. Для более старой -школы подхода в стиле SysVinit-поместите команды systemctl внутрь /etc/rc.local
и chmod +x
этого файла.
А затем тайно опубликуйте в списке рассылки Devuan, как вам понадобился SysVInit для исправления b0rked SystemD;-)