すべてのudevルールをリストしますか(例:デバイス)?


10

すべてのudevルールをリストする方法を知りたいです。

私はそれらが潜在的*.rulesにこれらのディレクトリ内のファイルに行(1行= 1ルール)として格納される可能性があることを知っています

/etc/udev/rules.d
/lib/udev/rules.d
/run/udev/rules.d
/var/run/udev/rules.d

したがって*.rules、これらのディレクトリ内のすべてのファイルを単純に連結することで、すべてのルールを見つけることができます。これは機能していないようです(いくつかのルールが実行されているため、これらのディレクトリにルールとしてのウェアを見つけることができません)。

せいぜい、udevadmインターフェースに、udevが現在持っているすべてのルールを出力できるコマンドがあると思いました。

確かに私はレビューをしましたがman udevadm、特にその部分udevadm info [parameters]は何の結果ももたらしていないようです。

udevが非常に同じデバイスをターゲットとする多数のファイルとルールを許可していることを考えると、デバイスのすべてのルールを作成するための効率的/実行可能な方法を知らないとイライラします。


4
残念ながら、systemdを使用している場合、そのバージョンのudevには複雑な「永続的な命名方式」があり、udevdハードコードされているので、構文解析するだけでrules.d多くの謎が残る可能性があります。
goldilocks 2015

回答:


11

使用する場合:

udevadm monitor

KERNELおよびUDEVによって実行された各アクションのエントリを取得します。通常は、追加、変更、削除します。--propertyオプションを含める場合:

udevadm monitor --property

使用されているプロパティのリストが表示されます。


udevadmでudevルールをテストできるので:

udevadm test $(udevadm info -q path -n <device>)

次のように何かをテストできます:

udevadm test $(udevadm info -q path -n <device>) 2>&1 | \
sed -n 's/.* \(\/[^ ]*\)\.rules:\([0-9]\+\)/\1.rules \2/p' | \
while read -r f n; do printf "%03d:%-50s " $n "$f"; sed -n ${n}p $f; done

しかし、これがどれほど信頼できるかはわかりません。とにかく、例えばそのvideo1ために使用する<device>と、次のようなものが得られます:

031:/lib/udev/rules.d/50-udev-default.rules            SUBSYSTEM=="video4linux", GROUP="video"
007:/lib/udev/rules.d/60-persistent-v4l.rules          IMPORT{program}="v4l_id $devnode"
009:/lib/udev/rules.d/60-persistent-v4l.rules          SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"
010:/lib/udev/rules.d/60-persistent-v4l.rules          KERNEL=="video*", ENV{ID_SERIAL}=="?*", SYMLINK+="v4l/by-id/$env{ID_BUS}-$env{ID_SERIAL}-video-index$attr{index}"
016:/lib/udev/rules.d/60-persistent-v4l.rules          IMPORT{builtin}="path_id"
017:/lib/udev/rules.d/60-persistent-v4l.rules          ENV{ID_PATH}=="?*", KERNEL=="video*|vbi*", SYMLINK+="v4l/by-path/$env{ID_PATH}-video-index$attr{index}"
015:/lib/udev/rules.d/73-seat-late.rules               TAG=="uaccess", ENV{MAJOR}!="", RUN{builtin}+="uaccess"
006:/etc/udev/rules.d/83-webcam.rules                  KERNEL=="video[0-9]", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0c45", SYMLINK+="video-webcam1"

しかし、テスト全体を見ると良いと思います。メッセージにも注意してください:

このプログラムはデバッグ専用で、RUNキーで指定されたプログラムを実行しません。一部の値が異なる場合や、シミュレーションの実行時に使用できない場合があるため、誤った結果が表示されることがあります。


設定することもできます

udev_log="debug"

in udev.confおよびudev(reload udev)を再起動して、やや詳細な出力を取得します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.