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

如果你在 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 的發行版,則這些全域選項將不適用。
「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 是調整權限和程序集的關鍵。
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.
實驗裝置
此部分可讓您啟動預覽功能。其中包括: 自動記憶體回收 (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它是跨平臺本地開發的理想環境。
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 和進階網路技術的優勢,如果你在公司工作,要依靠策略來控制一切。
對字節世界和一般技術充滿熱情的作家。我喜歡透過寫作分享我的知識,這就是我在這個部落格中要做的,向您展示有關小工具、軟體、硬體、技術趨勢等的所有最有趣的事情。我的目標是幫助您以簡單有趣的方式暢遊數位世界。
