SuSE 8을 실행하는 여러 POS 시스템에 갇혀 있습니다. 그것은 내 고객의 컴퓨터입니다. 우리는 전체 시스템을 SLE 11로 업그레이드할 때까지 이러한 레거시 시스템을 다루어 왔습니다.
문제: 이제 시스템에는 ttyUSB* 문자 장치 노드를 두고 경쟁하는 두 개의 장치가 있습니다. 공급업체 ID와 제품 ID가 다릅니다. SuSE 8에는 udev가 없고 devfs가 있습니다.
장치의 공급업체 ID와 제품 ID, 그리고 해당 장치를 담당하는 커널 모듈(ipaq 커널 모듈)을 알면, 어떤 문자 장치 노드에 할당되어 있는지 어떻게 알 수 있습니까? POSIX 쉘 스크립트 문자열(예: $DeviceNode)?
이제 저는 쉘 스크립트에서 매우 어리석은 방식으로 이 작업을 수행합니다.
DeviceNode=$(dmesg | tac | grep "PocketPC PDA converter now attached to" | set -n 's/.*now attached to \([[:alnum:]]\{1,\}\).*/\1/p')
그래서 나는 예를 들어
> echo $DeviceNode
ttyUSB1
>
물론, 문제 중 하나는 장치의 플러그가 뽑혔을 수도 있고 이 간단한 방법으로는 알 수 없다는 것입니다.
더 좋은 방법이 있나요?
편집 : 그래서 찾았습니다이 기사오늘 아침. /proc/tty/driver/usbserial에서 두 번째 줄부터 시작하여 각 줄의 첫 번째 번호가 ttyUSBx 중 하나의 부 번호라고 가정할 수 있습니까?
편집 2: 대안(아마도 더 나은) 솔루션은 지속적인 노드 연결을 얻는 것입니다(예를 들어 항상 ttyUSB1과 연결된 알려진 공급업체 ID 및 알려진 제품 ID가 있는 장치를 가져옵니다). devfs에서 이것이 가능합니까?