Udisks
関連記事
udisks には、ストレージデバイスに問い合わせたり制御を行うために使われる D-Bus インターフェイスを実装した udisksd というデーモンと、デーモンを利用したりクエリを送るのに使われる udisksctl というコマンドラインツールが含まれています。
目次
インストール
udisks には互換性のない2つのバージョン、udisks と udisks2 が存在します。udisks の開発は終了しており udisks2 に移行しています [1]。
udisksd (udisks2) と udisks-daemon (udisks) は D-Bus によって必要の応じて起動するので、明示的に有効にする必要はありません (man udisksd
や man udisks-daemon
を参照)。
設定
udisks を使ってユーザーが行うことができるアクションは Policykit によって制限されます。セッションが有効でなかったり存在しない場合は、手動で policykit を設定して下さい。以下のファイルは storage
グループに一般的な udisks 権限を設定します [2]。
/etc/polkit-1/rules.d/50-udisks.rules
polkit.addRule(function(action, subject) { var YES = polkit.Result.YES; var permission = { // only required for 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, // only required for 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 }; if (subject.isInGroup("storage")) { return permission[action.id]; } });
[3] に他にも様々な例があります。
マウントヘルパー
udisks ラッパーを使うことでデバイスの自動マウントは簡単に行うことができます。アプリケーション一覧#マウントツールやファイルマネージャの機能#マウントも参照。
Devmon
udevil には devmon が含まれており、udisks と udisks2 の両方に対応しています。以下の順番でマウントヘルパーを利用します:
- udevil (SUID)
- pmount (SUID)
- udisks
- udisks2
udisks や udisks2 を使ってデバイスをマウントするには、udevil から SUID パーティションを取り除いて下さい:
# chmod -s /usr/bin/udevil
Tips and tricks
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 [...]
udisks2: /media にマウント
デフォルトで、udisks2 はリムーバルドライブを /media/
ではなく ACL によって制御される /run/media/$USER/
ディレクトリにマウントします。/media
にマウントしたい場合は、このルールを使って下さい:
/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"
ISO イメージのマウント
ISO イメージを簡単にマウントするには、次のコマンドを使用:
$ udisksctl loop-setup -r -f image.iso
このコマンドはループデバイスを作成して ISO イメージをマウントできるようにします。アンマウントした時は、ループデバイスは udev によって消されます。
トラブルシューティング
udisks2: 物理的な取り出しボタンが動作しない
バージョン 2.1.3-1 まで手動のディスク取り出しは udisks2 で機能しません [4]。対応策としては、ソフトウェアを使うか、元の udisks を使ってイジェクトしてください。
udisks: デバイスがアンマウントされない
一定期間後 udisks はデバイスを再マウントしたりデバイスにポーリングします。このことによって、ドライブをフォーマットしたり、仮想マシンでドライブを共有したり、--detach
でデタッチしてなかったドライブを取り除くときに、予期しない動作が発生することがあります。
特定のデバイスのポーリングを無効化するには、次を実行:
# udisks --inhibit-polling /dev/sdX
全てのデバイスで無効化するには:
# udisks --inhibit-all-polling
詳しくは man udisks
を参照。