目錄

WSL 2 on Windows Part 1 - 安裝啟用

工作的時候習慣用 Linux 或 mac 的 terminal,
找了個時間在家裡的 PC 上把 WSL 的環境也設定一下方便切換工作環境。  

WSL 2 和 WSL 1 的差異

WSL 2 是基於 Hyper-V 在 virtual machine 中跑完整的 Linux kernal
WSL 1 則是在 Windows 系統上對 Linux 功能的模擬,
因此 WSL 2 比 WSL 1 支援更多 Linux 原生的功能和 system call

如果需要用到 Linux 底層的應用,
WSL 2 支援的能力比 WSL 1 更好。
一般情況下 WSL 2 啟動 process 的效能也更好,
但需要讀取 host 系統的檔案時除外。

但因為 WSL 2 是在 VM 上跑 Linux kernal,
因此和做為 host 的 Windows 的整合相對較 WSL 1 差。
在 WSL 2 裡的 process 無法在 Windwos 的工作管理員控管,
Windows 和 WSL 2 的網路連線方式也多了一層。

因為 WSL 2 用了 Hyper-V 的關係,
所以有聽過跟 VMWare 不相容的災情。
我沒有用 VMWare 所以不知道是不是真的有這個 issue,
但用 Docker 的時候沒有產生問題。

Microsoft Doc 有列舉出 WSL 1 和 WSL 2 詳細的比較。

Requirement

  1. Windwos 版本要是 Windows 10,低於這些版本的話請善用 Windows 更新:

    • 若為 X64 系統:版本 1903 或更高版本,含 組建 18362 或更高組建。
    • 若為 ARM64 系統:版本 2004 或更高版本,含 組建 19041 或更高組建。
  2. 機器要開啟虛擬化功能
    通常在主機板的 BIOS 設定裡可以找到,
    找找跟 CPU 設定相關的地方應該會有一些 Intel Virtualization 有關的設定,
    把它開起來。

安裝啟用 WSL 2

用 admin 權限開啟 PowerShell,

  1. 啟用Windows 子系統 Linux 版: 執行
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  1. 啟用虛擬機器平台選用功能: 執行
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 重新啟動電腦
  2. 下載安裝 WSL 2 Linux 核心更新套件
  3. 將 WSL 2 設定為預設版本
wsl --set-default-version 2
  1. 去 Microsoft Store 找想安裝的 Linux distribution,
    並安裝設定帳號密碼
  2. 可以在 PowerShell 中檢查安裝的 Linux distribution 的 WSL 版本:
wsl -l -v

也可以更改 Linux distribution 的 WSL 版本:

wsl --set-version <distribution name> <versionNumber>

Reference

Microsoft WSL 2 安裝指南
Microsoft DOC: 比較 WSL 1 和 WSL 2