WSL2 經驗與感受

Windows 10 在升上 2004 版本後就能開啟 WSL2 了,雖然這是我早就知道的老消息,不過我現在才升級上去是因為原本還想要的一些東西還沒找到解決辦法。

升級方法

原則上是參考官方的升級文章就好了,不過還是可能會踩到一些坑。

例如 wsl_update_x64.msi 建議用 powershell 以管理員權限執行比較好,還有 wsl --set-default-version 2 執行後可能不會自動幫你升級版本,所以要用 wsl --set-version <Distro> 2 手動升級。

各種坑

存取 Windows 的檔案很慢

這其實是升級 WSL2 前就該知道的,所以建議把你的專案移動到 WSL2 的檔案系統裡面會比較好,然後再配合 vscode remote 來開發比較舒服。如果是想要有個 bash 以方便操作檔案的話,可以再安裝個 Distro 然後降級到舊 WSL 就可以了。

Hyper-V 啟用後導致其他的 VM 不能執行

VirtualBox 的話升級到 6 版以上就可以了,因為他有支援使用 Windows 的 Hypervisor Platform。

遊戲用的 Android 模擬器建議可用 BlueStacks 的 Hyper-V 體驗版取代之,可以在這邊下載。還有記得啟動時請務必用管理員權限啟動 BlueStacks,不然沒有用。

WireGuard for Windows 啟動時 WSL2 沒有網路

我參考了這篇 reddit 討論找到了方法,就是在你 config 的 AllowedIPs 中加入 ::/128 就好了。

例如 AllowedIPs = 0.0.0.0/0 改成 AllowedIPs = 0.0.0.0/0, ::/128 就能 Wireguard 和 WSL2 同時正常運作。

按照了 Docker 官方的流程安裝後 Daemon 沒啟動

我是參考這篇官方教學安裝 Docker 的,不過安裝後遇到了 Daemon 沒啟動的問題,所以查了一查之後發現多安裝一個 Docker Desktop 就好了,它裡面有與 WSL2 整合的功能。

實際使用心得

使用起來是真的有快很多的感覺,例如 npm install 的感覺就比以前快,因為全部都是在 Linux 的檔案系統中的緣故。不過相反的,存取 Windows 下的檔案真的不快,還是得靠 WSL1 才有比較正常的速度。然後能夠直接使用 Docker 也是件蠻舒服的事,還有能跑一些 WSL1 因某些 bug 跑不了的 binary。