NetBSDでMTPデバイスをマウントしてみる

この記事は、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 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

Windows 11 Pro 24H2からSambaのguest ok = yesな共有フォルダーへアクセスする

Microsoft Windows 11 Proを動かしているマシンで、sambaでguest ok = yesにしている共有フォルダーにアクセスしていた。 Windows 11を24H2にアップデートしたところ、その共有フォルダーを開こうとすると、ログインを求められ、...