深入瞭解不同的 WSL 版本,包括為什麼 WSL 2 現在是預設版本,以及可能保證將已安裝 Linux 發行版切換至舊版 WSL 1 架構的特定案例或例外狀況。
比較 WSL 1 和 WSL 2
本指南將比較 WSL 1 和 WSL 2,包括使用 WSL 1 而非 WSL 2 的例外狀況。 WSL 1 和 WSL 2 之間的主要差異是使用受控 VM 內的實際 Linux 核心、支援完整的系統呼叫相容性,以及整個 Linux 和 Windows作系統的效能。 WSL 2 是安裝 Linux 發行版時目前的預設版本,並使用最新且最偉大的虛擬化技術,在輕量型公用程式虛擬機 (VM) 內執行 Linux 核心。 WSL2 在受控的虛擬機器中以隔離容器形式運行 Linux 發行版本。 如果目前您的發行版執行的是 WSL 1,並希望更新至 WSL 2,請參閱 從 WSL 1 更新至 WSL 2。
比較功能
特徵 | WSL 1 | WSL 2 |
---|---|---|
Windows 與 Linux 之間的整合 | ✅ | ✅ |
快速開機時間 | ✅ | ✅ |
相較於傳統虛擬機,資源佔用較小 | ✅ | ✅ |
使用目前版本的 VMware 和 VirtualBox 執行 | ✅ | ❌ |
管理的 VM | ❌ | ✅ |
完整的 Linux 核心 | ❌ | ✅ |
完整系統呼叫相容性 | ❌ | ✅ |
跨OS檔案系統效能 | ✅ | ❌ |
systemd 支援 | ❌ | ✅ |
IPv6 支援 | ✅ | ✅ |
如上表所示,WSL 2 架構會以數種方式超越 WSL 1,但 OS 檔系統的效能例外,這可藉由將專案檔儲存在與執行以處理專案之工具相同的作系統上來解決。
WSL 2 僅適用於 Windows 11 或 Windows 10 版本 1903、組建 18362 或更新版本。 要確認您的 Windows 版本,請按 Windows 標誌鍵 + R,輸入 winver,然後選取 [確定]。 (或在 Windows 命令提示字元中輸入 ver
命令)。 您可能需要 更新至最新的 Windows 版本。 對於版本低於 14393 的情況,WSL 完全不受支援。
如需最新 WSL 2 更新的詳細資訊,請參閱 Windows 命令行部落格,包括 WSL 和 WSL 2023 年 9 月更新 中現已提供 Systemd 支援,以取得 IPv6 支援的詳細資訊。
注意
WSL 2 將會與 VMware 15.5.5+ 搭配運作,雖然 VirtualBox 6+ 表示有 WSL 支援,但仍有重大挑戰,因此不支援它。 在我們的 常見問題中深入瞭解。
WSL 2 的新功能
WSL 2 是基礎架構的重大改革,並使用虛擬化技術和 Linux 核心來啟用新功能。 此更新的主要目標是提高文件系統效能,並新增完整的系統呼叫相容性。
WSL 2 架構
傳統 VM 體驗可能很慢,無法開機、隔離、耗用大量資源,而且需要您的時間加以管理。 WSL 2 沒有這些屬性。
WSL 2 提供 WSL 1 的優點,包括 Windows 與 Linux 之間的無縫整合、快速開機時間、小型資源使用量,而且不需要 VM 設定或管理。 雖然 WSL 2 確實使用 VM,但它會在幕後進行管理並執行,讓您擁有與 WSL 1 相同的用戶體驗。
完整的 Linux 核心
WSL 2 中的Linux核心是由最新穩定分支中的Microsoft所建置,根據 kernel.org提供的來源。此核心已特別針對 WSL 2 進行微調,針對大小和效能進行優化,以在 Windows 上提供驚人的 Linux 體驗。 核心將由 Windows 更新提供服務,這表示您將取得最新的安全性修正和核心改善,而不需要自行管理。
WSL 2 Linux 核心是開放原始碼。 如果您想要深入瞭解,請參閱部落格文章,將Linux核心與 Windows 隨附於建置的小組所撰寫。
如需詳細資訊,請參閱適用於 Linux 的 Windows 子系統核心 版本資訊。
增加檔案IO效能
在 WSL 2 上,像 git clone
、npm install
、apt update
、apt upgrade
等檔案密集作業都顯著加快。
實際的速度增加將取決於您要執行的應用程式,以及它與檔案系統互動的方式。 WSL 2 的初始版本在解壓縮壓縮包時速度比 WSL 1 快高達 20 倍,而在各種專案中使用 git clone
、npm install
和 cmake
時,速度約為其 2 到 5 倍。
完整的系統呼叫相容性
Linux 二進制檔會使用系統呼叫來執行函式,例如存取檔案、要求記憶體、建立進程等等。 雖然 WSL 1 使用 WSL 小組所建置的轉譯層,但 WSL 2 包含自己的 Linux 核心與完整的系統呼叫相容性。 優點包括:
您可以在 WSL 內執行的全新一組應用程式,例如 Docker 等等。
Linux 核心的任何更新都立即可供使用(您不需要等待 WSL 小組實作更新並新增變更)。
使用 WSL 1 而非 WSL 2 的例外狀況
建議您使用 WSL 2,因為它提供更快的效能和 100% 系統呼叫相容性。 不過,在某些特定情況下,您可能偏好使用 WSL 1。 如果符合以下情況,請考慮使用 WSL 1:
- 您的項目檔必須儲存在 Windows 檔案系統中。 WSL 1 可讓您更快速地存取從 Windows 掛接的檔案。
- 如果您使用 WSL Linux 發行版來存取 Windows 檔案系統上的項目檔,而且這些檔案無法儲存在 Linux 檔系統上,您將使用 WSL 1 在 OS 檔系統上達到更快的效能。
- 專案,需要在相同檔案上使用 Windows 和 Linux 工具進行交叉編譯。
- 在 WSL 1 中,Windows 和 Linux 作業系統的檔案效能比 WSL 2 快,因此如果您正在使用 Windows 應用程式存取 Linux 檔案,WSL 1 能夠提供更快的效能。
- 您的專案需要存取序列埠或 USB 裝置。 不過,現在透過
USBIPD-WIN
專案,WSL 2 已具備 USB 裝置支援。 如需設定步驟,請參閱 連線 USB 裝置。 - WSL 2 不包含存取序列埠的支援。 若要深入瞭解 常見問題,或 WSL GitHub 存放庫問題,請參閱序列支援。
- 您有嚴格的記憶體需求
- 對於使用 VirtualBox 的使用者,請務必使用最新版的 VirtualBox 和 WSL 2。 請參閱 相關的常見問題。
- 如果您依賴 Linux 發行版本在與您的主機相同的網路上擁有 IP 位址,您可能需要設定替代方案,才能執行 WSL 2。 WSL 2 是以 Hyper-V 虛擬機的形式執行。 這不同於 WSL 1 所用的網橋網路適配器,這表示 WSL 2 為其虛擬網路使用網路位址轉換(NAT)服務,而不是將其橋接至主機的網路介面卡(NIC),這樣啟動後會有一個會變動的唯一 IP 位址。 若要深入瞭解將 WSL 2 服務的 TCP 連接埠轉送至主機 OS 的問題和因應措施,請參閱 WSL GitHub 存放庫問題 4150、NIC 網橋模式 (TCP 因應措施)。
注意
請考慮嘗試 VS Code 遠端 WSL 延伸模組,讓您能夠使用 Linux 命令行工具將專案檔儲存在 Linux 文件系統上,但也可在 Windows 上使用 VS Code 在因特網瀏覽器中撰寫、編輯、偵錯或執行您的專案,而不需要與在 Linux 和 Windows 檔系統上工作相關聯的任何效能變慢。 深入瞭解。
Microsoft Store 中的 WSL
WSL 已將 Windows OS 映像中的更新功能移出,轉為可透過 Microsoft 商店取得的套件。 這表示一旦更新可用,您就能更快速地獲得更新和維護,而不是需要等待 Windows 作業系統的更新。
WSL 最初包含在 Windows作系統中,作為需要啟用才能安裝 Linux 發行版的選用元件。 市集中的 WSL 具有相同的用戶體驗,而且是相同的產品,但會接收更新與服務做為市集套件,而不是整個 OS 更新。 從 Windows 19044 版或更高版本開始,執行 wsl.exe --install
命令會從 Microsoft 市集安裝 WSL 服務更新。 (請參閱宣佈此更新的部落格文章。 如果您已經在使用 WSL,您可以進行更新,以確保透過執行 wsl.exe --update
從商店獲取最新的 WSL 功能和更新服務。
注意
如果您在組織內無法存取 Microsoft 市集,您仍然可以透過將 --web-download
附加到 --update
命令,例如 wsl --update --web-download
,來使用此 WSL 版本。 每次有新版本推出時,您需要使用此方法手動更新 WSL。