玩轉WSL 2(一)——WSL的介紹和安裝

2020-08-09 23:44:15

什麼是WSL?

適用於 Linux 的 Windows 子系統(英語:Windows Subsystem for Linux,簡稱WSL)是一個爲在Windows 10和Windows Server 2019上能夠原生執行Linux二進制可執行檔案(ELF格式)的相容層,可讓開發人員按原樣執行 GNU/Linux 環境 - 包括大多數命令列工具、實用工具和應用程式 - 且不會產生傳統虛擬機器或雙啓動設定開銷。

WSL可以做什麼?

  • 在 Microsoft Store 中選擇你偏好的 GNU/Linux 分發版。
  • 執行常用的命令列軟體工具(例如 grep、sed、awk)或其他 ELF-64 二進制檔案。
  • 執行 Bash shell 指令碼和 GNU/Linux 命令列應用程式,包括:
    • 工具:vim、emacs、tmux
    • 語言:NodeJS、Javascript、Python、Ruby、C/ C++、C# 與 F#、Rust、Go 等。
    • 服務:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL。
  • 使用自己的 GNU/Linux 分發包管理器安裝其他軟體。
  • 使用類似於 Unix 的命令列 shell 呼叫 Windows 應用程式。
  • 在 Windows 上呼叫 GNU/Linux 應用程式。

什麼是 WSL 2?

WSL 2 是適用於 Linux 的 Windows 子系統體系結構的一個新版本,它支援適用於 Linux 的 Windows 子系統在 Windows 上執行 ELF64 Linux 二進制檔案。 它的主要目標是提高檔案系統效能,以及新增完全的系統呼叫相容性。

這一新的體系結構改變了這些 Linux 二進制檔案與Windows 和計算機硬體進行互動的方式,但仍然提供與 WSL 1(當前廣泛可用的版本)中相同的使用者體驗。

單個 Linux 分發版可以在 WSL 1 或 WSL 2 體系結構中執行。 每個分發版可隨時升級或降級,並且你可以並行執行 WSL 1 和 WSL 2 分發版。 WSL 2 使用全新的體系結構,該體系結構受益於執行真正的 Linux 內核。

只有 Windows 10 版本 2004 的內部版本 19041 或更高版本中才提供 WSL 2

WSL 面向哪些使用者?

WSL 是主要面向開發人員的工具 – 尤其是 Web 開發人員,以及處理和使用開源專案的開發人員。 想要/需要使用 Bash、常用 Linux 工具(sed、awk 等)和許多 Linux 優先工具(Ruby、Python 等)的使用者可以通過 WSL 在 Windows 上使用其工具鏈。

WSL 支援哪些處理器?

WSL 支援 x64 和 ARM CPU。

在 WSL 中是否可以執行所有 Linux 應用?

不是! WSL 工具的目的是使使用者能夠視需要在 Windows 上執行 Bash 和核心 Linux 命令列工具。
WSL 並不旨在支援 GUI 桌面或應用程式(例如 Gnome、KDE 等)。
此外,儘管你可以執行許多流行的伺服器應用程式(例如 Redis),但我們不建議使用 WSL 來託管生產服務 – Microsoft 提供多種解決方案用於在 Azure、Hyper-V 和 Docker 中執行生產 Linux 工作負荷。

比較 WSL 1 和 WSL 2

功能 WSL 1 WSL 2
Windows 和 Linux 之間的整合
啓動時間短
佔用的資源量少
可以與當前版本的 VMWare 和 VirtualBox 一起執行
託管 VM
完整的 Linux 內核
完全的系統呼叫相容性
跨 OS 檔案系統的效能

例外情況(使用 WSL 1 而不是 WSL 2)

  • 你的專案檔案必須儲存在 Windows 檔案系統中。
    如果你將使用 WSL Linux 分發版來存取 Windows 檔案系統上的專案檔案,並且這些檔案無法儲存在 Linux 檔案系統上,那麼,通過使用 WSL 1,你將跨 OS 檔案系統實現更快的效能。
  • 一個專案要求對相同的檔案使用 Windows 和 Linux 工具進行交叉編譯。
    在 WSL 1 中,跨 Windows 和 Linux 操作系統的檔案效能比 WSL 2 中更快,因此如果要使用 Windows 應用程式來存取 Linux 檔案,則目前通過 WSL 1 可實現更快的效能。

WSL 2 體系結構

傳統的 VM 體驗可能啓動速度慢,是獨立的,消耗大量資源,需要你花費時間進行管理。 WSL 2 沒有這些屬性。
WSL 2 有 WSL 1 的優點,包括 Windows 和 Linux 之間的無縫整合,啓動時間短,資源佔用量少,並且無需 VM 設定或管理。 雖然 WSL 2 確實使用 VM,但 VM 是在幕後管理和執行的,因此你將具有與 WSL 1 相同的使用者體驗。

完整的 Linux 內核

WSL 2 中的 Linux 內核是 Microsoft 根據最新的穩定版分支(基於 kernel.org 上提供的原始碼)構建的。此內核已專門針對 WSL 2 進行了調整,針對大小和效能進行了優化,以便在 Windows 上提供良好的 Linux 體驗。 內核將由 Windows 更新提供服務,這意味着你將獲得最新的安全修補程式和內核改進功能,而無需自行管理它。
WSL 2 Linux 內核是開源的

提升了檔案 IO 效能

如果使用 WSL 2,檔案密集型操作(如 git 克隆、npm 安裝、apt 更新、apt 升級等)的速度都明顯更快。
實際的速度提升將取決於你執行的應用以及它與檔案系統的互動方式。 在對壓縮的 tarball 進行解包時,WSL 2 的初始版本的執行速度比 WSL 1 快達 20 倍,在各種專案上使用 git 克隆、npm 安裝和 cmake 時,大約快 2-5 倍。

WSL 2 在啓動時使用的記憶體量更少

WSL 2 在實際 Linux 內核上使用輕量級實用工具 VM,記憶體佔用量很小。 該實用工具將在啓動時分配虛擬地址支援的記憶體。 它已經過設定,在啓動時使用的記憶體佔比小於 WSL 1 所需的記憶體佔比。

安裝WSL

  1. 進入Windows store 選擇需要的版本進行下載
    在这里插入图片描述
    在这里插入图片描述

  2. 進入Windows 應用設定,啓動WSL功能
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 重新啓動電腦後,進入Windows 10啓動選單,找到Ubuntu雙擊開啓。第一次執行時會等待一會兒設定環境,第一次執行Ubuntu會提示設定使用者和密碼。如果想使用root許可權,可以輸入sudo passwd root,輸入之前設定的使用者的密碼,再爲root設定密碼。
    在这里插入图片描述