私は現在、Arch LinuxノートブックにMTP Androidデバイスを自動的にマウント/マウント解除できるいくつかのsystemd / udev設定ファイルを作成しようとしています。少し時間がかかりましたが、これまではうまくいっています。
fuse
これで、権限を持つすべてのユーザーがデバイスをマウント解除できるようになります。これまでは、go-mtpfs
起動時と同じユーザーだけがこれを実行できます。
私はMTPが何の結果もなくデバイスを切り離すことができるように設計されていることをよく知っていますが、NautilusでEject(取り出し)をクリックしたときに表示されるエラーメッセージは少し予期せず、うまくいきません。
以下を試しましたが失敗しました。
fuse
グループに自分自身を追加し、自分go-mtpfs
で始めてroot
から自分で削除してみてください。go-mtpfs
ユーザーとグループから始めて、グループからもfuse
自分で削除しようとしました。fuse
どんなアイデアがありますか?また、チームに頼らずに同じことをするエレガントな方法がある場合は、fuse
これについて聞きたいです!
システムサービス (/etc/systemd/system/android-mtp.service):
[Service]
Type=forking
ExecStartPre=/bin/mkdir -p /media/Android
ExecStart=/usr/sbin/daemonize -l /var/lock/go-mtpfs.lock /usr/bin/go-mtpfs -allow-other=true /media/Android
ExecStop=/bin/umount /media/Android
ExecStopPost=/bin/rmdir /media/Android
udevルール (/etc/udev/rules.d/99-android-mtp.rules):
# Google Nexus 7 16 Gb Bootloader & recovery mode
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0666" # Bootloader
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0666" # Recovery
# Google Nexus 7 16 Gb PTP mode (camera)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e43", MODE="0666" # PTP media
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e44", MODE="0666" # PTP media with USB debug on
# Google Nexus 7 16 Gb MTP mode (multimedia device)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e41", MODE="0666" # MTP media
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0666" # MTP media with USB debug on
# Google Nexus 7 MTP mode : automatic unmount when unplugged (all android versions)
ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e41", ACTION=="remove", RUN+="/usr/bin/systemctl stop android-mtp.service"
ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e42", ACTION=="remove", RUN+="/usr/bin/systemctl stop android-mtp.service"
ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e41", ACTION=="remove", RUN+="/usr/bin/systemctl stop android-mtp.service"
ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e42", ACTION=="remove", RUN+="/usr/bin/systemctl stop android-mtp.service"
# Google Nexus 7 MTP mode : automatic mount when plugged (all android versions)
ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e41", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}="android-mtp.service"
ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e42", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}="android-mtp.service"
ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e41", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}="android-mtp.service"
ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e42", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}="android-mtp.service"
答え1
このfuse
グループは、FUSEファイルシステムをマウントできる人を表します。意図は、このグループの誰も他の人がインストールしたファイルシステムをアンマウントすることを許可しないことです。これをマウントしたユーザー(rootユーザー)のみがファイルシステムをマウント解除できます。
あなたはそれを使用することができますSudo権限グループfuse
のユーザーは、インストールを実行したのと同じユーザーとして削除コマンドを実行します。visudo
次のように行を追加するには、実行してください。
%fuse ALL = (fuse) fusermount -u /media/Android
自分で設置してみてはいかがでしょうか?これはFUSEを使用する一般的な方法です。