나는 이 게시물에서 galets가 제안한 솔루션을 사용하여 나만의 udev 규칙을 추가했습니다. 서비스를 시작하기 전에 /dev/video0을 기다리는 방법
Linux가 부팅되면 내 장치가 감지되고 규칙에 따라 sys-bus-pci-drivers-mydevice.device
셀이 생성됩니다. 나는 포함된 BindsTo=sys-bus-pci-drivers-mydevice.device
서비스를 만들었고 Requires=sys-bus-pci-drivers-mydevice.device
서비스는 내 하드웨어를 감지하고 해당 드라이버를 로드한 후에만 로드됩니다. 완벽한!
내 문제는 서비스를 관리하기 위해 systemctl 명령을 실행할 때마다 장치 장치가 비활성(비활성) 상태가 된다는 것입니다. 예를 들어:
systemctl daemon-reload
systemctl unmask whatever.service
이들 중 하나가 실행된 후 실행하면 다음과 같이 systemctl status sys-bus-pci-drivers-mydevice.device
보고됩니다.
* sys-bus-pci-drivers-mydevice.device
Loaded: loaded
Active: inactive (dead)
Jan 25 09:25:41 FLABADO systemd[1]: Found device /sys/bus/pci/drivers/mydevice.
이 시점에서 종속성을 포함하는 서비스를 다시 시작하려고 하면 Requires=
실패합니다. 복구하려면 시스템을 재부팅해야 했습니다.
장치가 여전히 존재하고 드라이버가 활성 상태이며 하드웨어를 사용하기 위해 실행하는 명령이 완벽하게 작동하는지 확인했습니다.
혹시 이런 현상을 겪으신 분이 있는지 궁금합니다. 그렇다면 재부팅하지 않고 피하거나 복구할 수 있는 방법이 있나요?
저는 Yocto 2.1(Krogoth)을 사용하여 Linux 배포판을 구축하고 있습니다. 커널 버전은 4.4.26-yocto-standard입니다.