WSL での詳細設定の構成

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

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

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

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

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

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

構成変更の 8 秒ルール

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

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

コマンド wsl --shutdown は WSL 2 のディストリビューションを再起動するための高速パスですが、実行中のすべてのディストリビューションがシャットダウンされるため、適切に使用してください。 wsl --terminate <distroName> を使用し、実行中の特定のディストリビューションをただちに終了することもできます。

wsl.conf

WSL 1 または WSL 2 で実行されている Linux ディストリビューションごとにディストリビューション別 wsl.confローカル設定を構成します。

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

Note

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

wsl.conf の構成設定

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

wsl.conf ファイルでは、次の 4 つのセクションがサポートされています: automountnetworkinterop、および user。 "(.ini ファイルの慣習にならい、.gitconfig ファイルのように、キーはセクションの下で宣言されています。)"wsl.conf ファイルを保存する場所についての情報は、「wsl.conf」を参照してください。

systemd サポート

多くの Linux ディストリビューションでは既定で "systemd" が実行され (Ubuntu を含む)、WSL はこのシステム/サービス マネージャーのサポートを最近追加しました。これにより、WSL はベア メタル マシンで好きな Linux ディストリビューションを使用するのとさらに似ています。 systemd を有効にするには、バージョン 0.67.6 以降の WSL が必要です。 コマンド wsl --version を使用して WSL のバージョンを確認します。 更新する必要がある場合は、 Microsoft Store で最新バージョンの WSL を入手できます。 詳細については、 ブログのお知らせ を参照してください。

systemd を有効にするには、 sudo を使用して管理者のアクセス許可を使用してテキスト エディターで wsl.conf ファイルを開き、/etc/wsl.conf にこれらの行を追加します:

[boot]
systemd=true

その後、PowerShell から wsl.exe --shutdown を使用してWSL ディストリビューションを閉じて、WSL インスタンスを再起動する必要があります。 ディストリビューションが再起動したら、systemd が実行されているはずです。 サービスの状態が表示される次のコマンド: systemctl list-unit-files --type=service を使用して確認できます。

自動マウントの設定

wsl.conf セクション ラベル: [automount]

key value default
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/ マウントされます。 /mnt//windir/ に変更すると、固定 C ドライブが /windir/c にマウントされていることがわかります。
オプション 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 進数のマスク 022
fmask すべてのファイルに対して除外するアクセス許可の 8 進数のマスク 000
dmask すべてのディレクトリに対して除外するアクセス許可の 8 進数のマスク 000
メタデータ Linux システムのアクセス許可をサポートするため、Windows ファイルにメタデータが追加されるかどうか disabled
case 大文字と小文字が区別されるディレクトリ、および WSL で作成される新しいディレクトリにフラグを設定するかどうかを指定します。 オプションについて詳しくは、大文字と小文字の区別に関する記事をご覧ください。 オプションには offdir、または force があります。 off

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

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

Note

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

DrvFs とは?

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

ネットワーク設定

wsl.conf セクション ラベル: [network]

key value default
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 配布に使用するホスト名を設定します。

相互運用の設定

wsl.conf セクション ラベル: [interop]

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

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

ユーザー設定

wsl.conf セクション ラベル: [user]

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

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

ブート設定

ブート設定は、Windows 11 および Server 2022 でのみ使用できます。

wsl.conf セクション ラベル: [boot]

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

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 processes 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

WSL で実行されているすべてのインストール済みディストリビューション全体で、.wslconfigグローバル設定を構成します。

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

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

.wslconfig の構成設定

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

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

Note

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

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

主な WSL の設定

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

key value default
kernel path Microsoft によって構築されたカーネルで提供される受信トレイ カスタム Linux カーネルへの絶対 Windows パス。
メモリ size Windows の合計メモリの 50% WSL 2 VM に割り当てるメモリの量。
processors number Windows の倫理プロセッサと同じ数 WSL 2 VM に割り当てる倫理プロセッサの数。
localhostForwarding boolean true WSL 2 VM でワイルドカードまたは localhost にバインドされたポートに、localhost:port 経由でホストから接続できるかどうかを指定するブール値。
kernelCommandLine string Blank 追加のカーネル コマンド ライン引数。
safeMode boolean false WSL を「セーフ モード」で実行します。これは、多くの機能を無効にし、不適切な状態にあるディストリビューションを回復するために使用することを目的としています。 Windows 11 および WSL バージョン 0.66.2 以降でのみ使用できます。
スワップ サイズ Windows のメモリ サイズの 25% を、最も近い GB に切り上げた値 WSL 2 VM に追加するスワップ領域の大きさ。スワップ ファイルがない場合は 0。 スワップ ストレージは、メモリの需要がハードウェア デバイスの制限を超える場合に使用されるディスク ベースの RAM です。
swapFile path %USERPROFILE%\AppData\Local\Temp\swap.vhdx スワップ仮想ハード ディスクへの絶対 Windows パス。
pageReporting boolean true 既定の true 設定により、Windows は WSL 2 仮想マシンに割り当てられた未使用のメモリを再利用できます。
guiApplications ブール値* true WSL で GUI アプリケーション (WSLg) のサポートをオンまたはオフにするブール値。 Windows 11でのみ使用できます。
debugConsole ブール値* false WSL 2 ディストリビューション インスタンスの開始時に dmesg の内容を表示する出力コンソール ウィンドウを有効にするブール値。 Windows 11でのみ使用できます。
nestedVirtualization ブール値* true 入れ子になった仮想化を有効または無効にして、他の入れ子になった VM を WSL 2 内で実行できるようにするブール値。 Windows 11でのみ使用できます。
vmIdleTimeout 番号* 60000 VM がアイドル状態になってからシャットダウンされるまでのミリ秒数。 Windows 11でのみ使用できます。
dnsProxy [bool] true networkingMode = NAT にのみ適用されます。 ホスト上の NAT に対して Linux の DNS サーバーを構成するように WSL に通知するブール値です。 false に設定すると、Windows から Linux に DNS サーバーがミラーリングされます。
networkingMode** string NAT 値が mirrored の場合、これによってミラー化されたネットワーク モードがオンになります。 既定または認識されない文字列では、NAT ネットワークになります。
firewall** [bool] true これを true に設定すると、Windows ファイアウォール規則だけでなく、Hyper-V トラフィックに固有の規則でも WSL ネットワーク トラフィックをフィルター処理できます。
dnsTunneling** [bool] false WSL から Windows への DNS 要求のプロキシ方法を変更します
autoProxy* [bool] false WSL が Windows の HTTP プロキシ情報を使用することを強制します

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

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

値型の後に * を持つエントリは、Windows 11でのみ使用できます。

値の種類の後に ** が付いているエントリには、Windows 11 バージョン 22H2 以降が必要です。

試験的な設定

これらの設定は、将来的に既定にすることを目指している試験的な機能のオプトイン プレビューです。

.wslconfig セクション ラベル: [experimental]

設定名 Value 既定値 メモ
autoMemoryReclaim string disabled CPU 使用がアイドル状態であることを検出した後、キャッシュされたメモリを自動的に解放します。 キャッシュされたメモリの低速解放のためには gradual に、即時解放のためには dropcache に設定します。
sparseVhd [bool] false true に設定すると、新しく作成されるすべての VHD は自動的にスパースに設定されます。
useWindowsDnsCache** [bool] false wsl2.dnsTunneling が true に設定されている場合にのみ適用可能です。 このオプションが false に設定されている場合、Linux からトンネリングされた DNS 要求は、Windows 内のキャッシュされた名前をバイパスして、常に要求をネットワークに流します。
bestEffortDnsParsing** [bool] false wsl2.dnsTunneling が true に設定されている場合にのみ適用可能です。 true に設定すると、Windows は不明なレコードを無視しながら、DNS 要求から質問を抽出しその解決を試みます。
initialAutoProxyTimeout* string 1000 wsl2.autoProxy が true に設定されている場合にのみ適用可能です。 WSL コンテナーの起動時に、WSL が HTTP プロキシ情報の取得をどれだけ待機するかを構成します (ミリ秒単位)。 この時刻より後にプロキシ設定が解決された場合は、取得したプロキシ設定を使用するために WSL インスタンスを再起動する必要があります。
ignoredPorts** string null wsl2.networkingModemirrored に設定されている場合にのみ適用可能です。 Linux アプリケーションがバインドできるポート (Windows でそのポートが使用されている場合でも) を指定します。 これにより、アプリケーションは純粋に Linux 内のトラフィックのためだけにポートでリッスンできるため、そのポートが Windows 上で他の目的のために使用されている場合でも、それらのアプリケーションはブロックされません。 たとえば、WSL は、Docker Desktop の Linux のポート 53 へのバインドを許可します。これは Linux コンテナー内からの要求だけをリッスンしているからです。 コンマで区切られたリストで書式設定する必要があります (例: 3000,9000,9090)
hostAddressLoopback** [bool] false wsl2.networkingModemirrored に設定されている場合にのみ適用可能です。 True に設定すると、ホストに割り当てられている IP アドレスによって、コンテナーからホストに接続したり、ホストからコンテナーに接続したりできるようになります。 127.0.0.1 ループバック アドレスはいつでも使用できます。このオプションでは、追加で割り当てられたすべてのローカル IP アドレスも同様に使用可能となります。 ホストに割り当てられた IPv4 アドレスのみがサポートされます。

値型の後に * を持つエントリは、Windows 11でのみ使用できます。

値の種類の後に ** が付いているエントリには、Windows バージョン 22H2 以降が必要です。

.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 on default connection to bind WSL 2 localhost to Windows localhost. Setting is ignored when networkingMode=mirrored
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

# Enable experimental features
[experimental]
sparseVhd=true

その他のリソース