WSLでWinボリュームをbind mountする
WSLで自動マウントされている/mnt/c下のディレクトリをバインドマウントする。
現在のWindowsバージョン:
エディション      Windows 10 Pro
バージョン        21H1
インストール日    2020/11/14
OS ビルド         19043.1052
エクスペリエンス  Windows Feature Experience Pack 120.2212.2020.0
使用しているディストリビューション:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"
wsl.confの[automount]は、enabled (自動マウントの有効化)、 mountFsTab (fstabの有効化) がデフォルトでtrueとなっているので、 /etc/fstabに記載すれば、NASのNFSやSambaの共有ドライブが利用可能です。
参照: 「WSLコマンドと起動構成」の構成オプション > automount
/mnt/cのバインドマウント
“/mnt/c”には母艦となっているWindowsのシステムがまるごとマウントされていますし、 そもそもアクセスの度、”/mnt/c/User/xxx/…“と指定するのは面倒です。 Windowsボリュームの中で使用頻度の高いディレクトリだけを$HOME下にマウントして、 “/mnt/c/…“へのアクセスはできる限り避けたいところです。
“/mnt/c”は自動でマウントされているので、 下記のようにすればマウントできそうなものですが、 下記の場合、mount -aとすればマウントされるものの、 起動時にはマウントされません。
# /etc/fstab
/mnt/c/User/xxx/linux_documents  /home/xxx/win_documents  none  bind  0  0
WSLはWindowsボリュームを自動マウントする前に/etc/fstabの内容を処理する為、 バインドマウントする前に下記のエントリーが必要になります。
# /etc/fstab
C:\  /mnt/c  drvfs  noatime,uid=1000,gid=1000  0  0
WSL2であればWindowsパスを使うことでマウントできます。
# /etc/fstab
C:/Users/xxx/linux_docs  /home/xxx/win_docs  drvfs  noatime,uid=1000,gid=1000  0  0
推奨されているのは、C:をマウントしてから、バインドマウントする 方法のようです。1
# /etc/fstab
C:\  /mnt/c  drvfs  noatime,uid=1000,gid=1000  0  0
/mnt/c/User/xxx/linux_docs  /home/xxx/win_docs  none  bind  0  0
二重にマウントしているようで気持ち悪かったので、 wsl.confにenabled = falseを記載しました。
# /etc/wsl.conf
[automount]
enabled = false
mountFsTab true
念のため、以下にNFSとCIFSの利用例を記載しておきます。
NFSの利用例
Ubuntu / Debianの場合:
sudo apt install nfs-common
使用しているディストリビューションにより、導入方法やパッケージ名が異なる場合が あります。
# /etc/fstab
192.168.0.1:/srv/data  /mnt/data  nfs4  rsize=8192,wsize=8192,timeo=14,_netdev,nolock  0  2
NFSの利用にはnolockオプションが必要です。
Samba / CIFSの利用例
Ubuntu / Debianの場合:
sudo apt install cifs-utils
使用しているディストリビューションにより、導入方法やパッケージ名が異なる場合が あります。
//OTHER_WIN/Data  /home/xxx/Data  cifs  credentials=/home/xxx/.credentials,_netdev,vers=3.0,uid=1000,gid=1000,ip=192.168.0.1  0  0
# ~/.credentials (chmod 600 .credentials)
username=xxx
password=xxx
Tag cloud
android (2), bash (1), bitbucket (2), chromebook (2), cifs (1), css (1), docker (1), git (1), gitlab (1), info (1), javascript (3), jekyll (13), markdown (1), nfs (1), nodejs (2), php (2), plugins (5), powerline (1), ruby (1), ssh (1), themes (1), vim (1), windows (1), wordpress (1), wsl (1), xrea (7)