比較 WSL 版本

深入瞭解不同的 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 發行版本時目前的預設版本,並使用最新的虛擬化技術,在輕量型公用程式虛擬機器內執行 Linux 核心, (VM) 。 如果您的散發套件目前正在執行 WSL 1,而您想要更新至 WSL 2,請參閱 從 WSL 1 更新至 WSL 2

比較功能

功能 WSL 1 WSL 2
Windows 和 Linux 之間的整合
快速開機時間
相較于傳統虛擬機器,小型資源頁尾列印
以最新版的 VMware 和 VirtualBox 執行
受控 VM
完整的 Linux 核心
完整的系統呼叫相容性
OS 檔案系統之間的效能

如上述比較表所示,WSL 2 架構以數種方式超越 WSL 1,但 OS 檔案系統的效能除外,這可以透過將專案檔儲存在與執行以處理專案之工具相同的作業系統上來處理。

WSL 2 僅適用于 Windows 11 或 Windows 10 版本 1903、組建 18362 或更新版本。 若要檢查您的 Windows 版本,請選取 [Windows 標誌鍵 + R]並輸入 winver,然後選取 [確定]。 (或在 Windows 命令提示字元中輸入 ver 命令)。 您可能需要 更新至最新的 Windows 版本。 若組建低於 18362,則完全不支援 WSL。

注意

WSL 2 將使用 VMware 15.5.5+VirtualBox 6+。 如需詳細資訊,請參閱我們的 常見問題。

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 核心是開放原始碼。 如果您想要深入了解,請參閱部落格文章:以 Windows 搭載 Linux 核心,此文章是由其開發小組所撰寫。

如需詳細資訊,請參閱Windows 子系統 Linux 版核心的版本資訊

增加檔案 IO 效能

處理大量檔案的作業 (例如 git 複製、npm 安裝、apt 更新、apt 升級等等) 都可使用 WSL 2 來明顯地加快速度。

實際增加的速度將取決於您正在執行的應用程式,以及其與檔案系統的互動方式。 相較於 WSL 1,WSL 2 的初始版本在解壓縮 zip 壓縮的 tarball 時,執行速度最多可快 20 倍,而在各種專案上使用 git 複製、npm 安裝和 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 裝置。 然而 USB 裝置支援現在可透過 USBIPD-WIN 專案取得 WSL 2。 如需設定步驟,請參閱 連線 USB 裝置
  • WSL 2 不包含存取序列埠的支援。 在序列支援上深入瞭解 常見問題WSL GitHub 存放庫問題
  • 您有嚴格的記憶體需求
    • WSL 2 的記憶體使用量隨著您使用而成長和縮小。 當進程釋放記憶體時,會自動傳回 Windows。 不過,從現在開始,WSL 2 尚未將記憶體中的快取頁面釋放回 Windows,直到 WSL 實例關閉為止。 如果您有長時間執行的 WSL 會話,或存取非常大量的檔案,此快取可能會佔用 Windows 上的記憶體。 我們正在追蹤在 WSL Github 存放庫問題 4166上改善此體驗的工作。
  • 針對使用 VirtualBox 的使用者,您可能需要考慮您執行的版本,以及它是否與 WSL 2 相容。 (如需完整討論,請參閱 WSL Github 存放庫問題 798 。VirtualBox v6.1.16 適用于 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存放區中的 WSL

WSL 已將 Windows OS 映射的更新功能提升至可透過 Microsoft 市集取得的套件。 這表示一旦有更新和服務可用,就不需要等待 Windows 作業系統的更新。

WSL 原本包含在 Windows 作業系統中,做為需要啟用才能安裝 Linux 發行版本的選擇性元件。 市集中的 WSL 有相同的使用者體驗,而且是相同的產品,但會以市集套件的形式接收更新和服務,而不是整個 OS 更新。 從 Windows 19044 版或更高版本開始,執行 wsl.exe --install 命令會從 Microsoft 市集安裝 WSL 服務更新。 (請參閱宣佈此更新) 的部落格文章 。 如果您已經使用 WSL,您可以更新以確保您收到來自存放區的最新 WSL 功能和服務,方法是執行 wsl.exe --update