この記事は、NetBSD Advent Calendar 2016の13日目の記事です。
はじめに
6日目の記事で、 gphoto2を使って、NetBSDからMTPデバイスの中身を普通のディスクにコピーしてくることは できるようになりました。
しかし、やはりmtools的な操作では使い勝手が良くありません。
動作確認のとれたgphotos2を使ったFUSEモジュールであるpkgsrc/filesystems/fuse-gphotos
を試してみました。
fuse-gphotofsのインストール
gphotofsは、既にpkgsrcに取り込まれていました。 ですので、以下のように簡単にインストールすることができます。
$ cd /usr/pkgsrc/filesystems/fuse=gphotofs
$ make install
$ make clean-depends clean
準備はできました。
マウントしてみよう
NetBSD/amd64 7.99.51では、特にエラーもなく
pkgsrc/filesystems/fuse-gphotofs
はインストールできました。
実際にマウントしてみます。
6日目の記事の反省を踏まえ、Xperia Z Ultraはロック状態ではない状態に
しておきます。
/usr/pkg/share/doc/fuse-gphotofs/README
によると、
マウントは以下のように実行すれば良いようです。
# gphotofs /mnt/usbssd
複数のMTPデバイスをつないでいる場合が不安になりますが、
今は1つしかデバイスがないので試せていません。
無事にマウントできると以下のようになります。
$ mount
$ mount
(snip)
/dev/puffs on /mnt/usbssd type puffs|refuse:gphotofs (nodev, nosuid)
写真をImageMagickのdisplay
コマンドで表示してみます。
$ ll /mnt/usbssd/store_00010001/DCIM/100ANDRO/DSC_0001.JPG
-rw-r--r-- 1 root wheel 1576203 Oct 27 06:15 /mnt/usbssd/store_00010001/DCIM/100ANDRO/DSC_0001.JPG
$ display /mnt/usbssd/store_00010001/DCIM/100ANDRO/DSC_0001.JPG
無事に写真が表示されました。待ち時間もほとんどありませんでしたので、
これであれば快適に作業できそうです。
マウントはどう解除するか
Windowsですと、MTPデバイスはUSB大容量記憶装置とは違い
マウントを解除することなくケーブルを抜けば良いですが、
今回はそう楽観的にはなれません。
/usr/pkg/share/doc/fuse-gphotofs/README
に書いてある方法を試してみます。
# fusermount -u /mnt/usbssd
fusermount: Not enough command line arguments
Usage: fusermount [-c] [-d name] [-h] [-p] [-u] [-x] mountpoint...
-c use kernel cache
-d name use name in mount information
-h print help information
-p check file permissions
-u unmount mount point(s)
-x allow access to mortal (non-root) users
マウントを解除できません。
普通にumount
を実行してみたらどうでしょうか。
#o umount /mnt/usbssd
umount: /mnt/usbssd: Device not configured
エラーにはなりましたが、マウントは無事に解除されたようです。
おわりに
MTPデバイスについては、pkgsrc/filesystems/fuse-gphotofs
を使う
ことで、快適に操作できることが分かりました。
libmtpは、libusb 1.x系列を使用しています。 Felicaにアクセスするためのlibpafeもlibusb 1.x系列を使用していますが、 同様にNetBSDではうまく動きません。 また、OpenSCもlibusb 1.x系列でやはりうまく動きません。 もしかしたら、libusb 1.x系列に何か問題があるかもしれないという気もします。 いずれ解明できればとは思っています。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。