在 WSL 中設定 .wslconfig 和 wsl.conf:完整實用指南

最後更新: 29/10/2025
作者: 艾薩克
  • 了解其作用範圍:.wslconfig 是全域的(WSL 2),而 wsl.conf 是每個發行版的。
  • 請正確重啟 WSL(8 秒規則)以套用變更。
  • 優化資源與 I/O:記憶體、交換空間、檔案系統 Linux 以及 DrvFs。
  • 利用 Intune、GPO 和適當的網路模式加強安全性和管理。

使用 .wslconfig 和 wsl.conf 設定 WSL

如果你在 Windows 系統中使用 Linux,那麼最大限度提高效能和穩定性的關鍵在於兩個設定檔: .wslconfig 和 wsl.conf透過這些設置,您可以調整 WSL 2 虛擬機器使用的記憶體大小、驅動器的掛載方式、使用的 DNS 伺服器,以及是否在您的發行版上啟用 systemd 等所有內容。您可以在這裡找到… WSL2 和 Docker 環境建立指南實用且詳盡,幫助您掌握這些選項,而不會讓您的生活變得複雜。

在開始之前,首先需要先明確兩個概念: .wslconfig 檔案套用全域 WSL 設定(僅限 WSL 2) y wsl.conf 定義了每個發行版的行為此外,還有一條不成文的規定:每次更改設定後,都必須正確重新啟動 WSL 才能使變更生效。接下來,我們將透過實際範例,講解您需要了解和執行的所有操作。 命令 和良好做法。

.wslconfig 和 wsl.conf 的主要差異

這兩個文件之間有非常清晰的界線: .wslconfig 檔案是全域的,存在於 Linux 系統之外。 (在 Windows 系統上),而 wsl.conf 檔案是每個發行版本地的。 它儲存在 Linux 系統內部。了解這一點可以幫你省去調試問題時的許多麻煩。

總之: .wslconfig 檔案位於 %UserProfile%\\.wslconfig。 (預設不存在;您需要建立它)並控制 WSL 2 虛擬機器(記憶體、CPU、核心、網路等)。就其本身而言, wsl.conf 檔案位於 /etc/wsl.conf。 在分發過程中,它管理自動組裝、內部網路選項、與 Windows 的互通性以及預設使用者。 開機 等等

重要事項: .wslconfig 選項僅影響 WSL 2。如果您使用的是執行 WSL 1 的發行版,則這些全域選項將不適用。

使用 .wslconfig 檔案設定 WSL 2 虛擬機

「8 秒規則」以及如何正確重啟 WSL

當您更改任何參數時 .wslconfig 或 wsl.conf僅僅關閉視窗是不夠的。 終端您必須等待 WSL 虛擬機器完全停止,這通常需要大約 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 啟動的服務),您可以使用兩行程式碼啟用它。 wsl.conf:


systemd=true

使用以下命令檢查您的版本: wsl --version 編輯完成後,運行 wsl.exe --shutdown若要進行驗證,請使用 systemctl list-unit-files --type=service 您將看到服務的狀態。此功能使 WSL 更接近真正的 Linux 體驗。如果您需要更深入的管理訊息,請參閱如何操作。 使用 systemd 管理服務 查看實際案例。

Windows 磁碟機自動掛載 (DrvFs)

本節介紹如何使用 DrvFs 在 Linux 系統中掛載 C 碟或 D 碟等磁碟機。您可以啟用或停用 DrvFs,變更其根目錄,或新增權限選項。

  • 啟用 (布林值):預設為 true,將 C:/ 或 D:/ 掛載到 /mnt.
  • 掛載檔案系統標籤 (布林值):預設為 true,使 WSL 處理 /etc/fstab 在一開始。
  • (字串):預設值 /mnt/你可以把它改成 /windir/ 你會看到 /windir/c.
  • 方案: 以逗號分隔的 DrvFs 特定清單(權限和元資料)。

有用的DrvFs選項: uid、gid、umask、fmask、dmask、metadata 和 case. 如果您激活 metadata你可以使用口罩,例如 umask=022 o dmask=000 並且像在“純”Linux 系統中一樣微調權限。如果您的工作流程需要 從 Windows 存取 Linux 分割區本部分和 DrvFs 是調整權限和程序集的關鍵。

  Word 以閱讀模式開啟文檔,但不允許儲存:原因和解決方案

DrvFs究竟是什麼?

DrvFs 是 WSL 中 Windows 和 Linux 之間的檔案系統橋接器。它允許您在 WSL 中掛載 Windows 磁碟機。 /mnt/c, /mnt/d等等,並定義權限、大小寫敏感度和元資料的管理方式。如果您需要更類似 Linux 的行為, 活動元數據 並根據您的喜好調整權限遮罩。

網路、互通性、預設使用者和啟動

您可以控制主機名,以及 WSL 是否自動產生主機名稱。 /etc/hosts y /etc/resolv.conf如果您喜歡手動管理 DNS 以實現以下目標,則調整此設定很有用: 更穩定或更快的分辨率.

本節定義了是否可以從 Linux 啟動 Windows 進程(例如, notepad.exe)並且如果將 Windows PATH 新增到 $PATH如果您正在尋找一個更「隔離」的Linux環境, 停用這些選項 以避免干擾。

在這裡,您可以選擇發行版啟動時使用的預設使用者。出於安全考慮,最好將其設定為您的普通用戶帳戶,而不是 root 用戶,儘管您偶爾也可以使用 root 用戶登入。 wsl -u root.

這樣,你就可以在 WSL 啟動時觸發一個指令(例如, service docker start如果您使用了 systemd,也可以保護 binfmt 檔案的自動產生。這是一種實用的方法。 在創業初期將服務自動化.

GPU 和時間同步

本部分可讓您決定是否 應用程序 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 虛擬機器全域設定

在這裡,您可以決定虛擬機器擁有多少記憶體、CPU 或交換空間,是否使用自訂內核,以及網路行為方式。請在以下位置建立該文件: %UserProfile%\\.wslconfig若要從 PowerShell 開啟資料夾,請使用 cd ~ 或直接在資源管理器中輸入路徑 % 用戶資料%.

本節的關鍵參數:

  • 核心:Windows 系統中自訂 Linux 核心的絕對路徑。
  • 核心模組:帶有自訂內核模組的 VHD。
  • 記憶:記憶體限制(預設為 Windows 記憶體的 50%)。
  • 處理器:WSL 2 虛擬機器的邏輯核心。
  • 本地主機轉送:暴露 WSL 連接埠 localhost:puerto 的主人。
  • 內核命令列:額外的核心參數(例如, vsyscall=emulate).
  • 安全模式: 安全模式 恢復有問題的發行版(窗戶11).
  • 交換 y 交換文件交換磁碟的大小和路徑。
  • 頁面報告:自動將未使用的記憶體回饋給主機。
  • gui應用程式- 啟用或停用 WSLg(Linux GUI 應用程式)。
  • 偵錯控制台, 最大崩潰轉儲計數調試和轉儲管理。
  • 嵌套虛擬化嵌套式開/關虛擬化。
  • vmIdleTimeout:虛擬機器關閉前無活動毫秒數。
  • dnsProxy, 網路模式, 火牆, DNS隧道, 自動代理高級網路和代理控制。
  • 預設Vhd大小:發行版 VHD 的最大大小(例如,1 TB)。

格式說明:條目類型 路徑 他們必須使用 Windows 路由 雙反斜線例如: C:\\Temp\\myCustomKernel大小參數接受單位(MB/GB);如果省略單位,則預設以位元組為單位。某些選項需要指定單位。 窗戶11 以及最新版本的 WSL。

網路:NAT、鏡像、virtio 等

網路模式 您選擇網路模式: NAT (預設), mirrored, virtioproxy, bridged (已過時)或 none在 NAT 模式下,WSL 位於內部 NAT 之後;在鏡像配置中,網路堆疊會被鏡像,從而簡化從 LAN 到 WSL 服務的存取;使用 virtioProxy 時,則使用備用後端。如果您使用 鏡像您可以透過以下方式進行微調 忽略的連接埠 允許 Linux 綁定端口,即使 Windows 已經佔用了這些端口。

若要使用鏡像在本地網路上公開服務,請新增以下內容: .wslconfig:


networkingMode=mirrored

wsl --shutdown您可以使用 PowerShell(管理員權限)調整 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.

  Burp Suite Web 滲透測試完整教程

實驗裝置

此部分可讓您啟動預覽功能。其中包括: 自動記憶體回收 (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 和記憶體效能

對於高強度工作(例如, 處理數百張 20 萬像素影像 (使用 ODM 時),建議調整全域資源並在原生 Linux 檔案系統中運作,以避免 I/O 效能損失。 /mnt/c設定足夠的記憶體和交換空間限制 .wslconfig 並用以下方式檢查實際使用情況 htop o free -h.

實用建議:將您的項目儲存到 /家/如果不需要自動掛載,請停用它;如果進程仍然出現記憶體不足的情況, 互換增加 (例如,16 GB)和分配的 RAM(例如,8-12 GB,取決於您的機器)。如果您創建 .wslconfig 如果是第一次嘗試並且“不起作用”,請確保它已正確設定。 % 用戶資料%,這個名字是字面意思。 .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

如果您使用類似這樣的模式 dnsProxy o DNS隧道.wslconfig同時檢查其參數,如有必要,進行調整 DNS隧道IP位址 或活躍 盡力而為 DNS 解析 忽略未知記錄來解析請求。

安裝和初步步驟

WSL隨Windows一起提供,但您必須… 啟用它並安裝發行版在現代版本(20262+)中,只需從 PowerShell 運行即可。 CMD: wsl --install此命令啟用 WSL 和 VM 平台組件,下載內核,將 WSL 2 設為預設值,並安裝 Ubuntu(可能需要重新啟動)。

首次從「開始」功能表開啟發行版時,系統會提示您建立 Linux 使用者名稱和密碼它們與您的 Windows 帳戶無關,預設會使用該帳戶登入。若要變更密碼,請使用 passwd如果你忘記了,請以 root 使用者身分開啟發行版。 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 終端機以啟動虛擬機器。

Windows終端機和程式碼編輯器

體驗得到了極大的改善 Windows終端 (標籤頁、面板、GPU渲染、主題…)。每個已安裝的發行版都會顯示為一個可設定的設定檔。對於開發而言,最方便的選項通常是… Visual Studio代碼 使用遠端開發支援 (WSL) 擴充。從發行版啟動 code . 這樣,你就能在 WSL 中擁有一個完整的編輯環境。

如果您使用 C++ 工作,Visual Studio 2022 整合了以下功能的原生支援: 面向 WSL 的 CMake 項目 o SSH這樣,您就可以在 Linux 系統上使用同一個 VS 實例進行編譯和偵錯。

Git、容器和資料庫

提供配置 WSL 中的 Git 如果需要,可以使用憑證管理器,這樣就不用手動輸入密碼了。檢查行尾符和文件。 .gitignore 為了避免平台特定的問題,VS Code 整合了與 WSL 無縫協作的 Git 指令。

Docker桌面 透過 WSL 2,您可以以敏捷的方式使用容器,如果您有興趣,也可以將您的專案連接到遠端開發容器。 數據庫WSL 可以毫無問題地支援它。 MySQL、PostgreSQL、MongoDB、Redis、SQL Server 或 SQLite它是跨平臺本地開發的理想環境。

  如何修復 Windows 中不斷自行斷開連接的外部硬碟

GPU加速和圖形應用程式

WSL 讓您可以利用以下優勢: 團隊的GPU 對於繁重的工作負載(AI、CUDA 等),實際上,只需確保您擁有最新的驅動程式和工具包,並在必要時使用容器進行驗證即可。 nvidia/cuda. 此外,與 工作組 你可以運行 Linux GUI 應用程式 無需設定外部 X 伺服器。

有用的互通性命令

這兩個世界之間存在著非常實際的共存關係。來自 Windows: wsl ls -la 列出 Linux 工具並進行篩選 findstr 反之亦然(混合) dir y grep從 Linux 系統啟動 任何帶有 .exe 檔案的 Windows 應用程式例如 notepad.exe .bashrc。 你也有 wslpath 轉換系統間的路由: wslpath RUTA_WINDOWS o wslpath -w RUTA_LINUX.

掛載磁碟和使用外部磁碟機

如果您需要存取實體磁碟或內存 USB 從 WSL 2 開始,您可以使用以下方式進行設定: wsl --mount 並像在 Linux 系統中一樣進行管理。請記住檢查檔案系統以及是否需要 root 權限,以避免掛載錯誤。

企業安全與管理(Intune 和 GPO)

現在您可以使用諸如此類的工具來管理 WSL。 Microsoft Intune從入口網站建立設定目錄設定文件,然後搜尋「適用於 Linux 的 Windows 子系統」以查看所有可用選項。這非常適合強制執行諸如獨佔使用之類的策略。 WSL商店停用 WSL 1 或阻止自訂核心和網路配置。

企業環境強化建議:停用 AllowInboxWSL (強製商店版本), 允許 WSL1中, 調試 shell核心/命令列配置、自訂網路、透過 .wslconfig 設定防火牆、巢狀虛擬化或核心偵錯。這些 GPO 使用以下方式定義: WSL ADMX可在 GitHub 上獲取,並可匯入進行本地管理。

存取控制和命令

政治 允許WSL, AllowInboxWSL y 允許 WSL1 他們控制著誰可以使用 WSL 以及使用哪個版本。您也可以允許或阻止使用者使用。 wsl --debug-shell y wsl --mount 根據您的安全需求。這是額外的安全層。 避免不必要的配置 在管理團隊中。

故障排除:建立 .wslconfig 和記憶體問題

如果 .wslconfig 檔案“沒有任何作用”,請驗證該檔案是否存在。 %UserProfile%\\.wslconfig沒有隱藏擴展名或奇怪的 BOM,並且其語法有效(第 1 節) 以及鍵值對)。建立或修改後,運行 wsl --shutdown 開啟發行版。

對於記憶體密集型負載(例如 一批共 470 張 20MP 圖片),增加分配的 RAM 和交換空間。範例起始點:


memory=12GB
processors=8
swap=16GB
swapFile=C:\\WSL\\swap.vhdx
pageReporting=true

還要檢查項目是否在… Linux 檔案系統如果持續收到「記憶體不足」訊息,請檢查工具本身的限制(ODM 參數),並啟動 自動記憶體回收 如果您有興趣快速恢復快取並監控使用情況, top/ htop別忘了Windows也需要足夠的可用記憶體。

額外的良好實踐和資源

在進行網路鏡像實驗時,請仔細調整防火牆設定;如果 您禁用了規則 要進行測試,請稍後重新啟動它們。如果您需要更多文件或範例,可以參考外部資源,例如: 這個PDF如果您正在使用 GPU,請在開始之前驗證您的堆疊(驅動程式、CUDA/工具包、版本)。

對於那些管理車隊的人來說,這種組合 Intune + ADMX 它能夠精細控制 .wslconfig 檔案中哪些內容可以修改、允許哪些命令以及是否接受 WSL 1 發行版。這有助於… 標準化環境減少事故發生,提高安全等級。

有了這些設置,您就可以獲得一套完整的 WSL 專業設置指南: 使用 wsl.conf 檔案來分析每個發行版的效能。, .wslconfig 用於管理全域虛擬機明智地重啟 WSL,利用 Linux 的原生檔案系統提升效能,發揮 GPU 和進階網路技術的優勢,如果你在公司工作,要依靠策略來控制一切。

如何使用自訂 Linux 核心和 red-2 設定 WSL3
相關文章:
如何使用自訂 Linux 核心和網路設定 WSL2