WSL での詳細設定の構成

wsl.conf ファイルと .wslconfig ファイルは、すべての WSL 2 ディストリビューション () にわたって、配布ごとに (wsl.conf) グローバルに、詳細設定オプションを構成するために使用されます.wslconfig。 このガイドでは、各設定オプション、各ファイルの種類を使用するタイミング、ファイルを保存する場所、サンプル設定ファイル、ヒントについて説明します。

wsl.conf と .wslconfig の違いは何ですか?

WSL を起動するたびに自動的に適用されるインストール済みの Linux ディストリビューションの設定は、次の 2 つの方法で構成できます。

  • .wslconfig:WSL 2 で実行されているすべてのインストール済みディストリビューションで 設定をグローバル に構成します。
  • wsl.conf:WSL 1 または WSL 2 で実行されている Linux ディストリビューションの ディストリビューションごとの 設定を構成します。

どちらのファイルの種類も WSL 設定の構成に使用されますが、ファイルが格納されている場所、構成のスコープ、ディストリビューションを実行する WSL のバージョンはすべて、選択するファイルの種類に影響します。

実行している WSL のバージョンは、構成設定に影響します。 WSL 2 は軽量仮想マシン (VM) として実行されるため、使用するメモリまたはプロセッサの量を制御できる仮想化設定が使用されます (Hyper-V または VirtualBox を使用する場合は、よく知っている可能性があります)。

wsl.conf

  • unix ファイルとしてディストリビューションのディレクトリに格納されます /etc
  • ディストリビューションごとに設定を構成するために使用されます。 このファイルで構成された設定は、このファイルが格納されているディレクトリを含む特定の Linux ディストリビューションにのみ適用されます。
  • バージョン WSL 1 または WSL 2 によって実行されるディストリビューションに使用できます。
  • インストールされているディストリビューションの /etc ディレクトリに移動するには、ディストリビューションのコマンド ラインで cd / を使ってルート ディレクトリにアクセスした後、ls でファイルの一覧を表示するか、Windows エクスプローラーで explorer.exe . を表示します。 ディレクトリ パスは次のようになります /etc/wsl.conf

.wslconfig

  • ディレクトリに %UserProfile% 格納されます。
  • WSL 2 バージョンとして実行されているすべてのインストール済み Linux ディストリビューションで設定をグローバルに構成するために使用されます。
  • WSL 2 によって実行されるディストリビューションにのみ使用できます。 WSL 1 として実行されているディストリビューションは、仮想マシンとして実行されていないため、この構成の影響を受けません。
  • %UserProfile% ディレクトリに移動するには、PowerShell で cd ~ を使用してホーム ディレクトリ (通常は、それがユーザー プロファイル C:\Users\<UserName> です) にアクセスするか、Windows エクスプローラーを開き、アドレス バーに「%UserProfile%」と入力します。 ディレクトリ パスは次のようになります C:\Users\<UserName>\.wslconfig

WSL はこれらのファイルの存在を検出し、内容を読み取り、WSL を起動するたびに構成設定を自動的に適用します。 ファイルが見つからないか、形式が正しくない (不適切なマークアップの書式設定) 場合、WSL は構成設定を適用せずに通常どおり起動し続けます。

実行している WSL のバージョンを確認します。

注意

wsl.conf ファイルを使用したディストリビューションごとの設定の調整は、Windows ビルド 17093 以降でのみ使用できます。

8 秒のルール

Linux ディストリビューションを実行しているサブシステムの実行が完全に停止し、構成設定の更新が表示されるまで再起動するまで待つ必要があります。 通常、これは、ディストリビューション シェルのすべてのインスタンスを閉じた後、約 8 秒かかります。

ディストリビューションを起動する場合 (つまり、Ubuntu)、構成ファイルを変更し、ディストリビューションを閉じてから起動し直します。 構成の変更がすぐに有効になったと仮定する場合があります。 現在は、サブシステムがまだ実行されている可能性があるため、そのようにはなりません。 変更を取得するのに十分な時間を確保するために、再起動前にサブシステムが停止するのを待つ必要があります。 PowerShell で wsl --list --running コマンドを使用すると、閉じた後で Linux ディストリビューション (シェル) がまだ実行されているかどうかを確認できます。 ディストリビューションが実行されていない場合は、"実行中のディストリビューションはありません" という応答を受け取ります。これで、ディストリビューションを再起動して、構成の更新プログラムが適用されているのを確認できるようになりました。

このコマンド wsl --shutdown は、WSL 2 ディストリビューションを再起動するための高速パスですが、実行中のすべてのディストリビューションがシャットダウンされるため、賢明に使用してください。

wsl.conf の構成設定

wsl.conf ファイルは、ディストリビューションごとに設定を構成します。 (WSL 2 ディストリビューションのグローバル構成については、 .wslconfig を参照してください)。

wsl.conf ファイルでは、次の 4 つのセクションがサポートされています。 automountnetworkinteropuser (.iniファイル規則の後にモデル化され、キーは .gitconfig ファイルなどのセクションの下で宣言されます)。wsl.conf ファイルを格納する場所については、wsl.conf を参照してください。

自動マウント設定

セクションのラベル: [automount]

key value default notes
enabled boolean true true を指定すると、固定ドライブ (C:/ または D:/) が DrvFs で /mnt の下に自動的にマウントされます。 false を指定すると、ドライブは自動的にマウントされませんが、それでも手動または fstab を使ってマウントできます。
mountFsTab boolean true true にすると、WSL 開始時に処理されるように /etc/fstab を設定します。 /etc/fstab は、SMB 共有などの他のファイル システムを宣言できるファイルです。 そのため、起動時にこれらのファイル システムを WSL 内で自動的にマウントできます。
root string /mnt/ 固定ドライブが自動的にマウントされるディレクトリを設定します。 既定では、これは/mnt/設定されているため、Windows ファイル システムの C ドライブがにマウントされます/mnt/c/。 に/windir/変更/mnt/すると、固定 C ドライブがマウントされている/windir/cことがわかります。
options uid、gid などの値のコンマ区切りの一覧については、以下の自動マウント オプションを参照してください 空の文字列 自動マウント オプションの値を以下に示し、既定の DrvFs マウント オプション文字列に追加します。 DrvFs 固有のオプションのみを指定できます。

自動マウント オプションは、自動的にマウントされたすべてのドライブのマウント オプションとして適用されます。 特定のドライブのオプションのみを変更するには、代わりにファイルを /etc/fstab 使用します。 マウント バイナリが通常、フラグに解析するオプションはサポートされていません。 これらのオプションを明示的に指定する場合は、必要なすべてのドライブを /etc/fstab含める必要があります。

自動マウント オプション

Windows ドライブ (DrvFs) にさまざまなマウント オプションを設定すると、Windows ファイルのファイルのアクセス許可を計算する方法を制御できます。 次のオプションを使用できます。

Key 説明 Default
uid すべてのファイルの所有者に使用するユーザー ID WSL ディストリビューションの既定のユーザー ID (初回インストール時の既定値は 1000)
gid すべてのファイルの所有者に使用するグループ ID WSL ディストリビューションの既定のグループ ID (初回インストールでは、既定値は 1000)
umask すべてのファイルとディレクトリに対して除外するアクセス許可の 8 進数のマスク 000
fmask すべてのファイルに対して除外するアクセス許可の 8 進数のマスク 000
dmask すべてのディレクトリに対して除外するアクセス許可の 8 進数のマスク 000
metadata Linux システムのアクセス許可をサポートするため、Windows ファイルにメタデータが追加されるかどうか disabled
case 大文字と小文字が区別されるディレクトリ、および WSL で作成される新しいディレクトリにフラグを設定するかどうかを指定します。 オプションについて詳しくは、大文字と小文字の区別に関する記事をご覧ください。 オプションには offdir、または force. off

既定では、WSL は uid と gid を既定のユーザーの値に設定します。 たとえば、Ubuntu では、既定のユーザーは uid=1000、gid=1000 です。 この値を使用して別の gid または uid オプションを指定すると、既定のユーザー値が上書きされます。 それ以外の場合は、既定値が常に追加されます。

ユーザー ファイル作成モード マスク (umask) は、新しく作成されたファイルのアクセス許可を設定します。 既定値は 022 です。データを書き込むことができるのはユーザーだけですが、誰でもデータを読み取ることができます。 値は、さまざまなアクセス許可設定を反映するように変更できます。 たとえば、 umask=077 アクセス許可を完全にプライベートに変更し、他のユーザーはデータの読み取りまたは書き込みを行いません。 さらにアクセス許可を指定するには、fmask (ファイル) と dmask (ディレクトリ) も使用できます。

注意

アクセス許可のマスクは、ファイルまたはディレクトリに適用される前に論理 OR 演算によって配置されます。

DrvFs とは

DrvFs は、WSL と Windows ファイルシステム間の相互運用をサポートするように設計された WSL へのファイルシステム プラグインです。 DrvFs を使用すると、/mnt/c、/mnt/d など、サポートされているファイル システムを使用してドライブを /mnt にマウントできます。Windowsまたは Linux ドライブまたはディレクトリをマウントするときの既定の大文字と小文字の区別の動作の指定の詳細については、大文字と小文字の区別に関するページを参照してください。

ネットワーク設定

セクションのラベル: [network]

key value default notes
generateHosts boolean true true にすると、/etc/hosts を生成するように WSL を設定します。 hosts ファイルには、IP アドレスに対応するホスト名の静的マップが含まれています。
generateResolvConf boolean true true にすると、/etc/resolv.conf を生成するように WSL を設定します。 resolv.conf には、指定されたホスト名をその IP アドレスに解決できる DNS リストが含まれています。
hostname string ホスト名のWindows WSL 配布に使用するホスト名を設定します。

相互運用機能の設定

セクションのラベル: [interop]

次のオプションは、Insider Build 17713 以降で使用できます。

key value default notes
enabled boolean true このキーの設定により、WSL で Windows プロセスの起動をサポートするかどうかが決まります。
appendWindowsPath boolean true このキーの設定により、WSL が Windows パス要素を $PATH 環境変数に追加するかどうかが決まります。

ユーザー設定

セクションのラベル: [user]

次のオプションは、ビルド 18980 以降で使用できます。

key value default notes
default string 最初の実行時に作成される最初のユーザー名 このキーを設定すると、最初に WSL セッションを開始するときに、実行に使用されるユーザーが指定されます。

ブート設定

ブート設定は、Windows 11でのみ使用できます。

セクションのラベル: [boot]

key value default notes
command string "" WSL インスタンスの開始時に実行するコマンドの文字列。 このコマンドは、ルート ユーザーとして実行されます。 例: service docker start Windows 11でのみ使用できます。

wsl.conf ファイルの例

次のサンプル ファイルは wsl.conf 、使用可能な構成オプションの一部を示しています。 この例では、ディストリビューションは Ubuntu-20.04 で、ファイル パスは \\wsl.localhost\Ubuntu-20.04\etc\wsl.conf.

# Automatically mount Windows drive when the distribution is launched
[automount]

# Set to true will automount fixed drives (C:/ or D:/) with DrvFs under the root directory set above. Set to false means drives won't be mounted automatically, but need to be mounted manually or with fstab.
enabled = true

# Sets the directory where fixed drives will be automatically mounted. This example changes the mount location, so your C-drive would be /c, rather than the default /mnt/c. 
root = /

# DrvFs-specific options can be specified.  
options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off"

# Sets the `/etc/fstab` file to be processed when a WSL distribution is launched.
mountFsTab = true

# Network host settings that enable the DNS server used by WSL 2. This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1).
[network]
hostname = DemoHost
generateHosts = false
generateResolvConf = false

# Set whether WSL supports interop process like launching Windows apps and adding path variables. Setting these to false will block the launch of Windows processes and block adding $PATH environment variables.
[interop]
enabled = false
appendWindowsPath = false

# Set the user when launching a distribution with WSL.
[user]
default = DemoUser

# Set a command to run when a new WSL instance launches. This example starts the Docker container service.
[boot]
command = service docker start

.wslconfig の構成設定

.wslconfig ファイルは、WSL 2 で実行されているすべての Linux ディストリビューションの設定をグローバルに構成します。 (ディストリビューションごとの構成については 、wsl.conf を参照してください)。

.wslconfig ファイルを格納する場所については、.wslconfig を参照してください。

注意

グローバル構成オプション.wslconfigは、Windows ビルド 19041 以降で WSL 2 として実行されているディストリビューションでのみ使用できます。 これらの変更を有効にするには、wsl --shutdown を実行して WSL 2 VM をシャットダウンしてから WSL インスタンスを再起動することが必要な場合があることに注意してください。

このファイルには、WSL 2 ディストリビューションを実行する VM に影響を与える次のオプションを含めることができます。

セクションのラベル: [wsl2]

key value default notes
kernel string Microsoft によって構築されたカーネルで提供される受信トレイ カスタム Linux カーネルへの絶対 Windows パス。
メモリ size Windows の合計メモリの 50% または 8 GB のどちらか少ない方。20175 より前のビルドでは、Windows の合計メモリの 80% WSL 2 VM に割り当てるメモリの量。
processors number Windows のプロセッサと同じ数 WSL 2 VM に割り当てるプロセッサの数。
localhostForwarding boolean true WSL 2 VM でワイルドカードまたは localhost にバインドされたポートに、localhost:port 経由でホストから接続できるかどうかを指定するブール値。
kernelCommandLine string 空白 追加のカーネル コマンド ライン引数。
swap size Windows のメモリ サイズの 25% を、最も近い GB に切り上げた値 WSL 2 VM に追加するスワップ領域の大きさ。スワップ ファイルがない場合は 0。 スワップ ストレージは、メモリの需要がハードウェア デバイスの制限を超えた場合に使用されるディスク ベースの RAM です。
swapFile string %USERPROFILE%\AppData\Local\Temp\swap.vhdx スワップ仮想ハード ディスクへの絶対 Windows パス。
pageReporting boolean true 既定のtrue設定では、WSL 2 仮想マシンに割り当てられた未使用のメモリをWindowsに再利用できます。
guiApplications boolean* true WSL で GUI アプリケーション (WSLg) のサポートをオンまたはオフにするブール値。 Windows 11でのみ使用できます。
debugConsole boolean* false WSL 2 ディストリビューション インスタンスの開始時に dmesg の内容を表示する出力コンソール ウィンドウを有効にするブール値。 Windows 11でのみ使用できます。
nestedVirtualization boolean* true 入れ子になった仮想化を有効または無効にするブール値。他の入れ子になった VM を WSL 2 内で実行できるようにします。 Windows 11でのみ使用できます。
vmIdleTimeout number* 60000 VM がアイドル状態になってからシャットダウンされるまでのミリ秒数。 Windows 11でのみ使用できます。

path 値を含むエントリでは、円記号をエスケープした Windows パスを指定する必要があります。例: C:\\Temp\\myCustomKernel

size 値を含むエントリでは、サイズの後で単位を指定する必要があります。例: 8GB512MB

値型の後に * を指定したエントリは、Windows 11でのみ使用できます。

.wslconfig ファイルの例

次のサンプル ファイルは .wslconfig 、使用可能な構成オプションの一部を示しています。 この例では、ファイル パスは C:\Users\<UserName>\.wslconfig.

# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB 

# Sets the VM to use two virtual processors
processors=2

# Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
kernel=C:\\temp\\myCustomKernel

# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
kernelCommandLine = vsyscall=emulate

# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=8GB

# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
swapfile=C:\\temp\\wsl-swap.vhdx

# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=false

# Turn off default connection to bind WSL 2 localhost to Windows localhost
localhostforwarding=true

# Disables nested virtualization
nestedVirtualization=false

# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
debugConsole=true

その他のリソース