Юнит-файл (в этом случае strelaysrv.service
должен находиться в разделе, который уже смонтирован при запуске systemd, что не так в вашем примере, поскольку в комментариях вы упомянули /srv
— это символическая ссылка под /home
, который находится в своем собственном разделе.
Это довольно часто упоминается в отчетах об ошибках systemd, чтобы узнать о последних ошибках, см. здесь .
См. также (недавно обновленную)справочную страницу для systemctl , в которой указано:
The file system where the linked unit files are located must be accessible when systemd is started (e.g. anything underneath /home or /var is not allowed, unless those directories are located on the root file system).
Рекомендуемое решение — создать копию strelaysrv.service
под /etc/systemd/system
, а не символическую ссылку. Это должно решить проблему.
Ядро не определяет контейнеры; см. Что такое «легкий -контейнер пространства имен веса», созданный порождением systemd -? . Контейнеры в обычном понимании обеспечивают как изоляцию (с использованием пространств имен ), так и управление ресурсами (с использованием контрольных групп ), а также дополнительные уровни защиты, такие как фильтры seccomp. Они объединяют несколько понятий, они не являются экземплярами первого -понятия класса, предоставляемого непосредственно ядром.
unshare
имеет дело с пространством имен, вам придется добавить все остальное (, таким образом реализуя среду выполнения контейнера ).
При поиске фактического определения этого в Linux Foundation кажется, что «контейнер» не определяется уровнем изоляции или привилегиями -контролирует --это «строительные -блоки "-- но вместо этого
Таким образом, я думаю, что настоящий вопрос здесь заключается в том, является ли сценарий оболочки с unshare
нерасшаренным доступом.
Я беру это из LFS151.x LinuxFoundationX на edx