Udisks, udisks-glue - авто монтирование устройств

Предисловие

Раньше я пользовался 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>. Всем спасибо.

В последней версии udisks-glue ругается на disk_closed, нужно писать optical_disk_closed.

Или удалить совсем.

Родион Дорошкевич писал(а):

В последней версии udisks-glue ругается на disk_closed, нужно писать optical_disk_closed.

спс

Полагаю что да, ну по логике )) методом проб…

а можно ли с помощью udisks-glue извлекать устройства? я имею в виду действие udisks --detach.
я попробовал изменить команду

post_unmount_command = "udisks --unmount %device_file %mount_point"

на

post_unmount_command = "udisks --unmount %device_file %mount_point --detach %device-file"

но ничего из этого не вышло. они не детачатся…

я попробовал, но ничего не вышло. они не детачатся =(((

Походу надо разбираться с udisks, в консоли мне удалось только так:

udisks --unmount /dev/sdb1 && udisks --detach /dev/sdb

найдешь решение, отпиши, может кому пригодится… может надо как то через конвейер, но это догадки…

post_unmount_command = "udisks --unmount %device_file %mount_point udisks --detach %device-file"

или

post_unmount_command = "udisks --unmount %device_file %mount_point && udisks --detach %device-file"

или еще как…

Достаточно просто sync и после отработки можно доставать.