Windows on Arm 上的 WSL:運作良好的功能與 x86 Linux 的陷阱
更新於 2026年6月6日
WSL2 在 Windows on Arm 上運作流暢——在 Snapdragon X 筆電上執行 wsl --install 就能直接使用,進行原生 Linux 開發時,感受與 Intel 或 AMD 機器無異。但有一個架構上的陷阱會影響開發者,在將工作流程遷移到 Arm 筆電之前,值得先了解。
架構:WSL2 提供的是 Arm64 Linux
WSL2 是一個真正的 Linux 核心,運行在輕量級(基於 Hyper-V)的虛擬機中。虛擬化僅限相同架構,因此在 Windows on Arm 上,你會得到 Arm64 (aarch64) Linux 核心與 Arm64 發行版——wsl --install 會自動下載 Arm64 Ubuntu。這與 Hyper-V 和 Mac 虛擬機 遵循相同的同架構原則。
在 Arm 上請使用 WSL2,而非 WSL1——WSL1 的系統呼叫轉譯層已是舊版;WSL2 提供的是真實核心與容器。
陷阱:x86/x64 Linux 二進位檔無法執行
這是讓人意外的主要限制,也是與一般 x86 PC 的關鍵差異:
Arm64 WSL 發行版只能執行 Arm64 Linux 二進位檔。它不會透明地執行 x86/x64 Linux 二進位檔——沒有內建的跨架構模擬器。嘗試執行 x86_64 Linux ELF 二進位檔會出現 cannot execute binary file: Exec format error 錯誤。常見的替代方案(qemu-user-static、box64)目前在 Arm WSL 內被回報為不可靠或不穩定,因此請將「在 Arm WSL 上執行 x86 Linux 二進位檔」視為未可靠支援。
別把這跟 Prism 搞混。 Prism 模擬的是 x86 Windows 應用程式,在 Arm 上一向可行。WSL 則是 Linux 端——在那裡,你使用的是原生 Arm64,完全沒有 x86 的備援方案。知道「Windows 應用程式可以模擬執行」的讀者,會錯誤地假設 Linux 二進位檔也可以。實際上不行。
哪些功能順暢執行(原生)
對於原生 Arm64 Linux 開發,WSL on Arm 表現出色。已驗證可用的項目:Node.js、Python、.NET 8、PHP、容器中的 MySQL/Postgres、VS Code(搭配 WSL 擴充功能)、Ollama。提供完善 Arm64 映像的發行版包括:Ubuntu、Debian、Fedora、Kali、openSUSE、AlmaLinux。
需注意:Microsoft Store 中的少數發行版項目缺少真正的 Arm64 映像,因此可能需要反覆嘗試才能找到可在 Arm 上正常運作的版本。
Docker 與多架構建置
Docker Desktop 擁有完整的 Arm64 支援,但在 Snapdragon 上有些許邊緣問題被回報。痛點與前述的 x86 陷阱相同,只是發生在容器層面:拉取並執行 linux/amd64 映像需要 QEMU 模擬,速度會很慢。如果你的團隊 CI 或映像假設是 amd64,預計會遇到阻力——請建置多架構映像,並優先使用 arm64 基底映像。這直接關聯到 Arm 上的 CI/CD。
GUI 應用程式(WSLg)
WSLg(在 Windows 上執行 Linux GUI 應用程式)在 Arm 上可用,但沒有 GPU 硬體加速——它是軟體渲染,且應用程式本身需要 Arm64 版本。對工具來說足夠;但不適合 GPU 密集型 Linux 應用程式。
總結
對於原生 Arm64 Linux 工作——大多數現代網頁/後端/DevOps 開發——在 Snapdragon 筆電上使用 WSL 是一流體驗。切換前只需確認一件事:你使用的工具中,是否有僅提供 x86/x64 Linux 二進位檔而無 arm64 版本? 如果有,那些工具將無法執行,就像你在移植前審查 Windows 應用程式的相依性一樣。至於所有具備 arm64 建置的工具,你都可以放心使用。