USB Camera
대부분의 카메라는 외장 하드디스크로 SCSI 방식의 USB 버스로 연결됩니다. 저장된 내 사진을 보기 위해 drive를 마운트하고 사진을 나의 하드디스크로 옮깁니다.
하지만, 모든 카메라들이 위와 같은 방식으로 작동하지는 않습니다. gphoto2가 지원되는 카메라 같은 경우 non-storage 프로토콜을 사용하기 때문에 이 경우 여러분은 규칙을 작성할 수가 없습니다. gphoto같은 경우 특정 커널 드라이버가 아닌 사용자 영역에서 제어해야 합니다.
보통의 USB 카메라의 문제는 /dev/sdb, /dev/sdb1과 같이 카메라 스스로 단일 파티션을 나누고 식별되는 것인데요. sdb 노드는 여러분들에게 쓸모없는 노드지만, sdb1는 여러분들이 마운트 할 수 있기 때문에 sdb1만 관심을 가지면 됩니다. 하지만, 여기서 문제는 sysfs로 연결되어 있다는 것인데요, devinfo로 확인할 수 있는 /dev/sdb1의 유용한 속성(attribute)들이 /dev/sdb와 동일하다는 것입니다. raw disk와 파티션 둘 다 여러분들의 규칙에 매칭될 수 있기 때문에 여러분들이 원하는 것을 얻을 수 없습니다. 그렇기에 여러분들의 규칙은 특별해야 합니다.
이 문제를 해결하려면 여러분은 sdb와 sdb1 사이에 무엇이 다른지 생각해 볼 필요가 있습니다. 매우 단순하게 해결될 수 있는 문제이죠. 자세히 볼 필요도 없이 두 가지는 이름 부터 다릅니다!. 그렇기 때문에 우리는 NAME의 단순한 패턴 매칭만으로도 문제를 해결 할 수 있습니다.
# udevinfo -a -p $(udevinfo -q path -n /dev/sdb1) |
위 내용을 기반으로 규칙을 작성해 봅시다.
KERNEL=="sd?1", SUBSYSTEMS=="scsi", ATTRS{model}=="X250,D560Z,C350Z", SYMLINK+="camera" |