次の方法で共有


WSL での詳細設定の構成

wsl.confファイルと.wslconfig ファイルは、WSL VM の起動時に適用される WSL の詳細設定を構成するために使用されます。 wsl.conf は WSL ディストリビューションごとに設定を適用するために使用され、 .wslconfig は WSL にグローバル設定を適用するために使用されます。 相違点の詳細については、以下を参照してください。

特徴 .wslconfig wsl.conf
Scope すべての WSL に適用される一般的な設定 WSL ディストリビューションのみの設定
構成する WSL での機能の有効化、WSL 2 に電源を供給する仮想マシンの設定 (RAM、起動するカーネル、CPU の数など) ブート オプション、DrvFs の自動マウント、ネットワーク、Windows システムとの相互運用性、システムの使用状況、既定のユーザーなどの WSL での配布設定
ロケーション %UserProfile%\.wslconfig、WSL ディストリビューションの外部に /etc/wsl.conf(WSL ディストリビューション内)

現在、すべての .wslconfig 設定は WSL 2 ディストリビューションにのみ適用されます。 実行している 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

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

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

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

自動マウント オプション

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

説明 既定値
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 で作成される新しいディレクトリにフラグを設定するかどうかを指定します。 オプションについて詳しくは、大文字と小文字の区別に関する記事をご覧ください。 オプションには offdir、または force があります。 off

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

上記の umask、fmask などのオプションは、Windows ドライブがメタデータと共にマウントされている場合にのみ適用されます。 既定では、メタデータは有効になっていません。 詳細については、 こちらをご覧ください

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

DrvFs とは?

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

ネットワーク設定

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

価値 既定値 メモ
generateHosts ブーリアン true true にすると、/etc/hosts を生成するように WSL を設定します。 hosts ファイルには、IP アドレスに対応するホスト名の静的マップが含まれています。
generateResolvConf ブーリアン true true にすると、/etc/hosts を生成するように WSL を設定します。 resolv.conf には、指定されたホスト名をその IP アドレスに解決できる DNS リストが含まれています。
hostname 文字列 Windows ホスト名 WSL 配布に使用するホスト名を設定します。

相互運用の設定

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

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

価値 既定値 メモ
enabled ブーリアン true このキーの設定により、WSL で Windows プロセスの起動をサポートするかどうかが決まります。
appendWindowsPath ブーリアン true このキーを設定すると、WSL が Windows パス要素を $PATH 環境変数に追加するかどうかを決定します。

ユーザー設定

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

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

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

ブート設定

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

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

価値 既定値 メモ
command 文字列 無効 WSL インスタンスの開始時に実行するコマンドの文字列。 このコマンドは、ルート ユーザーとして実行されます。 例: service docker start
protectBinfmt ブーリアン true systemd が有効な場合、WSL が systemd ユニットを生成できないようにします。

GPU 設定

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

価値 既定値 メモ
enabled ブーリアン true Linux アプリケーションが準仮想化を介して Windows GPU にアクセスできるようにします。

時刻の設定

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

価値 既定値 メモ
useWindowsTimezone ブーリアン true このキーを設定すると、WSL が使用され、Windows で設定されたタイムゾーンに同期されます。

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%」と入力します。 ディレクトリパスは次のようになります: /etc/wsl.conf

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

.wslconfig の構成設定

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

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

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

ヒント

.wslconfig ファイルを手動で編集するのではなく、WSL 設定で WSL 構成を直接変更することをお勧めします。 WSL の設定は、[スタート] メニューにあります。 Linux 用 Windows サブシステムの設定

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

主な WSL の設定

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

価値 既定値 メモ
kernel パス Microsoft によって構築されたカーネルで提供される受信トレイ カスタム Linux カーネルへの絶対 Windows パス。
kernelModules パス カスタム Linux カーネル モジュール VHD への絶対 Windows パス。
memory サイズ Windows の合計メモリの 50% WSL 2 VM に割り当てるメモリの量。
processors 数値 Windows の倫理プロセッサと同じ数 WSL 2 VM に割り当てる倫理プロセッサの数。
localhostForwarding ブーリアン true WSL 2 VM でワイルドカードまたは localhost にバインドされたポートに、localhost:port 経由でホストから接続できるかどうかを指定するブール値。
kernelCommandLine 文字列 無し 追加のカーネル コマンド ライン引数。
safeMode ブーリアン false WSL を「セーフ モード」で実行します。これは、多くの機能を無効にし、不適切な状態にあるディストリビューションを回復するために使用することを目的としています。 Windows 11 および WSL バージョン 0.66.2 以降でのみ使用できます。
swap サイズ Windows のメモリ サイズの 25% を、最も近い GB に切り上げた値 スワップ ファイルがない場合に WSL 2 VM に追加するスワップ領域の量(0)。 スワップ ストレージは、メモリの需要がハードウェア デバイスの制限を超える場合に使用されるディスク ベースの RAM です。
swapFile パス %Temp%\swap.vhdx スワップ仮想ハード ディスクへの絶対 Windows パス。
guiApplications ブーリアン true WSL で GUI アプリケーション (WSLg) のサポートをオンまたはオフにするブール値。
debugConsole ¹ ブーリアン false WSL 2 ディストリビューション インスタンスの開始時に dmesg の内容を表示する出力コンソール ウィンドウを有効にするブール値。
maxCrashDumpCount 数値 10 デバッグのために保持されるクラッシュ ダンプ ファイルの最大数を設定します。 WSL によって保持される既定の数は 10 です。 この制限を超えると、古いクラッシュ ダンプが自動的に削除され、新しいクラッシュ ダンプの空き時間が空きます。 最大に設定すると、これらのクラッシュ ファイルで使用されるディスク領域の量を減らすことができます。
nestedVirtualization ¹ ブーリアン true 入れ子になった仮想化を有効または無効にして、他の入れ子になった VM を WSL 2 内で実行できるようにするブール値。
vmIdleTimeout ¹ 数値 60000 VM がアイドル状態になってからシャットダウンされるまでのミリ秒数。
dnsProxy ブーリアン true networkingMode = NATにのみ適用されます。 ホスト上の NAT に対して Linux の DNS サーバーを構成するように WSL に通知するブール値です。 falseに設定すると、Windows から Linux に DNS サーバーがミラー化されます。
networkingMode¹² 文字列 NAT 使用可能な値は、 nonenatbridged (非推奨)、 mirrored、および virtioproxyです。 値が none場合、WSL ネットワークは切断されます。 値が nat または不明な値の場合は、NAT ネットワーク モードが使用されます (WSL 2.3.25 以降、NAT ネットワーク モードが失敗した場合は、VirtioProxy ネットワーク モードの使用にフォールバックします)。 値が bridgedの場合は、ブリッジされたネットワーク モードが使用されます (このモードは WSL 2.4.5 以降非推奨としてマークされています)。 値が mirrored場合は、ミラー化されたネットワーク モードが使用されます。 値が virtioproxy場合は、VirtioProxy ネットワーク モードが使用されます。
firewall¹² ブーリアン true これを true に設定すると、Windows ファイアウォール規則だけでなく、Hyper-V トラフィックに固有の規則でも WSL ネットワーク トラフィックをフィルター処理できます。
dnsTunneling¹² ブーリアン true WSL から Windows への DNS 要求のプロキシ方法を変更します
autoProxy ¹ ブーリアン true WSL が Windows の HTTP プロキシ情報を使用することを強制します
defaultVhdSize サイズ 1099511627776 (1 TB) Linux ディストリビューション (Ubuntu など) ファイル システムを格納する仮想ハード ディスク (VHD) のサイズを設定します。 配布ファイル システムで使用できる最大サイズを制限するために使用できます。

"path" 値を持つエントリは、エスケープされた円記号を持つ Windows パスである必要があります。次に例を示します。 C:\\Temp\\myCustomKernel

size値を持つエントリの既定値は B (バイト) で、単位は読み取り可能です。 他の単位を使用するには、サイズ単位を追加する必要があります (例: 8GB または 512MB)。

¹: Windows 11 でのみ使用できます。

²: Windows 11 バージョン 22H2 以降が必要です。

試験的な設定

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

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

価値 既定値 メモ
autoMemoryReclaim 文字列 dropCache 使用可能な値は、 disabledgradual、および dropCacheです。 値が disabledの場合、WSL の自動メモリ再利用は無効になります。 値が gradual場合、キャッシュされたメモリはゆっくりと自動的に再利用されます。 値が dropCache または不明な値の場合、キャッシュされたメモリはすぐに再利用されます。
sparseVhd [bool] false trueに設定すると、新しく作成された VHD は自動的にスパースに設定されます。
bestEffortDnsParsing¹² [bool] false wsl2.networkingModemirrored に設定されている場合にのみ適用可能です。 trueに設定すると、Windows は DNS 要求から質問を抽出し、不明なレコードを無視して解決を試みます。
dnsTunnelingIpAddress¹² 文字列 10.255.255.254 wsl2.networkingModemirrored に設定されている場合にのみ適用可能です。 DNS トンネリングが有効な場合に Linux resolv.conf ファイルで構成されるネーム サーバーを指定します。
initialAutoProxyTimeout ¹ 文字列 1000 wsl2.networkingModemirrored に設定されている場合にのみ適用可能です。 WSL コンテナーの起動時に、WSL が HTTP プロキシ情報の取得をどれだけ待機するかを構成します (ミリ秒単位)。 この時刻より後にプロキシ設定が解決された場合は、取得したプロキシ設定を使用するために WSL インスタンスを再起動する必要があります。
ignoredPorts¹² 文字列 無効 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 11 バージョン 22H2 以降が必要です。

.wslconfig ファイルの例

次の wsl.conf のサンプル ファイルでは、使用可能な設定オプションの一部が示されています。 この例では、ファイルパスは 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

# Specify the modules VHD for the custum Linux kernel to use with your installed distros.
kernelModules=C:\\temp\\modules.vhdx

# 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

# 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

# Sets the maximum number of crash dump files to retain (default is 5)
maxCrashDumpCount=10

# Enable experimental features
[experimental]
sparseVhd=true

その他のリソース