- スコープを理解する: .wslconfig はグローバル (WSL 2) であり、wsl.conf はディストリビューションごとにあります。
- 変更を適用するには、WSL を適切に再起動します (8 秒ルール)。
- リソースとI/Oを最適化: メモリ、スワップ、ファイルシステム Linux および DrvFs。
- Intune、GPO、適切なネットワーク モードを使用してセキュリティと管理を強化します。

Windows 内で Linux を使用している場合、パフォーマンスと安定性を最大限に高める鍵は次の 2 つの構成ファイルにあります。 .wslconfig と wsl.confこれらの設定では、WSL 2 VMが使用するメモリ量から、ドライブのマウント方法、使用するDNSサーバー、ディストリビューションでsystemdを有効にするかどうかまで、あらゆることを調整できます。ここには WSL2 と Docker を使った環境構築ガイド生活を複雑にすることなくこれらのオプションを習得するための実用的かつ詳細なガイドです。
始める前に、次の 2 つの考えを明確にしておくことが重要です。 .wslconfig はグローバル WSL 設定を適用します (WSL 2 のみ) y wsl.confは各ディストリビューションの動作を定義しますさらに、暗黙のルールがあります。何かを変更したら、変更を有効にするには必ずWSLを再起動する必要があります。ここからは、実際の例を用いて、知っておくべきすべてのこと、そして実行すべきことを詳しく説明していきます。 コマンド そして良い実践。
.wslconfig と wsl.conf の主な違い
2 つのファイルの間には非常に明確な境界があります。 .wslconfig はグローバルであり、Linux の外部に存在します。 (Windowsの場合)、 wsl.conf は各ディストリビューションにローカルです そしてそれはLinuxシステム自体に保存されます。これを理解しておくと、問題をデバッグする際に頭を悩ませる必要がなくなります。
要するに: .wslconfig は %UserProfile%\\.wslconfig にあります (デフォルトでは存在しないため、作成する必要があります)WSL 2 VM(メモリ、CPU、カーネル、ネットワークなど)を制御します。 wsl.confは/etc/wsl.confにあります。 ディストリビューション内で自動アセンブリ、内部ネットワークオプション、Windowsとの相互運用性、デフォルトユーザーなどを制御します。 ブーツ その他
重要: .wslconfig オプションは WSL 2 にのみ影響しますWSL 1 を実行しているディストリビューションがある場合、これらのグローバル オプションは適用されません。
「8秒ルール」とWSLの適切な再起動方法
パラメータを変更すると、 .wslconfig または wsl.conf単にウィンドウを閉じるだけでは十分ではありません ターミナルWSL VMが完全に停止するまで待つ必要があります。これには通常約 8秒 すべてのセッションを終了した後。
強制的にクリーンリブートしたい場合は、 WSLを再起動するコマンド そして使用 PowerShellの これらのコマンドで: wsl --list --running (どのディストリビューションがまだアクティブであるかを確認するため) wsl --shutdown (全てシャットダウンする)また、特定のディストリビューションだけを終了することもできます。 wsl --terminate <NombreDistro>このステップは、 変更が正しく適用されている.
wsl.conf: ディストリビューション別の構成 (WSL 1 および WSL 2)
ファイル /etc/wsl.conf ディストリビューションレベルでの動作を調整できます。INI形式のセクションをサポートしています。 , , , 、プラス , y 最近のシステムでは、ドライブのマウント方法、Windows PATH を追加するかどうか、デフォルトで使用されるユーザーなどを決定するのに最適です。
お気に入りのエディタで開くことができます。 ルート: sudo nano /etc/wsl.conf存在しない場合は作成してください。編集後は、WSLシャットダウンルールを適用して、 変更が有効になる.
ディストリビューションでsystemdを有効にする
WSLは以下をサポートしています systemd 最新バージョン(WSL 0.67.6以降)では有効です。ワークフローで必要な場合(例えばsystemd経由で起動するサービスなど)、以下の2行で有効にすることができます。 wsl.conf:
systemd=true
バージョンを確認するには wsl --version 編集後、実行 wsl.exe --shutdown確認するには、 systemctl list-unit-files --type=service すると、サービスの状態が表示されます。この機能により、WSLは真のLinux体験に近づきます。より詳細な管理情報が必要な場合は、こちらをご覧ください。 systemdでサービスを管理する 実際の例を見ることができます。
Windows ドライブ自動マウント (DrvFs)
このセクションでは、C: や D: などのドライブを Linux 内で DrvFs を使用してマウントする方法を定義します。DrvFs を有効化または無効化したり、ルートを変更したり、権限オプションを追加したりできます。
- 使用可能 (boolean): デフォルトではtrueで、C:/またはD:/をマウントします
/mnt. - マウントFsタブ (ブール値): デフォルトではtrueで、WSLは処理します
/etc/fstab初めに。 - ルート (文字列): デフォルト
/mnt/次のように変更できます/windir/そしてあなたは見るでしょう/windir/c. - オプション: DrvFs 固有のコンマ区切りリスト (アクセス許可とメタデータ)。
便利な DrvFs オプション: uid、gid、umask、fmask、dmask、メタデータ、大文字と小文字有効にすると metadata次のようなマスクを使うことができます umask=022 o dmask=000 「純粋な」Linuxと同じように、権限を微調整できます。ワークフローで WindowsからLinuxパーティションにアクセスするこのセクションと DrvFs は、アクセス許可とアセンブリを調整するための鍵となります。
DrvFs とは何でしょうか?
DrvFsはWSLにおけるWindowsとLinux間のファイルシステムブリッジです。これにより、Windowsドライブをマウントできます。 /mnt/c, /月/日など、権限、大文字と小文字の区別、メタデータの管理方法を定義します。よりLinuxらしい動作が必要な場合は、 アクティブメタデータ 好みに応じて権限マスクを調整します。
ネットワーク、相互運用性、デフォルトユーザー、ブート
ホスト名と、WSL がホスト名を自動生成するかどうかを制御できます。 /etc/hosts y /etc/resolv.confこれを調整することは、DNSを手動で管理して より安定した、またはより速い解決.
このセクションでは、LinuxからWindowsプロセスを起動できるかどうかを定義します(例: notepad.exeWindowsのPATHが $PATHより「隔離された」Linux環境を探しているなら、 これらのオプションを無効にする 干渉を避けるため。
ここで、ディストリビューションの起動時に使用するデフォルトのユーザーを選択します。セキュリティ上の理由から、rootではなく通常のユーザーアカウントに設定することをお勧めしますが、必要に応じてrootでログインすることも可能です。 wsl -u root.
これにより、WSLの起動時にコマンドをトリガーできます(たとえば、 service docker startsystemdを使用している場合は、binfmtの自動生成を保護します。これは実用的な方法です。 起動時にサービスを自動化する.
GPUと時間同期
このセクションでは、 apps Linuxは準仮想化を通じてWindows GPUにアクセスできます。デフォルトでは 有効=true、ワークロードに最適 IA またはグラフィック。
WSLでWindowsのタイムゾーンを同期させることができます。 useWindowsTimezone=trueこれは、 矛盾や不一致を避ける タイムゾーンを変更したり、コンピューターをスリープ状態にしたりする場合。GPUをコンピューティングに使用したい場合は、 WSLにCUDAをインストールする そして去る ドライバー ツールキットも更新されました。
wsl.conf の完全な例
この例では、いくつかの便利なオプションを示します。 アセンブリのルート変更DrvFs権限、 独自のDNS およびデフォルトユーザー。注:効果を確認するには、WSLを再起動してください。開発環境をセットアップした場合は、以下の手順に従ってください。 WSLを使用して開発環境を構成する これらのオプションを統合します。
# /etc/wsl.conf
enabled=true
root=/
options="metadata,uid=1003,gid=1003,umask=077,fmask=011,case=off"
mountFsTab=true
hostname=DemoHost
generateHosts=false
generateResolvConf=false
enabled=false
appendWindowsPath=false
default=DemoUser
command=service docker start
.wslconfig: WSL 2 VM のグローバル設定
ここで、VMのメモリ、CPU、スワップ容量、カスタムカーネルの使用の有無、ネットワークの動作を決定します。以下のファイルを作成します。 %UserProfile%\\.wslconfigPowerShellからフォルダを開くには、 cd ~ またはエクスプローラーにパスを直接入力して %UserProfile%.
このセクションの主なパラメータ:
- kernel: Windows 内のカスタム Linux カーネルへの絶対パス。
- カーネルモジュール: カスタム カーネル モジュールを含む VHD。
- っ: RAM 制限 (デフォルトは Windows RAM の 50%)。
- プロセッサ: WSL 2 VM の論理コア。
- ローカルホスト転送: WSLポートを公開します
localhost:puertoホストの。 - カーネルコマンドライン: 追加のカーネルパラメータ(例:
vsyscall=emulate). - セーフモード: セーフモード 問題のあるディストリビューションを回復する(Windows 11).
- swap y スワップファイル: スワップ ディスクのサイズとパス。
- ページレポート: 未使用のメモリを自動的にホストに返します。
- guiアプリケーション- WSLg (Linux GUI アプリ) を有効または無効にします。
- デバッグコンソール, 最大クラッシュダンプカウント: デバッグとダンプ管理。
- ネストされた仮想化: ネストされたオン/オフ仮想化。
- vmIdleタイムアウト: VM をシャットダウンするまでの非アクティブ時間のミリ秒数。
- dnsプロキシ, ネットワーキングモード, ファイアウォール, dnsトンネリング, 自動プロキシ高度なネットワークおよびプロキシ制御。
- デフォルトVHDサイズ: ディストリビューションの VHD の最大サイズ (例: 1 TB)。
書式設定の注意: タイプのエントリ path Windowsルートを使用する必要があります 二重バックスラッシュたとえば、次のようになり C:\\Temp\\myCustomKernelサイズは単位(MB/GB)で指定します。単位を省略した場合はバイトとして解釈されます。一部のオプションでは Windows 11 および WSL の最新バージョン。
ネットワーク: NAT、ミラーリング、virtio など
とともに ネットワーキングモード ネットワーク モードを選択します。 NAT (デフォルト)、 mirrored, virtioproxy, bridged (廃止)または noneNATでは、WSLは内部NATの背後に現れます。ミラーリング構成では、ネットワークスタックが反映され、LANからWSLサービスへのアクセスが簡素化されます。virtioProxyでは、代替のバックエンドが使用されます。 ミラーリング、微調整することができます 無視されたポート Windows がポートを使用している場合でも、Linux がポートをバインドできるようにします。
ミラーリングを使用してローカルネットワーク上でサービスを公開するには、 .wslconfig:
networkingMode=mirrored
後に wsl --shutdownPowerShell (管理者) を使用して Hyper-V ファイアウォールを調整できます。
New-NetFirewallHyperVRule -DisplayName WSLPrivateInboundRule -Profiles Private -Direction Inbound -Action Allow -VMCreatorId ((Get-NetFirewallHyperVVMCreator).VMCreatorId)
# (Menos seguro) Desactivar la protección de Hyper-V por completo:
# Set-NetFirewallHyperVVMSetting -Name ((Get-NetFirewallHyperVVMCreator).VMCreatorId) -Enabled False
維持する パブリックネットワーク上のアクティブなファイアウォール 露出を制限します。生産が必要な場合は、 リバースプロキシとTLS.
実験セットアップ
このセクションでは、プレビュー中の機能を有効にできます。例えば、 自動メモリ再利用 (disabled, gradual, dropCache), スパースVHD (散在するVHD)、 ベストエフォートDNSパーシング, dnsトンネリングIPアドレス, 初期自動プロキシタイムアウト, 無視されたポート y ホストアドレスループバック一部はWindows 11 22H2+を必要とし、 メモリとネットワークを最適化する 特定のシナリオにおいて。
コメント付きの .wslconfig の例
この例では、リソースを制限し、カスタムカーネルを使用し、スワップを調整し、デバッグ機能を有効にします。 環境を標準化する 開発チームで。
# %UserProfile%\\.wslconfig
memory=4GB
processors=2
kernel=C:\\temp\\myCustomKernel
kernelModules=C:\\temp\\modules.vhdx
kernelCommandLine=vsyscall=emulate
swap=8GB
swapFile=C:\\temp\\wsl-swap.vhdx
pageReporting=false
localhostForwarding=true
nestedVirtualization=false
debugConsole=true
maxCrashDumpCount=10
sparseVhd=true
I/Oとメモリパフォーマンスを最適化する
集中的な作業(例えば、 数百枚の20MP画像を処理 (ODMを使用する場合)、グローバルリソースを調整し、ネイティブLinuxファイルシステムで作業して、I/Oペナルティを回避することをお勧めします。 /mnt/c十分なメモリとスワップ制限を設定する .wslconfig 実際の使用状況を確認するには htop o free -h.
実用的な推奨事項: プロジェクトを以下に保存します /家/必要ない場合は自動マウントを無効にし、それでもプロセスがメモリ不足になる場合は、 スワップ増加 (例:16GB)と割り当てられたRAM(例:マシンによって8~12GB)。 .wslconfig 初めてで「うまくいかない」場合は、 %UserProfile%名前は文字通りである .wslconfig (隠し拡張子なし)および WSLを再起動します 完全に。
DNSと名前解決
デフォルトでは、WSL はホストの DNS サーバーを使用しますが、自動生成しないように選択することもできます。 resolv.conf そして、あなたのサーバー(Cloudflare、Google、企業)を より予測可能な解決策。 で /etc/wsl.conf:
generateResolvConf=false
次に作成または編集します /etc/resolv.conf 必要なエントリを入力します。
nameserver 1.1.1.1
nameserver 8.8.8.8
次のようなモードを使用する場合 dnsプロキシ o dnsトンネリング から .wslconfigまた、パラメータを確認し、必要に応じて調整します。 dnsトンネリングIPアドレス またはアクティブ ベストエフォートDNSパーシング 不明なレコードを無視してリクエストを解決します。
インストールと最初の手順
WSLはWindowsに付属していますが、 有効にしてディストリビューションをインストールする最新のビルド(20262以降)では、PowerShellから実行するか、 CMD: wsl --installこのコマンドは、WSL および VM プラットフォーム コンポーネントを有効にし、カーネルをダウンロードし、WSL 2 をデフォルトとして設定し、Ubuntu をインストールします (再起動が必要になる場合があります)。
スタートから初めてディストリビューションを開くと、作成するように求められます。 Linuxのユーザー名とパスワードこれらはWindowsアカウントとは独立しており、デフォルトではWindowsアカウントがログインに使用されます。パスワードを変更するには、 passwd忘れてしまった場合は、ルート権限でディストリビューションを開いてください。 wsl -u root o wsl -d <Distro> -u root 実行します passwd <usuario>.
パッケージを更新し、プロジェクトを保存する場所を選択します
パッケージを最新の状態に保つ sudo apt update && sudo apt upgrade (Ubuntu/Debian)。そして、この黄金律を覚えておいてください。 ツールが配置されているFSで作業するLinuxツールを使用してコンパイルして実行する場合は、 \\wsl$\\<Distro>\\home\\<Usuario>Windowsツールを使用する場合は、ファイルを C:\\Users\\<Usuario>.
エクスプローラーで現在のWSLディレクトリを開くには、次のコマンドを実行します。 explorer.exe .次のようなルートをナビゲートすることもできます \\wsl$\\Debian\\home\\tu-usuario Windows の場合。フォルダーが空の場合は、WSL ターミナルを開いて VM をアクティブ化します。
Windowsターミナルとコードエディター
体験は大きく向上しました Windowsターミナル (タブ、パネル、GPUレンダリング、テーマなど)。インストールされた各ディストリビューションは、設定可能なプロファイルとして表示されます。開発環境の場合、最も便利なオプションは通常… Visual Studio Code リモート開発サポート(WSL)拡張機能をインストールします。ディストリビューションから起動します。 code . WSL 内で完全な編集環境が実現します。
C++で作業する場合、Visual Studio 2022ではネイティブサポートが統合されています。 WSLをターゲットとしたCMakeプロジェクト o SSH、同じ VS インスタンスから Linux 上でコンパイルおよびデバッグできるようになります。
Git、コンテナ、データベース
構成する WSL での Git 必要であれば、資格情報マネージャーを使えばパスワードを入力する手間が省けます。改行コードとファイルもチェックしましょう。 .gitignore プラットフォーム固有の問題を回避するために、VS Code は WSL とシームレスに動作する Git コマンドを統合します。
とともに Dockerデスクトップ WSL 2 を使用すると、コンテナーをアジャイルな方法で使用でき、興味があればプロジェクトをリモート開発コンテナーに接続することもできます。 データベースWSLは問題なくサポートしています MySQL、PostgreSQL、MongoDB、Redis、SQL Server、またはSQLiteクロスプラットフォームのローカル開発に最適な環境です。
GPUアクセラレーションとグラフィックアプリ
WSLを使用すると、 チームのGPU 負荷の高いワークロード(AI、CUDAなど)の場合。実際には、最新のドライバーとツールキットを使用していることを確認し、必要に応じて次のようなコンテナで検証してください。 nvidia/cuda。 また、 wslg 走れる Linux GUIアプリケーション 外部 X サーバーをセットアップする必要はありません。
便利な相互運用性コマンド
両方の世界は非常に実用的に共存しています。Windowsから: wsl ls -la Linuxツールでリストし、フィルタリングするには findstr またはその逆(混合 dir y grepLinuxから起動 .exe を持つ任意の Windows アプリ例えば notepad.exe .bashrc。 あなたも持っています wslpath システム間のルートを変換するには: wslpath RUTA_WINDOWS o wslpath -w RUTA_LINUX.
ディスクのマウントと外付けドライブの操作
物理ディスクまたはメモリにアクセスする必要がある場合 USB WSL 2からは、次のように設定できます。 wsl --mount Linuxと同じように管理できます。マウントエラーを回避するために、ファイルシステムを確認し、ルート権限が必要かどうかを確認してください。
企業におけるセキュリティと管理 (Intune と GPO)
WSLを次のようなツールで管理できるようになりました。 Microsoft Intuneポータルから構成カタログプロファイルを作成し、「Windows Subsystem for Linux」を検索すると、利用可能なすべてのオプションが表示されます。これは、排他的使用などのポリシーを適用するのに最適です。 WSLストア、WSL 1 を無効にするか、カスタム カーネルおよびネットワーク構成を防止します。
企業環境における強化の推奨事項: 無効にする 受信トレイWSLを許可する (ストア版を強制) WSL1 を許可する、 デバッグシェルカーネル/コマンドライン構成、カスタムネットワーク、.wslconfig経由のファイアウォール、ネストされた仮想化、カーネルデバッグ。これらのGPOは、 WSL ADMXGitHub で利用可能で、ローカル管理用にインポート可能です。
アクセス制御とコマンド
政治 WSLを許可する, 受信トレイWSLを許可する y WSL1 を許可する WSL を使用できるユーザーとバージョンを制御します。また、ユーザーの許可またはブロックも可能です。 wsl --debug-shell y wsl --mount セキュリティ要件に応じて、追加のレイヤーとして 不要な設定を避ける 管理対象チーム内。
トラブルシューティング: .wslconfig とメモリケースの作成
.wslconfigが「何もしない」場合は、ファイルが %UserProfile%\\.wslconfig、隠し拡張子や奇妙なBOMがなく、構文が有効である(セクション およびキー=値のペア)。作成または変更した後、 wsl --shutdown ディストリビューションを開きます。
メモリを大量に消費するロード( 470枚の20MP画像)は、割り当てられたRAMとスワップ領域を増やします。開始点の例:
memory=12GB
processors=8
swap=16GB
swapFile=C:\\WSL\\swap.vhdx
pageReporting=true
また、プロジェクトが Linux FS「メモリ不足」メッセージが引き続き表示される場合は、ツール自体の制限(ODMパラメータ)を確認し、 自動メモリ再利用 キャッシュを素早く回復し、使用状況を監視することに興味がある場合は、 top/ htopWindows にも十分な空き RAM が必要であることを忘れないでください。
追加の優れた実践とリソース
ネットワークミラーリングを試すときは、ファイアウォールを慎重に調整してください。 ルールを無効にする テストするには、後で再度有効化してください。追加のドキュメントや別の例が必要な場合は、以下の外部リソースを参照してください。 このPDFGPU を使用する場合は、開始する前にスタック (ドライバー、CUDA/ツールキット、バージョン) を検証してください。
艦隊を管理する人にとって、このコンボ Intune + ADMX .wslconfigで変更できる内容、許可するコマンド、WSL 1ディストリビューションを受け入れるかどうかを細かく制御できます。これにより、 環境を標準化する、インシデントを減らし、セキュリティのレベルを向上させます。
これらの設定により、WSL を専門的に設定するための総合的なガイドが得られます。 wsl.conf を使用して各ディストリビューションをプロファイルする, グローバルVMを管理するための.wslconfigWSL を賢く再起動し、パフォーマンスのために Linux のネイティブ FS を活用し、GPU と高度なネットワークを活用し、企業で働いている場合は、ポリシーに従ってすべてを制御します。
バイトの世界とテクノロジー全般についての情熱的なライター。私は執筆を通じて自分の知識を共有するのが大好きです。このブログでは、ガジェット、ソフトウェア、ハードウェア、技術トレンドなどについて最も興味深いことをすべて紹介します。私の目標は、シンプルで楽しい方法でデジタル世界をナビゲートできるよう支援することです。
