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"가 이미 유닛 검색 경로에 사용된 심볼릭 링크일 가능성이 있기 때문입니다. 다른 이름으로 변경하거나 심볼릭 링크의 소스를 찾아보세요.

관련 정보