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에 의해 관리됩니다. 커널은 적절한 드라이버에 실행을 전달하기 위해 열 때 메이저 번호를 사용합니다.
부 장치 번호는 주요 장치 번호로 지정된 드라이버에서만 사용됩니다. 커널의 다른 부분에서는 이를 사용하지 않고 단순히 드라이버에 전달합니다. 드라이버가 여러 장치를 제어하는 것이 일반적입니다(목록에 표시됨). 마이너 번호는 드라이버에 장치를 구별하는 방법을 제공합니다.