udev 규칙의 목적은 무엇입니까?

udev 규칙의 목적은 무엇입니까?

구입한 새 USB 장치에 대한 udev 규칙을 추가하라는 요청을 받았습니다. 이것이 왜 필요하고 가치 있는지에 대한 아주 간단한 설명은 없는 것 같습니다. 항상 장치를 동일한 경로에 매핑하시겠습니까? 예를 들어, 항상 장치를 /dev/ttyUSB1또는 /dev/sda4?

존재하다 /etc/udev/rules.d/99-totalphase.rules:

# This file causes the mode of all Total Phase usb devices to be made
# writable for any user.

# Aardvark I2C/SPI Host Adapter
ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0403", SYSFS{idProduct}=="e0d0", MODE="0666"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="e0d0", MODE="0666"

# Beagle Protocol Analyzers
ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="1679", SYSFS{idProduct}=="2001", MODE="0666"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1679", ATTR{idProduct}=="2001", MODE="0666"

udev 규칙을 작성하는 방법

답변1

실제로 특정 장치를 항상 동일한 위치에 매핑하는 것은 udev의 일반적인 용도 중 하나입니다. 장치는 여러 위치에 있을 수도 있습니다. 예를 들어, 디스크 파티션은 /dev/sda1자동 번호(예:)뿐만 아니라 파일 시스템의 레이블( /dev/disk/by-label/*), 파일 시스템의 UUID( /dev/disk/by-uuid/*) 및 디스크 장치의 일련번호 액세스( /dev/disk/by-id/*). 장치가 언제 연결되어 있는지, 어떤 포트에 연결되어 있는지 신경 쓰지 않고 특정 장치에 액세스하려는 경우 가장 명확한 방법은 해당 특정 하드웨어 장치와 일치하는 udev 규칙을 추가하고 /dev의미 있는 이름을 가진 항목을 만드는 것입니다.

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1679", ATTR{idProduct}=="2001", \
  SERIAL=="123456", MODE="0666", SYMLINK+="analyzer-foo"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1679", ATTR{idProduct}=="2001", \
  SERIAL=="123789", MODE="0666", SYMLINK+="analyzer-bar"

udev 규칙의 또 다른 일반적인 목적은 장치 노드에 대한 권한을 제어하여 일반적으로 특정 데몬이 액세스할 수 있도록 허용하는 것입니다. 이것이 바로 OWNER, GROUP및 지시어 의 목적 MODE입니다 SECLABEL.

세 번째 이유 범주는 장치가 연결될 때 특정 작업을 트리거하는 것입니다. 예를 들어, 장치에 펌웨어를 업로드하거나 장치의 사용 모드를 선택하거나 시스템의 특정 부분에 새 네트워크 연결이나 프린터를 사용할 수 있음을 알려야 할 수 있습니다.

관련 정보