udisks (Русский)

Ссылки по теме
udev (Русский)
mount (Русский)
Polkit
Функциональность файлового менеджера
Состояние перевода:
На этой странице представлен перевод статьи
udisks
. Дата последней синхронизации: 7 января 2022. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
udisks
состоит из двух основых элементов: демона
udisksd
, который предоставляет интерфейсы
D-Bus
для управления устройствами хранения, и утилиты командной строки
udisksctl
, с помощью которой пользователь взаимодействует с демоном.
Установка
Установите
пакет
udisks2
.
Демон
udisksd(8)
запускается через
D-Bus
"по требованию" и включать его вручную не нужно. Управлять демоном можно утилитой
udisksctl(1)
.
Примечание
Разработка первой версии
udisks
была прекращена, чтобы разработчики могли сосредоточить усилия на
udisks2
[1]
. Старая версия
udisks
AUR
[
ссылка недействительна
: package not found]
доступна в AUR. Демон
udisks
называется
udisks-daemon
, он также запускается "по требованию"; для управления демоном используйте команду
udisks
.
Настройка
Набор действий, которые пользователь может выполнять с udisks, определяется разрешениями
Polkit
. Если
пользовательский сеанс
неактивен или не существует вовсе (например, при управлении udisks из службы
systemd/Пользователь
), необходимо соответствующим образом настроить Polkit.
В
[2]
описаны стандартные настройки прав для группы
storage
, в
[3]
приведён пример с более жёсткими ограничениями. Если вы используете
Dolphin
, то стоит также изучить
[4]
.
Использование
Следующая команда выполнит монтирование съёмного устройства, например,
/dev/sdc
:
$ udisksctl mount -b /dev/sdc1
Размонтирование:
$ udisksctl unmount -b /dev/sdc1
Смотрите
udisksctl help
для более подробной информации.
Советы и рекомендации
Программы для монтирования
Существует ряд программ-обёрток для udisks, которые позволяют настроить автоматическое монтирование устройств. Смотрите также
List of applications/Utilities#Mount tools
.
Примечание
Некоторые
окружения рабочего стола
, например,
GNOME
или
KDE
, имеют собственную встроенную обёртку для udisks.
bashmount
— Сценарий Bash для монтирования и управления съёмными устройствами обычным пользователем с помощью
udisks2
.
https://github.com/jamielinux/bashmount
||
bashmount
AUR
udiskie
—  Программа автоматического монтирования для
udisks2
с уведомлениями, иконкой в системном трее и поддержкой защищённых паролем
LUKS-устройств
. Подробнее см.
udiskie wiki
https://github.com/coldfix/udiskie
||
udiskie
udisksvm
— Обёртка для
udisks2
с графическим интерфейсом, написанная на Python3 с использованием фреймворка Qt5. Монтирование/размонтирование съёмных устройств и извлечение CD/DVD кликами мыши. Подробнее см.
README
.
https://github.com/berbae/udisksvm
||
udisksvm
AUR
udevil
— Включает в себя
devmon
, который совместим с
udisks
и
udisks2
.
https://github.com/IgnorantGuru/udevil
||
udevil
AUR
[
ссылка недействительна
: package not found]
Примечание
devmon
использует
udisks
или
udisks2
(именно в таком порядке) только в том случае, если у
udevil
или
pmount
отсутствует SUID-бит. Убрать его можно с помощью команды
# chmod -s /usr/bin/
udevil
.
udevadm monitor
Команду
udevadm monitor
можно использовать для отслеживания связанных с блочными устройствами событий, а также для монтирования носителя при создании нового блочного устройства. Неактуальные точки монтирования удаляются демоном
udiskd
в автоматическом режиме, поэтому специальных действий по их удалению предпринимать не нужно.
#!/bin/sh

pathtoname() {
    udevadm info -p /sys/"$1" | awk -v FS== '/DEVNAME/ {print $2}'
}

stdbuf -oL -- udevadm monitor --udev -s block | while read -r -- _ _ event devpath _; do
        if [ "$event" = add ]; then
            devname=$(pathtoname "$devpath")
            udisksctl mount --block-device "$devname" --no-user-interaction
        fi
done
Монтирование в  /media (udisks2)
По умолчанию udisks2 монтирует съёмные устройства в каталог
/run/media/$USER/
, который находится под управлением
ACL
. Если вы желаете изменить каталог монтирования на
/media
, создайте следующее правило udev:
/etc/udev/rules.d/99-udisks2.rules
# UDISKS_FILESYSTEM_SHARED
# ==1: mount filesystem to a shared directory (/media/VolumeName)
# ==0: mount filesystem to a private directory (/run/media/$USER/VolumeName)
# See udisks(8)
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"
Поскольку каталог
/media
в отличие от
/run
не монтируется по умолчанию с файловой системой
tmpfs
, возможно, вы также захотите создать сниппет в каталоге
tmpfiles.d
, который будет удалять устаревшие точки монтирования при каждой загрузке:
/etc/tmpfiles.d/media.conf
D /media 0755 root root 0 -
Монтирование петлевых устройств
Для монтирования ISO-образов воспользуйтесь следующей командой:
$ udisksctl loop-setup -r -f
image.iso
Это создаст петлевое устройство и сделает образ готовым к монтированию. После размонтирования
udev
удалит петлевое устройство.
Примечание
Смонтированный этим способом образ будет доступен только на чтение. Для монтирования образа также и на запись (например, для
QEMU
), в команде выше не указывайте флаг
-r
, а после завершения работы с образом отключите устройство командой
udisksctl loop-delete -b
/dev/loop0
(замените
/dev/loop0
на название вашего петлевого устройства).
Сокрытие отдельных разделов
Если вы не хотите, чтобы определённые разделы или носители отображались на рабочем столе, можно создать правило 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"
Поскольку названия блочных устройств могут изменяться от загрузки к загрузке, то имеет смысл использовать UUID раздела или устройства, который можно узнать командой
blkid /dev/sdX
:
# blkid /dev/sdX
/dev/sdX: LABEL="Filesystem Label" UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX" UUID_SUB="YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY" TYPE="btrfs"
После этого можно создать следующее правило:
SUBSYSTEM=="block", ENV{ID_FS_UUID}=="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX", ENV{UDISKS_IGNORE}="1"
Помимо обычного применения, этим правилом можно также скрыть целую файловую систему
btrfs
с несколькими устройствами, поскольку в этой системе UUID всех устройств совпадает, а различия определяются на основании SUB_UUID.
Применение настроек ATA (udisks2)
При запуске системы и при подключении устройства демон udiskd применяет настройки из файла
/etc/udisks2/
ИДЕНТИФИКАТОР
.conf
, где
ИДЕНТИФИКАТОР
— значение параметра Drive:Id для данного устройства. В настоящее время в udisks существует поддержка настроек ATA. Список доступных опций можно посмотреть в руководстве
udisks(8)
. Данные настройки по сути не отличаются от настроек
hdparm
, за тем исключением, что настройки ATA сохранятся при последующих автозапусках демона udisks.
Например, следующие настройки установят для устройства время ожидания 240 (20 минут):
/etc/udisks2/
DriveId
.conf
[ATA]
StandbyTimeout=240
Значение DriveId можно узнать командой
udevadm info --query=all --name=
sdx
| grep ID_SERIAL | sed "s/_/-/g"
.
В качестве альтернативы для работы с файлом настроек можно использовать какую-нибудь графическую утилиту, например
gnome-disk-utility
.
Для некоторых жёстких дисков после размонтирования, но перед физическим отключением питания может понадобиться отправить команду отключения для корректного завершения работы. Смотрите
hdparm#Power off a hard disk drive
, чтобы решить, требуется ли выполнять команду
hdparm -Y
для вашего диска.
Решение проблем
Скрытые устройства (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
[...]
Устройства не остаются размонтированными (udisks)
udisks
либо заново монтирует устройства по истечении некоторого периода, либо
опрашивает
такие устройства. Это может вызвать нежелательные эффекты, например, при форматировании дисков, совместной работе с ними в
виртуальной машине
, при работе в режиме энергосбережения или при удалении устройства, которое не было ранее отключено с параметром
--detach
.
Следующая команда отключит опрашивание выбранного CD/DVD устройства:
# udisks --inhibit-polling /dev/sr
0
То же самое, но для всех устройств одновременно.
# udisks --inhibit-all-polling
Подробнее см.
udisks(8)
.
Неправильно работает таймер ожидания (udisks2)
Демон udisks регулярно опрашивает устройства с целью сбора
S.M.A.R.T.
-данных. Жесткие диски, время ожидания которых больше интервала опрашивания, могут не успевать войти в режим standby. Устройства, которые уже вошли в этот режим, данной проблеме не подвержены. Судя по всему, в настоящий момент в
udisks2
не предусмотрено способа отключить опрашивание устройств или изменить интервал. См.
[5]
и
[6]
.
Тем не менее, время ожидания в udisks2 изменить можно. Подробнее см.
#Применение настроек ATA (udisks2)
.
Другие возможные обходные решения заключаются в задании отдельной задержки перед интервалом опрашивания (10 минут) или в ручном переводе диска в замедленный режим командой
hdparm -y /dev/
sdx
.
Не удаётся смонтировать NTFS-раздел
Если монтирование NTFS-раздела завершается неудачно с ошибкой
Error mounting /dev/sdXY at [...]: wrong fs type, bad option, bad superblock on /dev/sdXY, missing codepage or helper program
или какой-то другой, а команды
journalctl
/
dmesg
находят в логах ядра сообщение
ntfs: (device sdXY): parse_options(): Unrecognized mount option windows_names.
то проблема скорее всего в том, что udisks пытается использовать драйвер NTFS, который не понимает текущие опции монтирования.
Для решения проблемы установите
NTFS-3G
в качестве опциональной зависимости.
Смотрите также
Gentoo:udisks
(англ.)
Введение в udisks
[
устаревшая ссылка
2025-04-06 ⓘ]
(англ.)