Назад | Перейти на главную страницу

Ubuntu Hardy: проверка переменных окружения в правилах udev не работает

У меня есть Ubuntu 8.04 LTS (серверная версия), и мне нужно написать правило udev, чтобы оно действовало при подключении USB-накопителя. Однако мне нужно другое действие в зависимости от файловой системы диска. Я знаю, что могу использовать переменную среды 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, что означает, что первое правило сработало успешно, и что переменная среды ID_FS_TYPE - "vfat", но у меня нет другого файла, а это означает, что, хотя я знаю, что переменная env ID_FS_TYPE - "vfat", я не могу проверить ее на соответствие.

Я пробовал погуглить, но почти каждый результат предполагает ENV{ID_FS_TYPE}=="vfat" работает. Я также протестировал точно такое же правило udev на сервере Ubuntu 10.04 LTS, и получил тот же результат.

Я, наверное, упускаю что-то очень простое, но я этого просто не понимаю. Кто-нибудь видит, что не так с моим правилом udev, что мешает ему соответствовать на ENV {ID_FS_TYPE}?

Спасибо.

Попробуйте добавить следующую строку в начало файла:

ИМПОРТ {программа} = "/ sbin / blkid -o udev -p% N"

Вы пробовали добавить эту строчку?

ЯДРО == "sd [a-z] []", ИМПОРТ {программа} = "/ lib / udev / vol_id / dev /% k"

Вы можете найти "vol_id" в другом месте.