2017-12-06 41 views
0

v4l2loopback 드라이버를 udev에서 작동하도록 수정하려고합니다 (udev가 자동으로 안정 장치 이름을 할당하도록).리눅스 가상 장치 드라이버를 udev와 함께 작동 시키려면

문제는 장치 드라이버가 제대로 즉, 표준 60-persistent-v4l.rules 작업을 겉으로 udev가 필요한 몇 가지 필드를 노출하지 않는, 것 같다 :

  • ID_BUS
  • ID_SERIAL
  • retur하지 않는 장치에 udevadm test-builtin path_id을 실행 또한
  • ID_PATH

, n 아무것도 (출구 코드는 1).

이제 인터넷에서 발견 한 모든 예에서는 USB 장치 드라이버를 쓰고 자한다고 가정합니다. 안타깝게도 v4l2loopback 기기의 경우 이는 virtual 기기에 해당하지 않습니다.

그래서 질문은 :

어떻게 udev 그들을 볼 수 있도록하기 위해, 가상 장치 드라이버에 PATH, SERIALBUS 속성을 추가하는 방법은 무엇입니까?

참고 :이 질문은 장치 드라이버를 수정하여 실제로 udev 규칙 (장치를 올바르게 인식 할 수 있도록 조정하는 것이 아니라)이 적절하게 재생되도록합니다. 이것은 당신이, 그렇지 않으면 쉘 스크립트를 작성 규칙 파일에서 사용 udev에 내에서 해당 스크립트를 실행 한 후 필요한 표시되면

$ udevadm monitor --environment --udev 

:

답변

0

실행이 명령은 사용자 공간 udev에에 리눅스 커널에서 보낸 모든 것을 볼 수 룰 스크립트를 실행 한 다음 쉘 스크립트에서 sysfs를 구문 분석하여 원하는 매개 변수를 얻습니다. 이것을하는 전형적인 표준 방법입니다.

환경 변수는 add_uevent_var() 함수를 사용하여 커널에서 전송됩니다. 커널에서는 주로 코어, 클래스 및 버스 드라이버가 uevent를 만들고 보내는 함수를 호출합니다. 이 link에서 버스 anc 클래스 드라이버를 기록해보십시오. This link도 자세히 알아볼 수 있습니다.

가상 장치와 실제 장치 사이에 중요한 차이점 중 하나는 우리가 함수를 호출 할 수있는 kobject에 액세스 할 때입니다.

+0

감사합니다. 질문은 실제로 장치 드라이버가 기존 udev 규칙과 잘 맞도록 조정하는쪽으로 나아갔습니다. 나는 Q가 약간의 해명을 필요로한다고 생각한다. .. –