私は現在、MTP AndroidデバイスをArchLinuxラップトップに自動マウント/アンマウントできるようにするsystemd/udev構成ファイルをいくつか書き込もうとしています。少し時間がかかりましたが、これまでのところそれはかなりうまく機能します。
ここで、Fuse
権限を持つすべてのユーザーがデバイスをアンマウントできるようにしたいと思います。これまでのところ、go-mtpfs
が開始されたのと同じユーザーに対してのみ可能です。
MTPは、デバイスのプラグを抜くだけで問題が発生しないように設計されていることはよく知っていますが、Nautilusで[取り出し]をクリックするとエラーメッセージがポップアップ表示されるのは予想外で、あまり良いことではありません。
私は以下を試しましたが失敗しました:
Fuse
グループに追加し、go-mtpfs
をroot
として開始し、自分としてアンマウントしてみますgo-mtpfs
をFuse
ユーザーおよびグループとして開始し、同じくFuse
グループ内で自分自身としてアンマウントしてみます何か案が?また、Fuse
グループに依存せずに同じことを達成するためのエレガントな方法がある場合は、ぜひお知らせください。
systemdサービス(/ 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
devルール(/ 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"
Fuse
グループは、Fuseファイルシステムをマウントできるユーザーを示すことを目的としています。そのグループの誰もが他の人によってマウントされたファイルシステムをアンマウントできるということではありません。ファイルシステムをアンマウントできるのは、マウントを実行しているユーザー、つまりrootだけです。
Sudo を使用して、Fuse
グループのユーザーに、マウントを実行したのと同じユーザーとしてアンマウントコマンドを実行することを許可できます。 visudo
を実行して、次のような行を追加します。
%Fuse ALL = (Fuse) fusermount -u /media/Android
自分でマウントしてみませんか?これがFuseを使用する通常の方法です。