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の一般的な用途の1つです。デバイスは複数の場所にあってもかまいません。たとえば、ディスクパーティションは、/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ルールのもう1つの一般的な目的は、デバイスノードへの権限を制御して、通常は特定のデーモンがアクセスできるようにすることです。これが正しいOWNERGROUPおよびディレクティブの目的MODEですSECLABEL

3番目の理由カテゴリは、デバイスが接続されたときに特定のアクションをトリガーすることです。たとえば、ファームウェアをデバイスにアップロードしたり、デバイスの使用モードを選択したり、システムの特定の部分に新しいネットワーク接続またはプリンタを使用できることを知らせる必要があります。

おすすめ記事