WSL での詳細設定の構成
[アーティクル] 2024/09/25
30 人の共同作成者
フィードバック
この記事の内容
wsl.conf と .wslconfig の違いは何ですか?
構成変更の 8 秒ルール
wsl.conf
.wslconfig
.wslconfig ファイルの例
その他のリソース
さらに 2 個を表示
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 のバージョンを確認する。
Linux ディストリビューションを実行しているサブシステムの実行が完全に停止し、構成設定の更新が表示されるまで再起動するまで待つ必要があります。 通常、これはディストリビューション シェルのすべてのインスタンスを閉じてから約 8 秒かかります。
ディストリビューション (たとえば、Ubuntu など) を起動し、構成ファイルを変更し、ディストリビューションを終了してから再起動すると、構成の変更が直ちに有効になると思われるかもしれません。 現在は、サブシステムがまだ実行されている可能性があるため、そのようにはなりません。 変更が取得されるのに十分な時間を確保するため、再起動する前に、サブシステムが停止するまで待つ必要があります。 PowerShell で wsl --list --running
コマンドを使用すると、閉じた後で Linux ディストリビューション (シェル) がまだ実行されているかどうかを確認できます。 ディストリビューションが実行されていない場合は、"実行中のディストリビューションがありません" という応答を受け取ります。これで、ディストリビューションを再起動して、構成の更新が適用されているのを確認できるようになります。
コマンド wsl --shutdown
は WSL 2 のディストリビューションを再起動するための高速パスですが、実行中のすべてのディストリビューションがシャットダウンされるため、適切に使用してください。 wsl --terminate <distroName>
を使用し、実行中の特定のディストリビューションをただちに終了することもできます。
WSL 1 または WSL 2 で実行されている Linux ディストリビューションごとにディストリビューション別 wsl.conf でローカル設定 を構成します。
unix ファイルとしてディストリビューションのディレクトリに格納されます /etc
。
ディストリビューションごとに設定を構成するために使用されます。 このファイルで構成された設定は、このファイルが格納されているディレクトリを含む特定の Linux ディストリビューションにのみ適用されます。
バージョン WSL 1 または WSL 2 によって実行されるディストリビューションに使用できます。
インストールされているディストリビューションの /etc
ディレクトリに移動するには、ディストリビューションのコマンド ラインで cd /
を使ってルート ディレクトリにアクセスした後、ls
でファイルの一覧を表示するか、Windows エクスプローラーで explorer.exe .
を表示します。 ディレクトリパスは次のようになります: /etc/wsl.conf
注意
wsl.conf ファイルを使用したディストリビューションごとの設定の調整は、Windows ビルド 17093 以降でのみ使用できます。
wsl.conf ファイルは、ディストリビューションごとに設定を構成します。 (WSL 2 ディストリビューションのグローバル構成については、「.wslconfig 」を参照してください)。
wsl.conf ファイルでは、次の 4 つのセクションがサポートされています: automount
、network
、interop
、および user
。 "(.ini ファイルの慣習にならい、.gitconfig ファイルのように、キーはセクションの下で宣言されています。)" wsl.conf ファイルを保存する場所についての情報は、「wsl.conf 」を参照してください。
多くの 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
にマウントされていることがわかります。
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 進数のマスク
022
fmask
すべてのファイルに対して除外するアクセス許可の 8 進数のマスク
000
dmask
すべてのディレクトリに対して除外するアクセス許可の 8 進数のマスク
000
metadata
Linux システムのアクセス許可をサポートするため、Windows ファイルにメタデータが追加されるかどうか
disabled
case
大文字と小文字が区別されるディレクトリ、および WSL で作成される新しいディレクトリにフラグを設定するかどうかを指定します。 オプションについて詳しくは、大文字と小文字の区別 に関する記事をご覧ください。 オプションには off
、dir
、または force
があります。
off
デフォルトでは、WSL は uid と gid をデフォルトユーザーの値に設定します。 たとえば、Ubuntu では、既定のユーザーは uid=1000、gid=1000 です。 この値を使用して別の gid または uid オプションを指定すると、既定のユーザー値が上書きされます。 それ以外の場合は、既定値が常に追加されます。
ユーザー ファイル作成モード マスク (umask) は、新しく作成されたファイルのアクセス許可を設定します。 既定値は 022 で、データを書き込むことができるのはあなただけですが、誰でもデータを読み取ることができます。 値は、さまざまなアクセス許可設定を反映するように変更できます。 たとえば、 umask=077
アクセス許可を完全にプライベートに変更し、他のユーザーがデータを読み書きすることはできません。 さらにアクセス許可を指定するには、fmask (ファイル) と dmask (ディレクトリ) も使用できます。
注意
アクセス許可のマスクは、ファイルまたはディレクトリに適用される前に論理 OR 演算によって配置されます。
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
注
command
string
""
WSL インスタンスの開始時に実行するコマンドの文字列。 このコマンドは、ルート ユーザーとして実行されます。 例: service docker start
。
次の 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
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 ファイルは、WSL 2 で実行されているすべての Linux ディストリビューションの設定をグローバルに構成します。 (ディストリビューションごとの構成については、 wsl.conf を参照してください)。
.wslconfig ファイルを格納する場所については、「.wslconfig」を参照してください。
注意
.wslconfig
でグローバル設定を構成することは、Windows ビルド 19041 以降で WSL 2 として実行されているディストリビューションにのみ使用できます。 これらの変更を有効にするには、wsl --shutdown
を実行して WSL 2 VM をシャットダウンしてから WSL インスタンスを再起動することが必要な場合があることに注意してください。
このファイルには、WSL 2 ディストリビューションを実行する VM に影響を与える次のオプションを含めることができます:
.wslconfig セクション ラベル: [wsl2]
テーブルを展開する
key
value
default
注
kernel
path
Microsoft によって構築されたカーネルで提供される受信トレイ
カスタム Linux カーネルへの絶対 Windows パス。
memory
size
Windows の合計メモリの 50%
WSL 2 VM に割り当てるメモリの量。
processors
数値
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 以降でのみ使用できます。
swap
size
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
boolean
true
WSL で GUI アプリケーション (WSLg ) のサポートをオンまたはオフにするブール値。
debugConsole
*
boolean
false
WSL 2 ディストリビューション インスタンスの開始時に dmesg
の内容を表示する出力コンソール ウィンドウを有効にするブール値。 Windows 11でのみ使用できます。
nestedVirtualization
*
boolean
true
入れ子になった仮想化を有効または無効にして、他の入れ子になった VM を WSL 2 内で実行できるようにするブール値。 Windows 11でのみ使用できます。
vmIdleTimeout
*
数値
60000
VM がアイドル状態になってからシャットダウンされるまでのミリ秒数。 Windows 11でのみ使用できます。
dnsProxy
boolean
true
networkingMode = NAT にのみ適用されます。 ホスト上の NAT に対して Linux の DNS サーバーを構成するように WSL に通知するブール値です。 false に設定すると、Windows から Linux に DNS サーバーがミラーリングされます。
networkingMode
**
string
NAT
値が mirrored
の場合、これによってミラー化されたネットワーク モードがオンになります。 既定または認識されない文字列では、NAT ネットワークになります。
firewall
**
boolean
true
これを true に設定すると、Windows ファイアウォール規則だけでなく、Hyper-V トラフィックに固有の規則でも WSL ネットワーク トラフィックをフィルター処理できます。
dnsTunneling
**
boolean
true
WSL から Windows への DNS 要求のプロキシ方法を変更します
autoProxy
*
boolean
true
WSL が Windows の HTTP プロキシ情報を使用することを強制します
defaultVhdSize
size
1099511627776
(1TB)
Linux ディストリビューション (Ubuntu など) ファイル システムを格納する仮想ハード ディスク (VHD) のサイズを設定します。 配布ファイル システムで使用できる最大サイズを制限するために使用できます。
path
値を含むエントリでは、円記号をエスケープした Windows パスを指定する必要があります。例: C:\\Temp\\myCustomKernel
size
値を含むエントリでは、サイズの後で単位を指定する必要があります。例: 8GB
、512MB
。
値型の後に * を持つエントリは、Windows 11でのみ使用できます。
値の種類の後に ** が付いているエントリには、Windows 11 バージョン 22H2 以降が必要です。
これらの設定は、将来的に既定にすることを目指している試験的な機能のオプトイン プレビューです。
.wslconfig セクション ラベル: [experimental]
テーブルを展開する
設定名
Value
既定値
メモ
autoMemoryReclaim
string
disabled
CPU 使用がアイドル状態であることを検出した後、キャッシュされたメモリを自動的に解放します。 キャッシュされたメモリの低速解放のためには gradual
に、即時解放のためには dropcache
に設定します。
sparseVhd
[bool]
false
true に設定すると、新しく作成されるすべての VHD は自動的にスパースに設定されます。
bestEffortDnsParsing
**
[bool]
false
wsl2.dnsTunneling
が true に設定されている場合にのみ適用可能です。 true に設定すると、Windows は不明なレコードを無視しながら、DNS 要求から質問を抽出しその解決を試みます。
dnsTunnelingIpAddress
**
string
10.255.255.254
wsl2.dnsTunneling
が true に設定されている場合にのみ適用可能です。 DNS トンネリングが有効な場合に Linux resolv.conf ファイルで構成されるネーム サーバーを指定します。
initialAutoProxyTimeout
*
string
1000
wsl2.autoProxy
が true に設定されている場合にのみ適用可能です。 WSL コンテナーの起動時に、WSL が HTTP プロキシ情報の取得をどれだけ待機するかを構成します (ミリ秒単位)。 この時刻より後にプロキシ設定が解決された場合は、取得したプロキシ設定を使用するために WSL インスタンスを再起動する必要があります。
ignoredPorts
**
string
null
wsl2.networkingMode
が mirrored
に設定されている場合にのみ適用可能です。 Linux アプリケーションがバインドできるポート (Windows でそのポートが使用されている場合でも) を指定します。 これにより、アプリケーションは純粋に Linux 内のトラフィックのためだけにポートでリッスンできるため、そのポートが Windows 上で他の目的のために使用されている場合でも、それらのアプリケーションはブロックされません。 たとえば、WSL は、Docker Desktop の Linux のポート 53 へのバインドを許可します。これは Linux コンテナー内からの要求だけをリッスンしているからです。 コンマで区切られたリストで書式設定する必要があります (例: 3000,9000,9090
)
hostAddressLoopback
**
[bool]
false
wsl2.networkingMode
が mirrored
に設定されている場合にのみ適用可能です。 True
に設定すると、ホストに割り当てられている IP アドレスによって、コンテナーからホストに接続したり、ホストからコンテナーに接続したりできるようになります。 127.0.0.1
ループバック アドレスはいつでも使用できます。このオプションでは、追加で割り当てられたすべてのローカル IP アドレスも同様に使用可能となります。 ホストに割り当てられた IPv4 アドレスのみがサポートされます。
値型の後に * を持つエントリは、Windows 11でのみ使用できます。
値の種類の後に ** が付いているエントリには、Windows バージョン 22H2 以降が必要です。
次の .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