web-dev-qa-db-ja.com

Ubuntu Hardy:udevルールの環境変数のテストが機能していないようです

Ubuntu 8.04 LTS(サーバーエディション)を使用していますが、USBサムドライブを接続したときに動作するようにudevルールを作成する必要があります。ただし、ドライブのファイルシステムに応じて異なるアクションが必要です。 ID_FS_TYPE環境変数を使用して、ドライブ上のファイルシステムを確認できることはわかっています。

見つかった指示に従って ここ 、私はダミーのudevルールをそのように試します:

KERNEL!="sd[a-z][0-9]", GOTO="my_udev_rule_end"
ACTION=="add", RUN+="/usr/bin/touch /tmp/test_udev_%E{ID_FS_TYPE}"
ACTION=="add", ENV{ID_FS_TYPE}=="vfat", RUN+="/usr/bin/touch /tmp/test_udev_it_works"
LABEL="my_udev_rule_end"

ただし、サムドライブをvfatファイルシステム(両方のルールをトリガーする必要があります)に接続すると、/tmp/test_udev_vfatというファイルになります。これは、最初のルールが正常にトリガーされたことを意味しますandID_FS_TYPE環境変数が「vfat」であるが、他のファイルがないため、ID_FS_TYPE環境変数が「vfat」であることはわかっているが、表示されない一致するかどうかを確認します。

グーグルしてみましたが、ほとんどすべての結果がENV{ID_FS_TYPE}=="vfat"が機能すると想定しているようです。また、Ubuntu 10.04 LTSサーバーでまったく同じudevルールをテストしたところ、同じ結果が得られました。

私はおそらく非常に単純なものが欠けていますが、私はそれを理解していません。 ENV {ID_FS_TYPE}での一致を妨げる私のudevルールの何が問題になっているのか誰かがわかりますか?

ありがとう。

6
Fred

ファイルの先頭に次の行を追加してみてください。

IMPORT {program} = "/ sbin/blkid -o udev -p%N"

1
JamieH

この行を追加しようとしましたか?

KERNEL == "sd [a-z] []"、IMPORT {program} = "/ lib/udev/vol_id/dev /%k"

「vol_id」は他の場所にあります。

0
Longchao Dong