Virtualbox udev 규칙 SUBSYSTEM=="usb_device" 및 SUBSYSTEM=="usb"(매개변수 포함)

Virtualbox udev 규칙 SUBSYSTEM=="usb_device" 및 SUBSYSTEM=="usb"(매개변수 포함)

VirtualBox 매뉴얼(https://www.virtualbox.org/manual/UserManual.html), 다음과 같은 상당히 일반적인 문장이 있습니다.«[...] 그룹의 모든 사용자가 USB 장치에 액세스할 수 있도록 하는 /etc/udev/rules.d/60-vboxdrv.rules설명 파일( udev있는 경우)입니다 . vboxusers»

파일 내용을 살펴보니 다음과 같습니다.

/etc/udev/rules.d$ cat 60-vboxdrv.rules 
KERNEL=="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660"
KERNEL=="vboxdrvu", OWNER="root", GROUP="root", MODE="0666"
KERNEL=="vboxnetctl", OWNER="root", GROUP="vboxusers", MODE="0660"
SUBSYSTEM=="usb_device", ACTION=="add", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"

USB 장치를 연결할 때 두 가지 동일한 규칙이 있는 것 같습니다. 유일한 차이점은 SUBSYSTEM=="usb_device", ACTION=="add"와 입니다 SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device". 누구든지 차이점을 설명할 수 있나요?

장치를 제거하는 경우에도 마찬가지입니다.

그리고 은(는) 무엇 $major인가요 $minor? 이 변수는 에 의해 생성됩니까 udev?

답변1

당분간 나는 두 번째 질문인 무엇 $major$minor무엇에 대한 답을 찾았습니다. 첫째, 그들은공식 udev 문서:

$전문가, %M

The kernel major number for the device.

$2차, %m

The kernel minor number for the device.

다음을 통해 각 장치와 관련된 두 가지 변수를 볼 수 있습니다 sudo udevadm monitor --udev --subsystem-match=usb --property. udev연결된 장치와 관련된 변수를 출력합니다 .

이에 대한 설명은 다음과 같습니다.https://www.oreilly.com/library/view/linux-device-drivers/0596000081/ch03s02.html

주요 장치 번호는 장치와 관련된 드라이버를 식별합니다. 예를 들어, /dev/null 및 /dev/zero는 모두 드라이버 1에 의해 관리되는 반면, 가상 콘솔 및 직렬 터미널은 드라이버 4에 의해 관리되며, vcs1 및 vcsa1 장치는 드라이버 7에 의해 관리됩니다. 커널은 적절한 드라이버에 실행을 전달하기 위해 열 때 메이저 번호를 사용합니다.

부 장치 번호는 주요 장치 번호로 지정된 드라이버에서만 사용됩니다. 커널의 다른 부분에서는 이를 사용하지 않고 단순히 드라이버에 전달합니다. 드라이버가 여러 장치를 제어하는 ​​것이 일반적입니다(목록에 표시됨). 마이너 번호는 드라이버에 장치를 구별하는 방법을 제공합니다.

관련 정보