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デバイスを接続するときは、2つの同じ規則があるようです。唯一の違いはSUBSYSTEM=="usb_device", ACTION=="add"とですSUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device"。誰でも違いを説明できますか?

デバイスを取り外す場合も同様です。

とは何$majorですか$minor?この変数はによって生成されますかudev

答え1

しばらく私は2番目の質問である何$major$minor何に対する答えを見つけました。まず、彼ら公式udevドキュメント:

$専門家、%M

The kernel major number for the device.

$2次、%m

The kernel minor number for the device.

以下では、各デバイスに関連する2つの変数を表示できます sudo udevadm monitor --udev --subsystem-match=usb --propertyudev接続機器に関連する変数を出力します。

これの説明は次のとおりです。https://www.oreilly.com/library/view/linux-device-drivers/0596000081/ch03s02.html

主なデバイス番号は、デバイスに関連するドライバを識別します。たとえば、/dev/null と /dev/zero はどちらもドライバ 1 で管理され、仮想コンソールとシリアル端末はドライバ 4 で管理され、vcs1 デバイスと vcsa1 デバイスはドライバ 7 で管理されます。カーネルは、適切なドライバに実行を渡すために開くときにメジャー番号を使用します。

マイナーデバイス番号は、メインデバイス番号で指定されたドライバでのみ使用されます。カーネルの他の部分では、それを使用せずに単にドライバに渡します。ドライバが複数のデバイスを制御するのが一般的です(リストに表示されています)。マイナー番号は、ドライバーとデバイスを区別する方法を提供します。

関連情報