Сообщение об ошибке объясняет причину:
Where= setting doesn't match unit name. Refusing.
хотя понимание этого сообщения требует прочтения нескольких справочных страниц.
Согласно man-странице systemd.mount
(выделение мое):
Where=
Берет абсолютный путь к каталогу точки монтирования. Если точка монтирования не существует во время монтирования, она создается. Эта строка должна быть отражена в имени файла устройства. (См. выше.) Это опция обязательна.
Часть «см. выше»:
Модули монтирования должны быть названы в соответствии с каталогами точек монтирования, в которых они находятся. контроль. Пример: точка монтирования
/home/lennart
должна быть настроена в юнит-файлhome-lennart.mount
. Подробнее о логике экранирования используется для преобразования пути файловой системы в имя модуля, см.systemd.unit(5)
.
ОК, системад.man-страница unit
утверждает, что:
Правильно экранированные пути могут быть сгенерированы с помощью
systemd-escape(1)
команда.
указывает на справочную страницу systemd-escape
, где объясняется, как это сделать:
Чтобы сгенерировать единицу монтирования для пути:
$ systemd-escape -p --suffix =mount "/tmp//waldi/foobar/"
tmp-waldi-foobar.mount
Итак, в вашем случае /srv/node/d1
переводится как srv- node-d1.mount