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 --property
。udev
接続機器に関連する変数を出力します。
これの説明は次のとおりです。https://www.oreilly.com/library/view/linux-device-drivers/0596000081/ch03s02.html
主なデバイス番号は、デバイスに関連するドライバを識別します。たとえば、/dev/null と /dev/zero はどちらもドライバ 1 で管理され、仮想コンソールとシリアル端末はドライバ 4 で管理され、vcs1 デバイスと vcsa1 デバイスはドライバ 7 で管理されます。カーネルは、適切なドライバに実行を渡すために開くときにメジャー番号を使用します。
マイナーデバイス番号は、メインデバイス番号で指定されたドライバでのみ使用されます。カーネルの他の部分では、それを使用せずに単にドライバに渡します。ドライバが複数のデバイスを制御するのが一般的です(リストに表示されています)。マイナー番号は、ドライバーとデバイスを区別する方法を提供します。