Udisks (Русский)
Ссылки по теме
udisks предоставляет демон udisksd, который реализует интерфейс D-Bus, используемый для запроса и управления устройств хранения данных и инструмента командной строки udisksctl, используемый для запросов и использования в качестве демона.
Contents
Установка
Существует две версии udisks по имени udisks и udisks2. Разработка udisks прекратилась в пользу udisks2. [1]
udisksd (udisks2) и udisks-демон (udisks) запускаются по требованию D-Bus и не должны быть включены явно (см. man udisksd
и man udisks-daemon
). Ими можно управлять через командную строку с помощью udisksctl и udisks, соответственно. Для получения дополнительной информации смотрите man udisksctl
и man udisks
.
Настройка
Действия пользователя, на выполнение и использование udisks, ограничиваются Policykit. Если Вашей сессии нет или она не активируется, настройте policykit вручную. Следующий файл устанавливает общие полномочия udisks для группы storage
. [2]
/etc/polkit-1/rules.d/50-udisks.rules
polkit.addRule(function(action, subject) { var YES = polkit.Result.YES; var permission = { //Требуется только для udisks1: "org.freedesktop.udisks.filesystem-mount": YES, "org.freedesktop.udisks.filesystem-mount-system-internal": YES, "org.freedesktop.udisks.luks-unlock": YES, "org.freedesktop.udisks.drive-eject": YES, "org.freedesktop.udisks.drive-detach": YES, //Требуется только для udisks2: "org.freedesktop.udisks2.filesystem-mount": YES, "org.freedesktop.udisks2.filesystem-mount-system": YES, "org.freedesktop.udisks2.encrypted-unlock": YES, "org.freedesktop.udisks2.eject-media": YES, "org.freedesktop.udisks2.power-off-drive": YES, //Требуется только для udisks2, при использовании udiskie с другого места (например, systemd): "org.freedesktop.udisks2.filesystem-mount-other-seat": YES, "org.freedesktop.udisks2.encrypted-unlock-other-seat": YES, "org.freedesktop.udisks2.eject-media-other-seat": YES, "org.freedesktop.udisks2.power-off-drive-other-seat": YES }; if (subject.isInGroup("storage")) { return permission[action.id]; } });
Более строгие примеры смотрите тут. Обратите внимание на настройки org.freedesktop.udisks2.filesystem -*
, необходимые чтобы запустить udiskie со службой systemd.
Помощники монтирования
Автоматическое монтирование устройств легко достигается с оболочками udisks[broken link: invalid section]. См. также Список приложений#Монтирование[broken link: invalid section] и File manager functionality#Mounting.
Devmon
udevil включает devmon, который совместим с udisks и udisks2.Он использует помощников монтирования со следующим приоритетом:
- udevil (SUID)
- pmount (SUID)
- udisks
- udisks2
Для монтирования устройств с udisks или udisks2 удалите разрешение SUID из udevil:
# chmod-s/usr/bin/udevil
inotify
Вы можете использовать inotify-tools, чтобы контролировать /dev
и монтировать диски, когда создается новое блочное устройство. Устаревшие точки монтирования автоматически удаляются udisksd, так, что никаких специальных действий не требуется для удаления.
#!/bin/bash pattern='sd[b-z][1-9]$' coproc inotifywait --monitor --event create,delete --format '%e %w%f' /dev while read -r -u "${COPROC[0]}" event file; do if [[ $file =~ $pattern ]]; then case $event in CREATE) echo "Settling..."; sleep 1 udisksctl mount --block-device $file --no-user-interaction ;; DELETE) ;; esac fi done
Советы и хитрости
Отключить скрытие устройств (udisks2)
По умолчанию Udisks2 скрывает определенные устройства от пользователя. Если это поведение нежелательно или создаёт неудобства, скопируйте /usr/lib/udev/rules.d/80-udisks2.rules
в /etc/udev/rules.d/80-udisks2.rules
, и удалите следующий раздел в копии:
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # Devices which should not be display in the user interface [...]
Монтировать в /media (udisks2)
По умолчанию, udisks2 монтирует съемные диски в контролируемом каталоге ACL /run/media/$USER/
. Если Вы хотите вместо этого монтировать в /media
, используйте это правило:
/etc/udev/rules.d/99-udisks2.rules
# UDISKS_FILESYSTEM_SHARED # == 1: монтировать файловую систему в общий каталог (/media/VolumeName) # == 0: монтировать файловую систему в частный каталог (/run/media/$USER/VolumeName) # Смотрите udisks (8) ENV {ID_FS_USAGE} == «filesystem|other|crypto», ENV {UDISKS_FILESYSTEM_SHARED} = «1»
Монтирование ISO-образа
Для простого монтирования ISO-образов, используйте следующую команду:
$ udisksctl loop-setup -r -f image.iso
Это создаст циклическое устройство и покажет готовый к монтированию ISO-образ. После размонтирования, циклическое устройство будет завершено udev.
Скрыть выбранные разделы
Если Вы хотите скрыть определенные разделы или диски, появляющиеся на рабочем столе, Вы можете создать правило udev, например /etc/udev/rules.d/10-local.rules
:
KERNEL == «sda1», ENV {UDISKS_PRESENTATION_HIDE} = «1» KERNEL == «sda2», ENV {UDISKS_PRESENTATION_HIDE} = «1»
- показать все разделы за исключением sda1
и sda2
на Вашем рабочем столе. Заметьте, если вы используете udisks2, вышеупомянутое правило не будет работать, поскольку UDISKS_PRESENTATION_HIDE
больше не поддерживается. Вместо этого используйте UDISKS_IGNORE
следующим образом:
KERNEL == «sda1», ENV {UDISKS_IGNORE} = «1» KERNEL == «sda2», ENV {UDISKS_IGNORE} = «1»
Решение проблем
udisks: Устройства не остаются размонтированными
udisks повторно монтирует устройства или опрашивает их после установленного времени. Это может вызвать неожиданное поведение, например при форматировании дисков, совместном использовании их в виртуальной машине, экономия электроэнергии, или удалении дисков не отсоединенных с помощью --detach
.
Отключить опрос относительно данного устройства, например устройства CD/DVD:
# udisks --inhibit-polling /dev/sr0
или для всех устройств:
# udisks --inhibit-all-polling
Для получения дополнительной информации смотрите man udisks
.