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)