Предисловие
Раньше я пользовался halevt для авто монтирования различных устройств типа флэшки и съемные usb накопители. Но с недавних пор, halevt оказался в дереве portage - хард маск. Halevt был зависим от hal, который я успешно удалил за ненадобностью, зачем он мне без halevt. И тут возник вопрос, как же мне теперь монтировать устройства, и конечно же, желательно штатными средствами из того, что есть в portage. Поспрашивав бывалых, в нашем irc.freenode.net #calculate-ru, мне был предложен вариант, в качестве ссылки на статью известного в рунете гика. Статья интересная, но мне как то не подошла, вернее для себя я извлек лишь часть нужного мне, как то udisks и в коментах статьи упоминание о udisks-glue. Полазив в сети и поискав подробностей, толком не чего не нашел, в смысле нужного мне, готового решения с пошаговым руководством, как только разговоров о том, что udisks заменит hal и где то уже заменил и прижился.
Краткое описание
udisks предоставляет интерфейс для перечисления устройств хранения данных и выполнения операций над ними. Любое приложение может получить доступ org.freedesktop.UDisks службы по шине сообщений системы. Некоторые операции (например, форматирование дисков и т.д.) ограничивается использованием polkit.
udisks-glue - инструмент, чтобы связать события udisks c определенными действиями пользователя.
udisks-glue прислушивается к событиям UDisks DBus и реагирует на них согласно конфигурации.
По правде говоря, описание всех возможностей и специфики выше перечисленных приложений, мне лично не о чем не говорит, лишь дает общее представление о том, что они могут, все, что мне требовалось, так это авто монтирование устройств, о чем я здесь и пишу.
Действие
Задача, установить необходимые приложения — udisks, udisks-glue:
emerge sys-fs/udisks sys-fs/udisks-glue
Для запуска udisks-glue создаем конфигурационный файл, пример и описание есть в man udisks-glue, здесь пример немного подправлен, что бы он не матерился.
touch $HOME/.udisks-glue.conf
Собственно содержание файла:
filter disks {
optical = false
usage = filesystem
}
match disks {
post_insertion_command = "udisks --mount %device_file --mount-options sync"
post_mount_command = "udisks --mount %device_file %mount_point"
post_unmount_command = "udisks --unmount %device_file %mount_point"
}
#
# Filters
#
filter disks {
optical = false
usage = filesystem
}
filter burnable {
optical = true
disc_closed = false
}
filter optical {
optical = true
}
#
# The default entry
#
default {
post_mount_command = "udisks --mount %device_file %mount_point"
post_unmount_command = "udisks --unmount %device_file %mount_point"
}
#
# Additional entries
#
match disks {
post_insertion_command = "udisks --mount %device_file --mount-options sync"
}
match burnable {
post_insertion_command = "k3b %device_file"
post_mount_command = ""
}
match optical {
post_insertion_command = "udisks --mount %device_file --mount-options ro"
}
Добавить запись в $HOME/.xinitrc :
udisks-glue -f &
Перезагружаем иксы, подключаем устройства, смотрим в директорию /media.
Замечание, что мне понравилось. После копирования файлов на флешку, в целях тестирования, размонтировать ее не стал, тупо выдернул, следов устройства и файлов в точке монтирования не осталось, после очередного подключения, проверка показала,скопированные файлы на устройстве в целости и сохранности.
Насколько правильным является данное решения, не знаю, для себя задачу минимум выполнил, что ожидал то и получил.
P.S. Если udisks откажется монтировать от пользователя, в файле /usr/share/polkit-1/actions/org.freedesktop.udisks.policy найдите все вхождения <allow_any>no</allow_any> и замените на <allow_any>yes</allow_any>. Всем спасибо.