Hyper-Vの仮想マシンからWindows 10のフォルダをマウントする

なにやら真面目なタイトルですが、(まあまあ)真面目です。
夏休みですが、お仕事の勉強してました。まぁ、暑かったり台風だったりであまり外に行けないので。

仮想マシンはこれまでずっとVirtualBoxを使ってたのですが、家ではWindows 10に替えたこともあって、せっかくだからHyper-V使うかということで、Hyper-V使ってます。
そうすると困るのが、共有フォルダの問題。VirtualBoxでは、もともとGuest Additionsをインストールすることで共有フォルダが使えてたのですが、Hyper-Vではそんなものないので、さてどうしたものかと思っていたわけです。

そもそもなんで共有フォルダを使いたいかというと、Angularの勉強していて、

  1. Windows上でVisual Studio Code使ってコードを書く
  2. PowerShellでビルド
  3. WinSCPで仮想マシンにアップロード

ってやってたんですけど、やっぱり「面倒くさい」
ちなみに仮想マシンにアップロードさせているのは、サーバサイドのアプリと連携させるためです。

調べてみると、どうやらCIFSってプロトコルでWindowsのフォルダをマウントできるらしい。今までSambaサーバくらいしか知りませんでした。
使えるようになったので、メモっときます。

Windows 10側

  • 共有フォルダの作成
  • 適当にフォルダ掘って右クリック > プロパティ > 共有タブ > 詳細な共有 > アクセス許可 > フルコントロールにチェック
  • ネットワークパスに、\\HOSTNAME\shared みたいな感じで表示されますが、これがLinux側からマウントするパスになります

Linux(CentOS 7.5)側

  • CIFSツールのインストール
# yum install cifs-utils
  • マウントのテスト
    • ネットワークパスは、Windowsのホスト名だと解決できないのでIPを直接書きます(なので、固定IPであることが前提)
# mkdir /mnt/win10
# mount.cifs -o "username=xxxxx,vers=2.0" //192.168.11.4/shared /mnt/win10
Password for xxxxx@//192.168.11.4/shared:

パスワードを入れて、エラーが出ずに /mnt/win10 配下が見えればOK
  • 自動マウントの設定
    • uid,gidの設定がないとマウントフォルダのownerがrootになって一般ユーザで書き込みできません
    • パスワードはローカルマシンなので直接書いてもいいですが、まあ、少しでも…ね
    • 本来は、自動マウントさせずに必要に応じてマウントするのがセキュリティ的には望ましいかも
# vi /etc/fstab
以下を追加
//192.168.11.4/shared /mnt/win10 cifs credentials=/root/cifspasswd,vers=2.0,uid=xxxxx,gid=xxxxx 0 0

# vi /root/cifspasswd
username=xxxxx
password=xxxxx
# chmod 600 /root/cifspasswd

ハマったところ

まー、案の定マウントのテストのところでハマったわけですが、ずっと 115エラーが出てました。
結局、Windowsのアンチウイルスソフト、ESET Internet Securyのファイアウォールの設定が原因で、Windows側の設定はデフォルトのままでOKでした。
ESETの設定の方ですが、設定 > ネットワーク保護 > ファイアウォームの設定アイコン > 設定 > 詳細 > ゾーンの編集で「信頼ゾーン」に仮想マシンのIPアドレスを設定することでOKになりました

やれやれ。