Systemdはこのユニットファイルを有効にせず、同じファイルシステムで「間違ったデバイス間リンク」を宣言します。

Systemdはこのユニットファイルを有効にせず、同じファイルシステムで「間違ったデバイス間リンク」を宣言します。

私は3D印刷ファームを実行するために使用するFedora 37サーバーを持っています。別々のシステム単位で実行されるKlipper(3Dプリンタファームウェア)の複数のインスタンスがあり、他の補足サービスは独自の単位ファイルとして実行されます。

たとえば、Klipper、Moonraker、およびMainsail(nginx)があります。 nginxとMoonrakerのsystemdデバイスを有効にするとまったくエラーは発生せず、確認すると、そのデバイスはsystemctl status moonrakernginxとMoonrakerの両方で有効になっていると表示されますsystemctl status nginx

ただし、Klipperを有効にしようとすると、次のエラーが発生します。

[root@fedora ~]# systemctl enable klipper-venus
Failed to enable unit: File klippy: Invalid cross-device link

奇妙なことに、「クロスデバイス」はありません。サーバーは、LVM上に構築されたフラットファイルシステムで実行されます。 Klipperのスクリプトとバイナリは/opt/klipperMoonrakerと同じ場所にあります/opt/moonraker。 (惑星の名前を付けたプリンタ)を実行すると、サービスが起動し、systemctl start klipper-venusソフトウェアが実行され、サービスが正常に起動します。サービスの自動起動を有効にしようとすると、systemctl enable klipper-venus上記のエラーが発生します。

systemdのドキュメントを確認し続け、Googleで追跡しましたが、まだ何も見つかりませんでした。これが起こる原因は何ですか?これは単一のユニットファイルにのみ影響するため、klippy.pyユニットの構成または実行中のメインファイルに関連していると仮定します。

どんなアイデアがありますか?

機能しないサービスの単位ファイルのコピーは次のとおりです。

[Unit]
Description=Starts Klipper and provides Unix Domain Socket API
Documentation=https://www.klipper3d.org/
After=network.target
Before=moonraker-venus.service
Wants=udev.target

[Install]
Alias=klippy
WantedBy=multi-user.target

[Service]
EnvironmentFile=/etc/default/klipper-venus

Type=simple
User=root
group=klipper
RemainAfterExit=yes
WorkingDirectory=/opt
ExecStart=/opt/klipper/runtime/bin/python /opt/klipper/klippy.py ${KLIPPER_CONFIG} -l ${KLIPPER_LOG} -I ${KLIPPER_DEV} -a ${KLIPPER_SOCKET}
Restart=always
RestartSec=10

ベストアンサー1

希望=udev.target

上記の行を変更する必要があります。有効な値については、以下を参照してください。男 systemd.special

デバイスを有効にできませんでした:ファイルklippy:無効なデバイス間リンク

これは、「Alias = klippy」がすでにユニット検索パスに使用されているシンボリックリンクである可能性があるためです。別の名前に変更するか、シンボリックリンクのソースを見つけてください。

おすすめ記事