У меня есть 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" в другом месте.