Intro
Windows Subsystem for Linux 為相容層系統,共用 host 檔案管理及網路,目前已相當成熟,適合取代 Cygwin。
WSL 架構
Reference: Ravindu Senal Fernando - Medium
程式軟體搭配
-
Ubuntu terminal environment - Microsoft Store
可以自行選擇 WSL 發行版,這裡使用 Ubuntu 為例 (此為 WSL 預設安裝版本) -
Windows Terminal - Microsoft Store
拿來當 WSL 的 Terminal Shell,效能/功能/美觀兼具,整合性佳預設已經可以直接選擇啟用 WSL
Powershell:
# App Store - Ubuntu WSL
$storeAppUri = "ms-windows-store://pdp/?ProductId=9PDXGNCFSCZV"
Start-Process -FilePath $storeAppUri
pause
# App Store - Windows Terminal
$storeAppUri = "ms-windows-store://pdp/?ProductId=9N0DX20HK701"
Start-Process -FilePath $storeAppUri
啟用 WSL
控制台 > 程式集 > 程式與功能 > 開啟或關閉 Windows 功能
確認勾選項目:
- 適用於 Linux 的 Windows 子系統 (Windows Subsystem Linux)
- 虛擬機器平台 (Virtual Machine Platform)
* BIOS 須 enable CPUVirtualization Technology
WSL 版本升級
可以在 PowerShell 中透過 WSL 指令安裝,預設就是安裝 Version 2:
> wsl --install
# OR
> wsl --install -d ubuntu
WSL version 2 採用輕量虛擬化架構運行,版本比較可以參考: Comparing WSL Versions - Microsoft
Problem installing WSL: Error code: Wsl/WSL_E_DEFAULT_DISTRO_NOT_FOUND - Github
WSL 指令
查詢目前版本
> wsl -l -v
設定WSL版本
> wsl --set-default-version 1
> wsl --set-default-version 2
若找不到
wsl
指令可以嘗試使用wsl.exe
常用設定
WSL
-
SSH Session 維持
建議設定在 SSH Config 層級:# Keeping SSH Session Alive Host * ServerAliveInterval 240 ServerAliveCountMax 2
-
IPTALES
WSL 預設為 nftables,可以改回 Legacy iptables:sudo update-alternatives --set iptables /usr/sbin/iptables-legacy sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
WSL2 Kernel do not support
nftables
and causing docker failed to start up in Ubuntu 20.10+ #6655
Windows Terminal
- Bell notification - 錯誤提示音
Settings > Profiles - Ubuntu (左側選單) > Bell notification style