Я хочу смонтировать USB-накопитель на /media
основе UUID диска. Как я могу использовать UUID USB-диска в файле правил udev и что такое правило udev для монтирования USB-диска с номером UUID в качестве имени папки.
Команда blkid
выводит UUID диска, но только после монтирования.
Ответы:
Хотя UUID не доступны напрямую через udev, по крайней мере, в Fedora и Ubuntu они задаются как переменные среды (
ENV
). Вы можете прочитать все переменные окружения устройства, позвонивudevadm info /dev/sdc
. Например, для NTFS на внешнем диске я получаю:Все с
E:
передом задается как переменная окружения.Сопоставление с UUID
Вы можете сопоставить это с
ENV{ID_FS_UUID}=="4A6F2ABC1232FA37"
. В качестве первого фильтра я сопоставляю,KERNEL=="sd?2"
чтобы убедиться, что я работаю только с блочными устройствами с правильным номером раздела. Полное правило будет выглядеть так:Команда logger полезна для подтверждения того, что правило действительно выполняется. Затем вы должны убедиться, что правило не содержит синтаксических ошибок с
udevadm test /dev/sdc2
. Ваш файл правил должен быть указан в выводе, и рядом с ним не должно появляться сообщений об ошибках. Теперь вы можете запустить все правила для вашего устройства , чтобы проверить , работает ли ваше правило , как и планировалось:sudo udevadm trigger /dev/sdc2
. Если ваше правило соответствует, вы найдете пользовательское сообщение в системном журнале (/var/log/syslog
или черезjournalctl -b
).Редактировать: ali_m указал, что переменные среды установлены по предыдущим правилам и, следовательно, доступны только в том случае, если ваш
.rules
файл имеет достаточно высокий лексикографический порядок . Начиная с "60" должно быть достаточно. Лично я начинаю свои правила с "zz" (если это возможно), чтобы сразу же отличить их от предопределенных правил.Использование UUID в
RUN
команде и в других местахУ Udev достаточно мощный синтаксис подстановки переменных и атрибутов . В частности, каждый случай
$env{ID_FS_UUID}
будет заменен на UUID диска. Таким образом, чтобы смонтировать устройство под/media/
UUID
вы можете использовать это правило:Вы, вероятно, хотите вместо этого настроить udisks, он специализирован для проблемного пространства, которое вы хотите решить. См. Https://wiki.archlinux.org/index.php/udisks#udisks2:_mount_to_.2Fmedia в качестве отправной точки.
Фактический пример использования для монтирования устройств с udev вместо
/etc/fstab
udisks - это монтирование файловых систем zfs, которые имеют некоторые особенности, делающие их не совсем подходящими для обычных инструментов.источник
.rules
файла должно начинаться с цифры> 60 .Мне пришло в голову грубое решение. Установите соответствующую запись fstab, которая идентифицируется UUID. И в правилах udev выполняйте
mount -a
каждый раз, когда добавляется новое устройство sd *.источник