Windows 10の「WSL」の自動マウントやfstabによるマウント処理をwsl.confファイルで制御するTech TIPS

WSLを起動すると、Windows OSのC:のローカルドライブが/mnt/cとしてアクセスできる。この自動マウントを無効にしてWSLを起動するには、/etc/wsl.confファイルで設定を変更すればよい。その設定方法を解説する。

» 2018年07月12日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 10バージョン1709以降(64bit版のみ)


WSLの自動マウント機能を無効にしたい!?

 Windows 10に「WSL(Windows Subsystem for Linux)」をインストールすると、Linux向けのプログラム(バイナリファイル)をそのまま実行できるようになる。WSLのインストールや初期設定の方法については、以下のTIPSを参照していただきたい。

 Windows OS側で使っていたC:やD:などのローカルドライブは、WSL環境側では「/mnt/c」や「/mnt/d」などのパスで自動的に参照できるようになっている。

 だが場合によっては、この自動マウントを無効にしたり、/mnt以外の場所にマウントさせたりしたいこともあるだろう。例えば、「sudoして、ルートフォルダでrm -rf *のようなコマンドを実行」したとすると(注意:危険なので絶対に実行しないように)、WSL環境のファイルが消えてしまうだけでなく、「/mnt/c」の下にあるファイル、つまりWindows OS側のC:などの内容も削除されてしまう。

 権限の関係で全てのファイルやフォルダが削除されるわけではないが、WSLのファイルが削除されてもWSLが起動しなくなるだけだ。次のTIPSの方法を使ってWSLをリセットすれば、簡単に初期状態に戻せる。

 だが、Windows OS側のファイルが消えてしまうのはかなり致命的である。最悪の場合は、システムの再インストールやフルバックアップからの復元などが必要になる(実際筆者はこれをやってしまって、とんでもないことになってしまった)。

 このような事態を避けるためには、WSL起動時の自動マウントを無効にするとよいだろう。このためには、WSLの環境設定ファイルを使って初期状態を変更すればよい。本TIPSではこの方法について解説する。

 なおWSL起動時の自動マウントを無効にしても、WSL起動後に手動でマウントすることは可能である。また/mnt/cを手動でアンマウントしてから(危険そうな)コマンドを実行するという方法もある。マウントやアンマウントの方法については、以下の記事を参照のこと。

WSLのマウント処理設定を制御するwsl.confファイル

 WSLの起動時にC:などのローカルドライブを自動マウントするかどうかや、/etc/hostsファイルを自動作成するかどうかは、「/etc/wsl.conf」ファイルで設定できる。

 /etc/wsl.confファイルの内容例を次に示しておく。これは全てデフォルトの設定値であり、/etc/wsl.confが存在しない場合は、これらの値が設定されているものとしてWSLが実行される(行頭が「#」の行はコメント)。

※/etc/wsl.confの例
# Enable extra metadata options by default
[automount]
enabled = true
root = /mnt/
options = "metadata,umask=22,fmask=11"
mountFsTab = true

# Enable DNS - even though these are turned on by default, we’ll specify here just to be explicit.
[network]
generateHosts = true
generateResolvConf = true



/etc/wsl.confファイルの書式

 /etc/wsl.confファイルはテキストエディタで作成する。それぞれの設定内容は、次のような意味を持つ。

設定項目とデフォルト値 意味
[automount] WSL起動時の自動マウント設定セクション
enabled = true 自動マウントするかどうか。trueなら自動マウントをする。falseならしない
root = /mnt/ 自動マウント先のフォルダパス。あらかじめフォルダとして作成しておくこと。このフォルダの下にcやdなどが作成される
options = "metadata,umask=22,fmask=11" マウントオプション
mountFsTab = true WSL起動時に/etc/fstabの内容を処理するかどうか。trueならする。falseならしない
[network] WSL起動時のネットワーク関連ファイルの自動作成セクション
generateHosts = true trueなら/etc/hostsを自動作成する。falseならしない
generateResolvConf = true trueなら/etc/resolv.confを自動作成する。falseならしない
/etc/wsl.confの設定とその意味、デフォルト値
wsl.confに記述できるオプションとそのデフォルト値。

 このファイルはデフォルトでは存在していないので、必要ならユーザーが自分で作成すること。「/etc」フォルダに書き込むにはroot権限が必要なので、「sudo vi /etc/wsl.conf」などのように、sudoして編集する必要がある(エディタはviでもnanoでもedでも、お好みで)。

 WSLは起動時にこの内容に基づいて設定を変更するので、作成後や内容を変更した場合は、WSLをいったん終了させてから、もう一度起動する。

WSL起動時の自動マウントを抑止する例

 例えばWSL起動時の自動マウントを抑止したければ、「[automount]」のセクションに「enabled = false」と記述する。

 まずはwsl.confファイルなし(デフォルト状態)で実行すると次のようになる。

デフォルトの状態 デフォルトの状態
これはインストールした直後のWSLの状態。自動マウントが有効になっているので、Windows OS側のローカルドライブが/mntの下に自動的にマウントされている。

 wsl.etcファイルに自動マウント無効化の設定を記述してから起動すると次のようになる。

自動マウントを無効にした場合 自動マウントを無効にした場合
WSLが起動しても自動マウントされておらず、/mnt/cや/mnt/dなどの下には何もファイルがない。

 この状態では、Windows OS側(C:など)のファイルへアクセスすることはできないが、一方で間違って編集や削除してしまう危険性は低くなる。ファイルとしてアクセスはできないが、Windows OS側とはパイプなどを使えばデータをやりとりできる(次の記事参照)。

 なおWSLとWindows OSでは使用している文字コードが異なるので(UTF-8とShift_JIS)、必要なら文字コード変換などの処理も行うこと。

WSLの自動マウントポイントの変更

 WSL起動時の自動マウントポイントはデフォルトでは「/mnt/〜」となっているが、これを変更して別の場所にするには、「[automount]」のセクションに「root = /windir/」のように記述する。ただしここで指定するフォルダは、あらかじめ作成しておくこと。

[wsl.conf補足]/etc/fstabの自動マウントを無効にする

 先のTIPS「Windows 10の『WSL』でネットワークドライブなどをマウントする」で解説しているが、「/etc/fstab」にマウントポイントを記述しておくと、C:やD:以外のドライブ、例えばリムーバブルディスクやネットワーク共有ドライブなどをWSL起動時に自動マウントさせることができる。

 だがwsl.confに「mountFsTab = false」と記述しておくと、この処理が無効になり、自動マウントされなくなる(C:やD:などのローカルの非リムーバブルドライブは「enabled = 〜」で制御するので対象外)。この場合は、必要ならWSL起動後に手動でmountコマンドを使ってマウントする。

[wsl.conf補足]/etc/hostsや/etc/resolv.confでネットワークの名前解決を制御する

 wsl.confの「[network]」セクションには、/etc/hostsと/etc/resolv.confファイルを自動生成するかどうかの設定を記述する。デフォルトではこれらのファイルはWindows OS側のネットワーク設定に基づいて、自動的に作成されることになっている。

自動生成されたネットワーク関連のファイル 自動生成されたネットワーク関連のファイル
WSL環境で名前解決(IPアドレスとコンピュータ名の相互変換)などを行うためには、/etc/hostsや/etc/resolv.confなどのファイルが適切にセットアップされている必要がある。

 /etc/hostsファイルは自分のホスト名とIPアドレスの対応を記述したファイル、/etc/resolv.confはDNSのドメイン名とDNSサーバのアドレス情報などを記述したファイルである。通常は特に変更する必要はないだろう。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。