2016-12-13

NetBSD/i386でmount_smbfsを使ってみる

dynabook SS SX/15AのWindows VistaをNetBSD/i386に移行するために重要なのは、Windows10が動いているデスクトップPCにあるドキュメント以下のファイル群を同期させることです。Vistaを使っていれば、同じWindowsですから、ネットワークを介してファイル転送することは容易です。Windows10側からVistaに向かってファイルを送り出す形でファイルの同期をとっていました。

Windows VistaをNetBSD/i386に変えたら、どのような方式でファイル同期をとれば良いのか検討しなければなりません。実現の難易度は別にして、次のような方法が考えられます。
  1. NetBSD/i386にSambaをインストールして、以前と同じようにWindows10からVistaに向けてファイルを送り出す。
  2. Windows10にNFSサーバーを入れて、Windows10のディスクをNetBSD/i386からマウントする。
  3. Windows10にNFSクライアントをいれて、 NetBSD/i386のディスクをWindows10からマウントする。
  4. FTPを使って、Windows10からNetBSD/i386に向かってファイルを送り出す。
この中で最も実現しやすそうなのがSambaを利用する方法です。ただし同期させるためだけにSambaを入れるのは「牛刀をもって鶏を割く」の諺が思い浮かぶので、どうも気が進みません。

ここでNetBSD/i386にはmount_smbfsがあることに気付きました。これはWindowsで使われているSMBプロトコルでリモートファイルシステムをマウントさせるものです。これを使えば、余計なインストールが発生せず、ちょうど良い感じです。

Windows10のデスクトップPCが、WINDOWSという名前で192.168.1.99というIPアドレスだとします。この場合なら次のようなコマンド打つことになります。ここで-Nオプションを指定しておくと、接続時に必要となるパスワードを/root/.nsmbrcで指定しておくことができます。
mount_smbfs -I 192.168.1.99 -E UTF-8:CP932 -N //FURUSAWA@WINDOWS/Users /mnt
さてWindowsでは当たり前のように使われている日本語ファイル名を変換するために-E UTF-8:CP932オプションを指定したのですが、どうも変換されていないようです。マウント自体は成功しているのですが、ファイル名に含まれている日本語が化けてしまっています。ロケールをja_JP.SJISにすると問題なく読めるので、CP932からUTF-8へのコード変換が効いていないようです。

Webで調べてみると、FreeBSDでは問題ないようです。正確には、過去には問題があったけど、今は修正されているようで、今は問題なく利用できる状態になっているようです。FreeBSDとNetBSDは同じBSD系と言っても、独自の進化を遂げているので、微妙なところで使い勝手に違いがあります。

どうしたものかと頭を抱えてしまいました。ここは基本に戻って、ドキュメントをしっかり読むことから始めようと、MOUNT_SMBFS(8)を最初から最後まで読んでみました。すると最後に次のような記述がありました。
BUGS
The -E option works only if you mount with rump_smbfs(8) instead of mount_smbfs. 
要するに/sbin/mount_smbfsではなく/usr/sbin/rump_smbfsを使わなければならないのだそうです。オプション等は同じように指定できるようなので、コマンド名だけを変えて実行してみたところ、無事に日本語変換がおこなわれることを確認しました。

NetBSD/i386上でWindows10のファイルをマウントすることができることがわかりました。このようにマウントした状態で、rsyncを利用して、リモート側(Windows10) のファイルをローカル側(NetBSD/i386)に同期させようと思います。

方針は定まりましたが、NetBSD/i386のrump_smbfsは動作が不安定な印象を受けます。反応が遅いと思っていたら、マウントが切れていたりします。負荷をかけても大丈夫なのか若干心配は残りますが、頻繁に利用するつもりはないので、なんとかなるかと思います。




0 件のコメント:

コメントを投稿