對於在 Windows 系統上工作的開發人員、系統管理員或技術愛好者而言,長久以來總有個需求:如何在不犧牲 Windows 便利性的前提下,取用 Linux 強大的命令列工具與開發環境?過去,我們依賴虛擬機(Virtual Machine)或雙重開機(Dual Boot)等方案,但這些方法往往伴隨著資源消耗大、設定繁瑣或切換不便等問題。
適用於 Linux 的 Windows子系統Linux (Windows Subsystem for Linux, WSL) 正是為瞭解決此痛點而生的革命性功能。它讓使用者,特別是應用程式開發人員,能直接在 Windows 10 及後續版本上,原生執行一個完整的 Linux 發行版環境(如 Ubuntu、Debian 等)及其公用程式,無需傳統虛擬機的沉重負擔。從最初僅支援命令列的 WSL 1,到整合完整 Linux 核心、效能大幅提升的 WSL 2,再到支援圖形化介面(GUI)應用程式的 WSLg,這個子系統Linux版WSL已然演化為一個成熟、穩定且功能強大的開發平臺。
本文將作為一份詳盡的指南,帶您從零開始,深入探索 WSL 的世界。我們將涵蓋 WSL 1 與 WSL 2 的架構差異、多種安裝方式、核心指令的詳細解說、檔案系統的互動整合、資料的備份與還原,乃至圖形化應用的執行,並在文末提供常見問題的解決方案,幫助您徹底駕馭這個強大的工具。
WSL 1 vs. WSL 2:架構的演進與抉擇
在開始安裝前,瞭解 WSL 兩個主要版本之間的差異至關重要。WSL 2 是目前的預設版本,也是絕大多數情境下的最佳選擇。
特性 | WSL 1 | WSL 2 |
---|---|---|
核心架構 | 經由翻譯層(Translation Layer)將 Linux 系統呼叫轉譯為 Windows NT 核心呼叫。 | 在輕量級的 Hyper-V 虛擬機中執行一個完整的、真實的 Linux 核心。 |
Linux 核心 | 無,模擬核心功能。 | 有,由微軟維護並透過 Windows Update 更新。 |
系統呼叫相容性 | 不完整,部分依賴特定核心功能的應用(如 Docker)無法執行。 | 完整,幾乎所有 Linux 應用程式都能順利執行。 |
效能 | 跨作業系統(Windows和Linux檔案互訪)的檔案存取速度較快。 | 在 Linux 檔案系統內部(例如 git clone、npm install)的 I/O 效能遠超 WSL 1。 |
網路 | 共享 Windows 的網路介面與 IP 位址。 | 擁有獨立的虛擬化網路介面與 IP 位址。 |
推薦用途 | 較舊的專案或需要大量混合存取 Windows和Linux 檔案的簡單腳本。 | 所有現代開發工作,特別是需要 Docker、GPU 運算或完整 Linux 相容性的場景。 |
總結來說,WSL 2 憑藉其完整的核心支援與優越的效能,已成為現今的標準。除非有特殊理由,否則應一律選擇或升級至 WSL 2。
安裝與設定 WSL
微軟已將 WSL 的安裝流程大幅簡化。對於現代的 Windows 10 (版本 2004 或更高) 和 Windows 11 系統,通常只需一個指令即可完成所有設定。
先決條件
- 系統版本:適用於 x64系統 的 Windows 10 版本 2004 (組建 19041) 或更高版本,或任何版本的 Windows 11。可透過在「執行」視窗 (Win + R) 輸入 winver 來查看。
- 虛擬化支援:必須在電腦的 BIOS/UEFI 中啟用硬體虛擬化功能。此選項通常稱為 Intel VT-x、Intel Virtualization Technology 或 AMD-V。
一鍵快速安裝
這是最推薦的安裝方式。請以系統管理員身分開啟 PowerShell 或 Windows Terminal,然後輸入以下指令:
wsl --install
此命令會自動執行以下所有步驟:
- 啟用「適用於 Linux 的 Windows 子系統」和「虛擬機器平臺」這兩個必要的 Windows 功能。
- 下載並安裝最新版本的 Linux 核心。
- 將 WSL 2 設定為預設版本。
- 下載並安裝Linux預設發行版——Ubuntu。
安裝完成後,系統會提示您重新啟動電腦。重啟後,新安裝的 Ubuntu 將會自動啟動,並引導您設定 Linux 環境的使用者帳號與密碼。請注意,此處設定的帳密是獨立於您 Windows 帳密的。
自訂與手動安裝
若您想安裝 Ubuntu 以外的發行版,或想進行更精細的控制,可以使用以下指令:
- 查看可用的線上發行版: powershell wsl –list –online 或簡寫為 wsl -l -o。
- 安裝指定的發行版: powershell wsl –install -d <Distribution-Name> 例如,若要安裝 Debian,則執行 wsl –install -d Debian。
核心 WSL 指令詳解
掌握 WSL 的命令列工具是高效使用它的關鍵。以下是您在 PowerShell 或 CMD 中最常用到的指令。
指令 | 參數/選項 | 描述 | 範例 |
---|---|---|---|
wsl –install | -d <Distro>, –no-launch | 安裝 WSL 及指定的發行版。–no-launch 表示安裝後不立即啟動。 | wsl –install -d Ubuntu-22.04 |
wsl –list | -o, -v, –running | 列出發行版。-o 列出可線上安裝的,-v 顯示詳細資訊 (狀態、版本),為 wsl –list –verbose 的簡寫,–running 僅顯示執行中的。 | wsl -l -v |
wsl –set-version | <Distro> <1\|2> | 設定特定發行版要使用的 WSL 版本 (1 或 2)。 | wsl –set-version Ubuntu-20.04 2 |
wsl –set-default-version | <1\|2> | 設定未來新安裝發行版的預設 WSL 版本。 | wsl –set-default-version 2 |
wsl –set-default | <Distro> | 設定預設發行版。當您直接執行 wsl.exe 時,將會進入此發行版。 | wsl -s Debian |
wsl –shutdown | (無) | 立即關閉所有執行中的發行版及 WSL 2 虛擬機器。在修改 .wslconfig 等設定後需要執行此指令。 | wsl –shutdown |
wsl –terminate | <Distro> | 終止指定的發行版。 | wsl -t Ubuntu-20.04 |
wsl –update | –pre-release | 檢查並更新 WSL 核心版本。–pre-release 可取得預覽版本。 | wsl –update |
wsl –status | (無) | 顯示 WSL 的整體狀態,包括預設版本、核心版本等。 | wsl –status |
wsl | <command> | 在預設的 Linux 發行版中執行指令,而不進入其互動式 shell。 | wsl cat /proc/version |
發行版管理與資料備份
WSL 提供了強大的發行版管理功能,包括備份(匯出)與還原(匯入)。
- 匯出 (備份):此功能會將您現有的 Linux 環境(包括所有已安裝的軟體和檔案)打包成一個 .tar 檔案。 powershell wsl –export <Distribution-Name> C:\path\to\backup.tar 例如:wsl –export Ubuntu-20.04 D:\backups\ubuntu_backup.tar
- 匯入 (還原或遷移):您可以使用備份的 .tar 檔建立一個新的發行版,並可指定安裝位置,這也是將 WSL 環境遷移到非系統碟(如 D 槽)的標準做法。 powershell wsl –import <New-Distro-Name> <Install-Location> <Path-to-Tar-File> 例如:wsl –import Ubuntu-Custom D:\wsl\ubuntu C:\backups\ubuntu_backup.tar
- 卸載 (取消註冊):此操作會永久刪除一個發行版及其所有資料,操作前請務必確認已備份重要檔案。 powershell wsl –unregister <Distribution-Name>
Windows 與 Linux 的無縫整合
WSL 的最大魅力在於其與 Windows和Linux 的深度整合。
檔案系統互通
- 從 Linux 存取 Windows 檔案:您的 Windows 磁碟機被自動掛載到 Linux 環境的 /mnt/ 目錄下。例如,C: 槽對應到 /mnt/c,D: 槽對應到 /mnt/d,以此類推。
- 從 Windows 存取 Linux 檔案:這是 WSL 2 的一大亮點。只需在檔案總管的網址列輸入 \\wsl.localhost\ (或舊版的 \\wsl$),即可看到所有已安裝的 Linux 發行版,並像操作一般網路芳鄰一樣瀏覽、複製、編輯其內部的檔案。效能提示:為了獲得最佳 I/O 效能,請將您的專案檔案儲存在 Linux 檔案系統內 (例如 /home/<username>/projects),而非從 Linux 存取 /mnt/c 下的檔案。
執行 GUI 圖形化應用
得益於 WSLg (WSL GUI) 技術,您現在可以直接在 WSL 中安裝並執行 Linux 的圖形化應用程式,無需任何額外設定。
- 確保驅動程式已更新:安裝適用於 WSL 的最新版 Intel、AMD 或 NVIDIA 顯示卡驅動程式。
- 更新 WSL:執行 wsl –update 並重新啟動 WSL (wsl –shutdown)。
- 安裝並執行應用:以 Ubuntu 為例,您可以像在原生 Linux 上一樣安裝應用。
# 更新套件列表
sudo apt update安裝 GIMP (影像編輯軟體)
sudo apt install gimp -y
從終端機啟動 GIMP
安裝完成後,您甚至可以在 Windows 的「開始」功能表中找到 GIMP 的圖示並直接啟動它,視窗外觀與操作體驗與原生 Windows 應用程式無異。
開放原始碼與社羣協作
WSL 是一個活躍的開放原始碼專案。這意味著其發展離不開全球開發人員社羣的貢獻。如果您在使用過程中遇到問題、發現錯誤,或有任何功能建議,都可以在官方的 GitHub 專案頁面上回報。歡迎您在GitHub上與我們共同作業,為 WSL 的未來發展貢獻一份心力。
常見問題 (FAQ)
Q1: 安裝 WSL 時出現錯誤 0x80370102,該如何解決?
A1: 這個錯誤碼通常表示您尚未在電腦的 BIOS/UEFI 中啟用硬體虛擬化。請重新啟動電腦,進入 BIOS 設定畫面(通常是按 F2, Del 或 Esc 鍵),找到 Intel(R) Virtualization Technology (VT-x) 或 AMD-V 等相關選項並將其啟用 (Enable)。
Q2: 如何在 WSL 中使用 NVIDIA GPU 進行 CUDA 運算?
A2: WSL 2 完全支援 GPU 加速運算。首先,請確保您已在 Windows 端安裝了 NVIDIA 官方為 WSL 設計的最新驅動程式。接著,進入您的 Linux 發行版,依照 NVIDIA 官方文件指示,安裝適用於 WSL 的 CUDA Toolkit。完成後,您就可以像在原生 Linux 環境中一樣執行 nvidia-smi 命令檢查 GPU 狀態,並進行機器學習訓練等工作。
Q3: 我該選擇 WSL 1 還是 WSL 2?
A3: 強烈建議選擇 WSL 2。它是目前的預設版本,提供完整的 Linux 核心相容性(可執行 Docker 等應用)、更佳的檔案系統效能和持續的功能更新。只有在極少數情況下,例如您的工作流程極度依賴在不同作業系統間頻繁、大量地存取檔案,且所用工具不要求完整核心功能時,才需考慮 WSL 1。
Q4: 我可以將 WSL 的 Linux 發行版安裝在 D 槽或其他磁碟機嗎?
A4: 透過 Microsoft Store 安裝的發行版預設會存放在 C 槽。若要將其移至其他磁碟機,最佳方式是使用 wsl –export 將現有發行版備份成一個 .tar 檔案,然後用 wsl –import 指令將其還原到您指定的 D 槽或其他路徑下。如需詳細資訊,請參閱本文的「發行版管理與資料備份」章節。
Q5: 為什麼從 Windows 檔案總管存取 Linux 檔案 (\\wsl.localhost\) 感覺有點慢?
A5: 這是因為 WSL 2 的架構設計。您的 Linux 檔案存放在一個 ext4 格式的虛擬硬碟 (VHDX) 中,Windows 透過 9P 協定網路伺服器來存取它們,這中間存在一層轉換的開銷。為了達到最佳效能,建議的工作模式是:將程式碼和專案檔存放在 Linux 內部 (/home/user/project),然後使用支援 WSL 遠端開發的編輯器(如 VS Code 搭配其 WSL 擴充功能)來進行開發,這樣大部分的檔案操作都在高效的 Linux 環境內完成。
總結
適用於Linux的Windows子系統 (WSL) 已經從一個實驗性功能,成長為 Windows 開發生態中不可或缺的核心組件。它成功地將 Windows 的桌面體驗與 Linux 強大的生態系統結合在一起,為開發人員提供了一個兼具效能、彈性與便利性的終極工作環境。無論您是網頁開發者、資料科學家、DevOps 工程師,或是單純想學習 Linux 的使用者,WSL 都能顯著提升您的工作效率。希望本篇詳盡的指南能幫助您順利啟程,充分發揮 WSL 的潛力。