Udevはデバッグするのが難しいです。 - システム起動中の元の環境は、後で再実行している間は常に環境から少しずつ外れます。
だから私は試行錯誤ではなくudevの理解に基づいてudevルールを作成しようとしています。
大きな質問は次のとおりです。ホットプラグ/コールドプラグ中にどのudev属性を使用できますか?
混乱は、次の2つのコマンドに由来します。
udevadm test /sys/class/net/wlx801f024ddc32
udevadm info --attribute-walk --path=/sys/class/net/wlx801f024ddc32
たとえば、両方とも list SUBSYSTEM
udev-rules で動作することがわかります。ただし、前者のみでDEVTYPE
(少なくともWLANデバイスの場合)、後者のみですKERNEL
。
実際に起動中にDEVTYPE(たとえば「wlan」)が必要ですが、ルールが適用されると使用できないようです。
答え1
これが私の理解です:
udevadm info -a
:属性ATTRS{}
とデバイス階層を表示します。udevadm test
:ENV{}
udev 処理中の変数を表示します。
同じタイプの情報を表示しません。 DEVTYPE変数が存在する可能性があるため、テストする必要がありますENV{DEVTYPE}=="wlan"
。ただし、ENV {}変数はudev処理中に徐々に生成されることを考慮する必要があります。したがって、ルールの順序が重要です。ルールは、ENV{DEVTYPE}
他のルールが作成された後に表示する必要があります。
次のコマンドを使用して "udev_actions.txt"ファイルを分析して、オブジェクトの順序を推論できます。その後、テスト用に「.rules」ファイルに最適な番号を指定できますENV{DEVTYPE}
。
$ sudo udevadm test $DEVPATH 1> udev_ENV.txt 2> udev_actions.txt