udev+udisks2: udisksctl が「デバイスオブジェクトの検索中にエラーが発生しました」と表示します。

udev+udisks2: udisksctl が「デバイスオブジェクトの検索中にエラーが発生しました」と表示します。

Debian Wheezyにはntfs USBドライブに関する特別な規則があります。挿入すると、/mediaの特定のサブフォルダにインストールされます。

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", SYMLINK+="mx%n"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/mount <options>", OPTIONS="last_rule"
ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/umount <options>"

Jessieにアップデートした後、動作が停止しました。 udevを変更した後、mountが利用できないことがわかりました。 udisks2や自宅で作成したシステムデバイスを使用することをお勧めします。 udisks2を選択し、次のようにルールを再構築します。

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", SYMLINK+="mx%n"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/su storage_user -c '/usr/bin/udisksctl mount --block-device /dev/mx1 --filesystem-type ntfs --options locale=en_IE.UTF-8,fmask=0113,dmask=0002 --no-user-interaction'", OPTIONS="last_rule"
ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/usr/bin/udisksctl unmount --block-device /dev/mx1 --no-user-interaction"

これはうまくいきません。システムログに以下が表示されます。

Error looking up object for device /dev/mx1

ただし、cliでこのコマンドを実行すると正常に動作します。私はsystemdサービスの非同期特性のためにudisk2がUSBハードドライブをマウントしようとしたときに/ dev / mx1が準備されていないと思います。

  1. どのルールを作成する必要がありますか?
  2. カスタム自動マウントルールを作成する方法(特にntfsファイルシステムの場合)の良いガイドはインターネットにありますか?

答え1

残念ながら理由が見つかりませんウデブそしてUSB 2一緒に働きません。しかし、私の問題に対する解決策を見つけました。ここ。以下は、NTFS USBハードディスクを自動的にマウントする方法の簡単な例です。まずスクリプトですファイルのマウントインストールドライバ

#!/bin/bash
mkdir -p /media/usbhdd
mount -t ntfs-3g -o locale=en_IE.UTF-8,fmask=0113,dmask=0002,uid=storage-user,gid=storage-group /dev/mx1 /media/usbhdd

次に、システムユニットを作成します。/etc/systemd/system/mount-hdd.service

[Unit]
Description=mount usb hdd
[Service]
Type=forking
ExecStart=/usr/local/scripts/storage/mount.sh
[Install]
WantedBy=multi-user.target

最後に、udevルールがあります。

ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd*", ATTRS{serial}=="<serial_number>", SYMLINK+="mx%n"
ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd*1", ATTRS{serial}=="<serial_number>", RUN+="/bin/systemctl start mount-hdd"
ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/umount /media/usbhdd", RUN+="/bin/rmdir /media/usbhdd"

関連情報