適用於 Linux 的 Windows 子系統（，簡稱 WSL）是一個為在 Windows 10 和 Windows Server 2019 以上能夠原生執行 Linux 二進位制可執行檔案（ELF 格式）的相容層。 概覽 WSL1 提供了一個由微軟開發的 Linux 相容的核心介面（不包含 Linux 核心程式碼），然後可以在其上執行 GNU 使用者空間，例如 Ubuntu，openSUSE，Get openSUSE Leap 42 Microsoft StoreSUSE Linux Enterprise Server，Get SUSE Linux Enterprise Server 12 Microsoft StoreDebian 和 Kali Linux。這樣的使用者空間可能包含 Bash shell 和命令語言，使用本機 GNULinux 命令列工具（sed，awk 等），程式語言直譯器（Ruby，Python 等），甚至是圖形應用程式（使用主機端的 X 視窗系統）。 WSL2 基於 HyperV 技術，執行多個帶有 GNULinux 映象的虛擬機器，同樣可以實現 WSL1 的大多數功能，但擁有完整的 Linux 核心與對 Systemd 的支援。 簡介和可用性 在週年更新中引入時，只有 Ubuntu 映象可用。秋季創意者更新將 Linux 發行版的安裝過程移至 Microsoft 商店，並引入了 Fedora 和 SUSE 映象。 WSL 在版本 1607 之後的 64 位版本的 Windows 10 與 Windows 11 中可用。它也可在 Windows Server 2019 中使用。 發展 微軟首次嘗試在 Windows 上實現類似 Unix 的相容性，首先是微軟 POSIX 子系統，由 Windows Services for UNIX 透過 MKSInterix 取代，後者最終因 Windows 81 的釋出而被棄用。Windows Subsystem for Linux 背後的技術起源於未釋出的 Astoria 專案，它使一些 Android 應用程式能夠在 Windows 10 移動版上執行。它首先在 Windows 10 Insider Preview build 14316 中提供。 雖然微軟以前的專案和第三方 Cygwin 專注於基於 POSIX 標準建立自己獨特的類 Unix 環境，但 WSL 的目標是原生 Linux 相容性。WSL 不是將非原生功能包裝到 Win32 系統呼叫中，而是利用 NT 核心執行程式將 Linux 程式作為特殊的、隔離的最小程序（稱為 picoprocesses）作為專用系統連線到核心模式 picoproviders。呼叫和異常處理程式不同於 vanilla NT 程序。 微軟將 WSL 視為 主要面向開發人員的工具 尤其是 Web 開發人員以及在開源專案上工作或使用開源專案的人員。WSL 使用的資源少於完全虛擬化的機器，這是在 Windows 環境中執行 Linux 軟體的最直接方式，同時還允許使用者在同一組檔案上使用 Windows 應用程式和 Linux 工具。 2020 年 9 月，WSL 2 開始向 Windows 10 Version 19031909 和 Windows 10 May 2020（20H1Version 2004）的使用者推送。WSL 2 支援 GUI 應用。 設計 WSL 1 LXSS Manager Service 是負責與子系統互動的服務（透過驅動程式和），以及 Bashexe（不要與 Linux 發行版提供的 Shell 混淆）的方式啟動 Linux 程序，以及在執行期間處理 Linux 系統呼叫和二進位制鎖。 特定使用者呼叫的所有 Linux 程序都進入 Linux 例項（通常，第一個呼叫的程序是 init）。關閉所有應用程式後，將關閉例項。 WSL 1 的設計沒有硬體模擬 虛擬化（與 coLinux 等其他專案不同），WSL 直接使用主機檔案系統（透過和）和硬體的某些部分，例如網路（Web 伺服器，用於例如，可以透過主機上配置的相同介面和 IP 地址進行訪問，並且對使用需要管理許可權的埠或已經被其他應用程式佔用的埠共享相同的限制），這保證了互操作性。 即使從 shell 執行 sudo，某些位置（例如系統資料夾）和配置的訪問 修改也受到限制。必須啟動具有提升許可權的例項才能獲得 真正的 sudo 並允許此類訪問。 WSL 1 無法執行所有 Linux 軟體（如 32 位二進位制檔案）或需要在 WSL 中未實現的特定 Linux 核心服務的軟體。由於 WSL 中沒有 真正的 Linux 核心，因此無法執行核心模組（如裝置驅動程式），但是，WSL 2 使用即時虛擬化的 Linux 核心例項。可以透過在 Windows（主機）環境（例如 VcXsrv 或 Xming）中安裝 X 視窗系統來執行一些圖形（GUI）應用程式（例如 Mozilla Firefox），但是這種模式還存在一定的問題，例如缺乏音訊支援或硬體加速（導致圖形效能不佳）。儘管已經在計劃中，但是目前還沒有實現對 OpenCL 和 CUDA 的支援。 也就是說，微軟明確指出 WSL 面向應用程式的開發者，而不是面向桌面環境或生產伺服器。微軟建議使用虛擬機器（HyperV 或 Kubernetes）和 Azure 來實現這些目的。 在效能測試中，WSL 1 通常接近原生 Linux（如 Ubuntu、Debian、Intel Clear Linux 或其他 Linux 發行版）。在某些測試中 IO 是 WSL 的瓶頸。 WSL 2 WSL 2 引入了體系結構中的更改。微軟選擇了透過高度最佳化的 HyperV 功能子集進行虛擬化，以便執行內核和發行版（基於核心），承諾效能相當於 WSL 1，為了 向下相容，開發人員不需要更改其已釋出發行版中的任何內容。 WSL 2 設定可以透過 WSL 全域 設定配置進行調整，該配置位在使用者設定檔資料夾中名為wslconfig 的 INI 檔案。 發行版本安裝在 ext4 格式的虛擬磁碟中，主機檔案系統可以透過 9P 協定協議透明地訪問， 類似於 QEMU 等其他虛擬機器技術。 對於使用者，微軟承諾讀寫效能是 WSL 1 的 20 倍。 Windows 提供一個 IFS 網路重新導向程式，使用 UNC 路徑首碼 wsl 來訪問 Linux 客戶檔。 WSL 2 需要 Windows 11 或 Windows 10 版本 2004 和更新版本 組建 19041 和更新版本 微軟聲稱重新設計的 WSL 2 後端在某些操作上的速度比 WSL 1 提高了 20 倍，2020 年 6 月，使用 AMD Threadripper 3970x 進行了 173 次測試的基準測試顯示，WSL 2 （20H2） 效能良好，效能僅為本機 Ubuntu 20040 LTS 的 87。這是對 WSL 1 的改進，在此比較中，WSL 1 的效能僅為本機 Ubuntu 的 70。，WSL 2 改善了 IO 效能，提供了接近原生的水準。 在 2020 年 5 月，用 Intel i9 10900K 進行的 69 項測試比較顯示了幾乎相同的相對效能。 在 2020 年 12 月，用 AMD Ryzen 5900X 進行的 43 項測試的基準顯示了 WSL 2（20H2）的良好效能，其效能為原生 20041 LTS 的 93。這比 WSL 1 有進步，後者在這種比較中只有 73。 截圖 FileWSL gui Firefoxpng 運行於 WSL 中的 Firefox FileWSL gui Synapticpng 運行於 WSL 中的 Synaptic 參見 Azure Sphere andLinux Cooperative Linux Cygwin FreeBSD 的 Linux 相容層 萬聖節檔案 SmartOS Interix Wine Xenix 參考資料 外部連結 微軟文件上的 WSL 頁面 Windows Command Line Tools For Developers blog Category 相容層 CategoryUbuntu CategoryWindows 10 CategoryWindows 元件