부팅 시 udev 규칙 실행

부팅 시 udev 규칙 실행

National Instruments USB<->GPIB 브리지가 있습니다. 사용할 수 있으려면 특별한 절차가 필요한 USB 보드입니다. 두 개의 커널 모듈을 제공하는 linux_gpib 패키지가 설치되어 있습니다: gpib_commonni_usb_gpib. 게다가, gpib_configGPIB 버스의 계측기와 통신하기 전에 툴 마스트가 실행됩니다. 트릭은 보드가 USB에 연결된 후 내부 초기화를 위해 gpib_config명령이 적용되기까지 약 2초가 필요하다는 것입니다. 따라서 99-gpib.rules작업을 완벽하게 수행하는 다음 udev 규칙이 있습니다.

SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="3923", ATTR{idProduct}=="709b", RUN+="/bin/sh -c '/usr/bin/sleep 2; /usr/sbin/gpib_config --minor 0'"

KERNEL=="gpib[0-9]*", MODE="0660", GROUP="gpib"

문제는 호스트 시스템이 실행 중일 때 보드를 연결하는 경우에만 작동한다는 것입니다. 동글을 연결한 상태에서 재부팅하면 두 커널 모듈이 모두 로드된 것을 볼 수 있지만 보드를 사용할 수 없습니다. 이는 gpib_config도구가 실행되지 않았음을 의미합니다. 손으로 실행하면 완벽하게 작동합니다.

재부팅 시나리오가 더 현실적이므로 시스템이 실행되는 동안 연결하므로 부팅 시 udev에서 이 작업을 수행하도록 하는 올바른 방법이 필요합니다. 물론, 보드가 연결되어 있고 커널 모듈이 로드되었는지 확인하고 로드 프로세스 중에 도구를 실행하는 초기화 스크립트를 작성할 수 있지만 이것은 udev 작업이므로 하드웨어를 처리해야 하는 것으로 생각됩니다. 어떤 아이디어가 있나요?

답변1

문제는 RUN 항목을 실행하는 udev에 있습니다.~ 전에해당 모듈이 로드되므로 gpib_config보드 구성에 실패합니다. 해결 방법은 시스템 부팅 시 udev 시작 전에 모듈을 로드하는 것입니다. 내 생각에는 진정한 해결책은 아니다.

관련 정보