FreeBSD on VMware and file sharing

VMwareにはホストとゲストの間でファイル共有をする機能が付いている。FreeBSDportsのemulators/open-vm-toolsは、この機能をサポートしようとしているが、現時点ではこの機能を使用するとカーネルがパニックする。したがって異なる手法でファイル共有をする必要がある。

ホストがWindowsである場合、一番手っ取り早い方法は、smbfsでmountする方法だ。しかしながらいくつかのハマりポイントがあるので、設定方法を記録する。

基本の設定方法

次のようなホストとゲストの関係を前提とする。
ホスト

  • Windows 7 or 8
  • ホスト名はWINHOST
  • ワークグループ名はWORKGROUP
  • IPアドレスは192.168.152.1
  • ユーザーはDENSUKEを持つ。

ゲスト

  • FreeBSD
  • ユーザーはdensuke、このユーザーのログイングループもdensuke

まずは何はともあれ、mountできるかどうかをチェックする。

# mount_smbfs -E UTF-8:CP932 -I 192.168.152.1 //DENSUKE@WINHOST/Users /mnt/winhost

ここでmountに成功すれば、次のステップで自動的にマウントするよう設定し、必要なファイルが使いやすくなるよう/home/densuke以下にシンボリックリンクを張れば良い。mountできなかった場合の確認事項は後述する。

mountに成功した場合、次のステップで設定する。

  1. /etc/nsmb.confの追記
  2. /etc/fstabを修正
  3. その他
1. /etc/nsmb.confの追記

/etc/nsmb.confに次の内容を記入する。

[default]
workgroup=WORKGROUP

[WINHOST]
addr=192.168.152.1
charsets=UTF-8:CP932

[WINHOST:DENSUKE]
password=$$16a5a541227121b <-- 暗号化されたパスワード

暗号化されたパスワードは次のようにして作成できる。

% smbutil crypt 平文のパスワード
2. /etc/fstabの修正

この設定をして、/etc/fstabにマウントポイントを書く。
/etc/fstab

//DENSUKE@WINHOST/USERS       /mnt/winhost   smbfs   rw      0       0

これでリブートした後も、自動的にmountされるようになる。自動的にmountした場合、日本語ファイル名の文字化けが起こると書いている人がいたが、特に問題なかった。

3. その他

このままmount_smbfsすると、ファイルのオーナーは/mnt/winhostのオーナーとグループとなる。なので、

# chown densuke:densuke /mnt/winhost

とすることで、/mnt/winhostにmountされたファイルシステムFreeBSDではオーナーはdensuke:densukeとなる。

その上で、WINHOSTでDENSUKEが利用しているGoogleドライブのフォルダを/home/densuke/Documents/Googleシンボリックリンクを作成する。

% cd ~/Documents/
% ln -s /mnt/winhost/densuke/Google\ ドライブ ./Google

簡単にmountできなかった場合にチェックすること。

VMwareのネットワークの設定がブリッジの場合は、上の設定でうまく行く可能性が高い。うまく行かなかった場合、FreeBSDからWINHOSTが見えるかどうかをチェックする必要がある。次のコマンドでIPアドレスが引けない場合、見えていない。

% nmblookup WINHOST

NATである場合は、ホスト側からみたVMnetが識別されていないネットワークなので、WINHOSTは見えない。VMnetだけをプライベートネットワークにしたいが、その方法がわからない。そこでWindowsでローカルセキュリティポリシーで、識別されていないネットワークをプライベートネットワークに設定してしまう。この方法が良いとは思わないが、これで動く。

また、Windows 8.1のアカウントはMicrosoftアカウントなので、日本語のディレクトリが作られるため、使いにくい。アカウントをローカルで作ってアカウント名を英文字として、Microsoftアカウントを適用する必要がある。

注意点

ホストをサスペンド・レジュームした場合、smbfsでmountしたゲストのファイルシステムは、レジューム直後に使用可能ではない場合があるが、少し時間を置くと利用可能になる。

参考
「識別されていないネットワーク」の種類を「パブリック ネットワーク」から「プライベート ネットワーク」に変更する