Я написал некоторую информацию об использовании udev в качестве автомонтера в предыдущем ответе ; он (или ресурсы, на которые он ссылается) может пролить свет на вас.
Мне не ясно, что именно ваш вопрос
Относительно отдельных правил добавления и удаления: вы можете объединить их, если отбросите совпадение ACTION, но это может привести к слишком частому срабатыванию правила. Я думаю, что лучше явно соответствовать каждому правилу. Или еще лучше (по причинам, обсуждаемым в разделе « Размонтирование » ниже), вообще удалите правило «удалить» .
Относительно действий RUN в правилах uDev: Действие RUN в вашем правиле uDev должно быть выполнено быстро . Взгляните на пример, с которым я связан; вы увидите, что есть два сценария - uDev вызывает один, который раскручивает другой для фактического монтирования, позволяя первому своевременно вернуть управление обработкой обратно в uDev. Если вы уже делаете это, отлично; если нет, подумайте о настройке ваших сценариев аналогичным образом.
Что касается размонтирования: у меня было много проблем с автоматическим размонтированием при удалении устройства, и в конце концов я решил вообще не использовать правило «удалить» . Вместо этого я написал отдельный скрипт unmounter, который заменил правило «remove» .
Это потому, что вы действительно должны дать ОС столько времени, сколько нужно, чтобы закрыть устройство, прежде чем физически удалить его. Одно дело дергать диск, если вы смонтировали файловую систему только для чтения, но полную файловую систему для чтения и записи следует по возможности аккуратно демонтировать. (Это то, что делает опция «Безопасное извлечение диска» в Windows - это механизм для размонтирования диска перед физическим удалением устройства из системы.)
С обычной файловой системой я смог заставить некоторые размонтирования работать «правильно», используяsync
опцию во время монтирования иumount -l
(ленивое размонтирование) при размонтировании. Ленивые размонтирования говорят ядру немедленно отключить файловую систему, но очищают ссылки на файловую систему позже, когда они больше не заняты. Это работает, но это не так безопасно для данных, как полное демонтирование перед удалением устройства.
По тем же причинам у вас могут возникнуть проблемы с работой ленивых размонтированных файлов с зашифрованной файловой системой. Устройство отображения устройств добавляет еще один уровень сложности поверх стандартных проблем файловой системы. Мне кажется, это сделало бы зашифрованную файловую систему еще более чувствительной к нечистому демонтажу. (Однако я не очень разбираюсь в зашифрованных FS, поэтому они могут это терпеть.)
Надеюсь, это даст вам некоторые советы. Честно говоря, для целей автонастройки uDev работоспособен, но не идеален. Демон HalEvt или новее DeviceKit, вероятно, будет более подходящим.