USB 장치가 Linux에 연결되면 커널은 해당 장치에 부 장치 번호(Linux에서는 0 /dev/ttyUSB0
)를 할당합니다. 장치가 있는 경우 /dev/ttyUSB0
해당 장치를 제거하고 새 USB 장치를 연결하면 새 장치에 다른 장치 번호가 부여되는 것 같습니다 . 그러나 충분히 오래 기다리거나 장치를 충분히 추가하면 장치 번호가 0이 됩니다. 커널은 장치 번호 0을 재사용할 시기를 어떻게 결정합니까?
자세한 내용: 서버에 많은 수의 USB 장치가 연결되어 있으며 보조 장치 번호를 사용하여 이를 추적합니다. 새 장치가 추가되는 시기와 이전 장치가 제거되는 시기를 감지하고 싶습니다. 새 장치에 제거된 기존 장치와 동일한 장치 번호가 할당되면 장치가 교체되었는지 알 수 없을까 걱정됩니다.
답변1
내 질문에 반쯤 대답하겠습니다. 장치 번호를 재사용하는 방법에 대한 명확한 문서를 찾을 수 없었지만 장치에 더 고유한 번호를 할당하는 방법을 찾았습니다.
비결은 다음 규칙과 같은 문을 사용하여 난수를 생성하는 것 udev
입니다 .IMPORT
KERNEL=="ttyUSB*", IMPORT{program}="/bin/bash -c 'echo FOORAND=$RANDOM'", SYMLINK+="my-device-%n-%E{FOORAND}"
예를 들어 ttyUSB 장치에 대한 심볼릭 링크가 생성됩니다 /dev/my-device-0-3853
. 새 장치가 추가되면 새 임의 번호가 부여됩니다.
%n
언제든지 존재하는 심볼릭 링크가 활성화되도록 커널 번호( )와 난수를 포함합니다.언제나고유한.