不用雙系統,Windows 裡直接開 Ubuntu

WSL2 新手教學:安裝 Ubuntu、基本指令、檔案互通、VS Code 整合、Docker 開發、與虛擬機的差異,在 Windows 上擁有完整 Linux 開發環境。

你可能遇過這種情況:想跑一個 Node.js 專案,README 寫的指令全是 Linux 的;想用某個 CLI 工具,只有 Linux 和 macOS 版本;想學 Docker,教學都假設你在 Linux 上。

以前的解法是開虛擬機或裝雙系統。現在不用了——WSL(Windows Subsystem for Linux) 讓你在 Windows 裡面直接跑一個完整的 Ubuntu,不用重開機、不用開 VM、不用犧牲效能。

打開終端機,輸入 wsl,幾秒鐘後你就在 Ubuntu 裡面了。就是這麼簡單。

🎯 這篇適合誰

你的情況 建議閱讀段落
完全不知道 WSL 是什麼 從「WSL 是什麼」開始
想安裝 WSL2 + Ubuntu 跳到「安裝 WSL2」
已經裝好,想知道怎麼用 看「基本操作」
想搞懂 WSL 和虛擬機差在哪 看「WSL vs VM」
想用 WSL 做開發 跳到「開發環境建置」

WSL2 架構概覽


💡 WSL 是什麼?為什麼需要它?

WSL 全名是 Windows Subsystem for Linux,微軟官方做的功能,讓你在 Windows 上原生執行 Linux。

不是模擬器——WSL2 跑的是真正的 Linux 核心,由微軟維護的輕量 VM 承載。你在裡面執行的 aptgccpythonnode 全部都是真的 Linux 二進位檔,不是什麼 Windows 移植版。

為什麼開發者需要 WSL?

很多開發工具和流程天生就是為 Linux 設計的:

  • 套件管理apt install 一行搞定,不用到處找 Windows installer
  • 指令列工具grepsedawkcurlssh 全部原生可用
  • 開發框架:Node.js、Python、Ruby、Go 在 Linux 上的相容性最好
  • Docker:Docker Desktop 的 WSL2 後端比 Hyper-V 後端效能更好
  • 伺服器部署:你的程式最終跑在 Linux Server 上,開發環境也用 Linux 最一致
  • Shell Script.sh 腳本直接跑,不用改寫成 PowerShell

WSL1 vs WSL2

WSL 有兩個版本,現在都用 WSL2:

項目 WSL1 WSL2
架構 系統呼叫翻譯層 輕量 VM + 真正 Linux 核心
Linux 相容性 部分(有些 syscall 不支援) 完整
檔案系統效能 Windows 路徑快、Linux 路徑慢 Linux 路徑快、Windows 路徑慢
記憶體用量 較少 較多(但自動回收)
Docker ❌ 不支援 ✅ 完整支援
網路 與主機共享 IP 獨立虛擬網路(有獨立 IP)

結論:用 WSL2 就對了。 WSL1 只在極少數場景有優勢(跨檔案系統效能),日常開發 WSL2 全面勝出。


📥 安裝 WSL2

系統需求

  • Windows 10 版本 2004 以上(Build 19041+)
  • Windows 11 全部版本
  • Home 版也能用——不像 Hyper-V,WSL2 不限 Windows 版本

一行指令安裝

以系統管理員身分開啟 PowerShell 或 CMD:

wsl --install

這一行會自動幫你:

  1. 啟用 WSL 功能
  2. 啟用虛擬機平台
  3. 下載並安裝 Linux 核心
  4. 設定 WSL2 為預設版本
  5. 安裝 Ubuntu(最新 LTS 版本)

安裝完成後重新開機

初始設定

重開機後,Ubuntu 會自動啟動並要求你設定:

  1. 使用者名稱:這是 Linux 裡面的帳號,跟 Windows 帳號無關。建議用小寫英文,像 daniel
  2. 密碼:Linux 用的密碼,執行 sudo 時需要輸入

注意:輸入密碼時畫面不會顯示任何字元(連 *** 都沒有),這是 Linux 的正常行為,不是當機了。

安裝其他 Linux 發行版(選用)

預設裝的是 Ubuntu,如果你想用其他發行版:

# 查看可安裝的發行版
wsl --list --online

# 安裝指定發行版
wsl --install -d Debian
wsl --install -d kali-linux

你可以同時安裝多個發行版,各自獨立。


🔧 基本操作

啟動和切換

# 開啟預設的 Linux(通常是 Ubuntu)
wsl

# 開啟指定發行版
wsl -d Ubuntu

# 查看已安裝的發行版和狀態
wsl --list --verbose

# 關閉所有 WSL
wsl --shutdown

終端機選擇

Windows 內建的 Windows Terminal 是最好的 WSL 終端機:

  • 多分頁:可以同時開 PowerShell、CMD、Ubuntu
  • 自動偵測已安裝的 WSL 發行版
  • 支援自訂主題和字型
  • 快捷鍵:Ctrl+Shift+數字 開新分頁

如果沒有 Windows Terminal,在 Microsoft Store 搜尋安裝就好。

Linux 基本指令速查

剛進入 Ubuntu,這些指令最常用:

指令 功能 範例
pwd 顯示目前路徑 pwd/home/daniel
ls 列出檔案 ls -la 顯示詳細資訊
cd 切換目錄 cd /home
mkdir 建立資料夾 mkdir projects
cp 複製 cp file.txt backup.txt
mv 移動 / 改名 mv old.txt new.txt
rm 刪除 rm file.txt(小心,沒有回收桶)
cat 顯示檔案內容 cat config.json
sudo 以管理員權限執行 sudo apt update

套件管理(apt)

Ubuntu 用 apt 管理套件,這是你最常打的指令之一:

# 更新套件清單(建議每次裝東西之前先跑)
sudo apt update

# 升級已安裝的套件
sudo apt upgrade -y

# 安裝套件
sudo apt install git curl wget vim -y

# 移除套件
sudo apt remove 套件名稱

# 搜尋套件
apt search 關鍵字

📂 檔案系統互通

WSL 和 Windows 的檔案系統可以互相存取,但有些眉角要注意。

從 WSL 存取 Windows 檔案

Windows 的磁碟掛載在 /mnt/ 底下:

# C 槽
ls /mnt/c/

# D 槽
ls /mnt/d/

# 存取桌面
ls /mnt/c/Users/你的名字/Desktop/

從 Windows 存取 WSL 檔案

在 Windows 檔案總管的路徑列輸入:

\\wsl$\Ubuntu

或者在 WSL 裡面執行:

# 用 Windows 檔案總管開啟當前目錄
explorer.exe .

效能注意事項(很重要)

專案檔案放在 WSL 檔案系統裡面,不要放在 /mnt/c/。

這是 WSL2 最常見的效能陷阱。WSL2 的 Linux 檔案系統(/home/你的名字/)是原生 ext4,速度很快。但如果你把專案放在 /mnt/c/(Windows 的 NTFS),每次檔案操作都要跨過 9P 協議轉譯,速度可能慢 5-10 倍

# ✅ 正確:專案放在 Linux 家目錄
cd ~
mkdir projects
cd projects
git clone https://github.com/your/repo.git

# ❌ 錯誤:專案放在 Windows 磁碟
cd /mnt/c/Users/你的名字/Documents/
git clone ...  # 這裡的 git 操作會很慢

經驗法則:需要用 Linux 工具處理的檔案放 Linux 檔案系統(~/);需要用 Windows 軟體開的檔案放 Windows(/mnt/c/)。兩邊各放各的,透過 VS Code 或 explorer.exe 橋接。


🆚 WSL vs 虛擬機:到底差在哪?

你可能想問:「WSL 不就是個虛擬機嗎?」技術上 WSL2 確實用了輕量 VM,但使用體驗完全不同。

項目 WSL2 傳統 VM(VMware / Hyper-V)
啟動速度 1-2 秒 30-60 秒
記憶體用量 動態(幾百 MB 起) 固定分配(2-4 GB 起)
檔案互通 雙向原生存取 需設定共享資料夾
圖形介面 支援 WSLg(Linux GUI 應用程式) 完整桌面
網路 與主機互通 需設定虛擬交換器
獨立性 共享主機核心 完全獨立的 OS
快照還原
多 OS 僅 Linux 任何 OS
適合 開發、CLI 工具 測試、隔離環境、非 Linux OS

簡單判斷

  • 你需要的是 Linux 指令和開發工具 → WSL
  • 你需要的是 完整獨立的作業系統(可能不是 Linux)→ 虛擬機
  • 你需要 快照還原、隔離測試 → 虛擬機
  • 你需要 跑 Docker 容器 → WSL(Docker Desktop 的 WSL2 後端效能更好)

兩者不是互斥的——很多人同時用 WSL 做日常開發,再開 VM 做需要隔離的測試。


💻 開發環境建置

WSL 裝好後,來把常見的開發工具設定好。

Git

Ubuntu 預設有裝 Git,但建議更新並設定身分:

sudo apt update
sudo apt install git -y

git config --global user.name "你的名字"
git config --global user.email "你的@email.com"

Node.js(使用 nvm)

不要用 apt install nodejs——版本太舊。用 nvm 管理 Node.js 版本:

# 安裝 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# 重新載入 shell
source ~/.bashrc

# 安裝最新 LTS 版本
nvm install --lts

# 確認版本
node -v
npm -v

Python

Ubuntu 預設有 Python 3,但建議裝 pip 和 venv:

sudo apt install python3-pip python3-venv -y

# 建立虛擬環境
python3 -m venv myenv
source myenv/bin/activate

VS Code 整合(強烈推薦)

VS Code 對 WSL 的整合是最好的——安裝 Remote - WSL 擴充套件後,VS Code 可以直接在 WSL 裡面開啟專案,就像在本機一樣。

設定方式:

  1. Windows 上安裝 VS Code
  2. 安裝 WSL 擴充套件(搜尋 "WSL" 或 "Remote - WSL")
  3. 在 WSL 終端機裡面,切到專案目錄:
cd ~/projects/my-project
code .

VS Code 會自動啟動並連線到 WSL。左下角會顯示 WSL: Ubuntu,表示你現在是在 Linux 環境裡面編輯和執行程式。

這是 WSL 最殺的功能:Windows 的 VS Code 介面 + Linux 的終端機和工具鏈,兩邊的優勢都拿到了。

Docker

Docker Desktop 支援 WSL2 後端,設定很簡單:

  1. 安裝 Docker Desktop
  2. Settings → General → 勾選 Use the WSL 2 based engine
  3. Settings → Resources → WSL Integration → 開啟你的 Ubuntu 發行版

設定完成後,在 WSL 裡面就可以直接用 docker 指令:

docker run hello-world
docker compose up -d

不需要在 Ubuntu 裡面另外安裝 Docker——Docker Desktop 會自動整合進 WSL。

效能提醒:Docker 的資料(images、containers、volumes)會存在 WSL 的虛擬磁碟裡面。長期使用後可能佔用很多空間,後面會講怎麼管理。


⚡ 進階設定與調校

限制記憶體用量

WSL2 預設最多會吃掉主機 50% 的記憶體(Windows 10)或 80%(Windows 11)。如果你覺得 WSL 太吃記憶體,可以限制:

在 Windows 的使用者目錄建立 .wslconfig(注意是 Windows 路徑,不是 WSL 裡面):

%USERPROFILE%\.wslconfig

內容:

[wsl2]
memory=4GB
processors=2
swap=2GB

修改後執行 wsl --shutdown 再重新開啟。

設定預設發行版

如果你安裝了多個 Linux 發行版:

# 查看所有已安裝的發行版
wsl --list --verbose

# 設定預設
wsl --set-default Ubuntu

備份與匯出

WSL 的發行版可以匯出成 tar 檔備份:

# 匯出
wsl --export Ubuntu D:\backup\ubuntu-backup.tar

# 匯入(還原到新的發行版名稱)
wsl --import Ubuntu-Restore D:\wsl\ubuntu-restore D:\backup\ubuntu-backup.tar

這在換電腦或重灌系統時非常有用——你的整個 Linux 環境、裝過的套件、專案檔案全部都在 tar 裡面。

清理磁碟空間

WSL2 的虛擬磁碟(.vhdx)會自動成長但不會自動縮小。長時間使用後可能佔用很多空間:

# 先關閉 WSL
wsl --shutdown

# 用 diskpart 壓縮(以系統管理員身分執行)
diskpart
select vdisk file="C:\Users\你的名字\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx"
compact vdisk
exit

路徑可能因 Ubuntu 版本而異,用檔案總管找到你的 .vhdx 檔案即可。


❓ 常見問題

WSL 和 Hyper-V 有衝突嗎?

不會。WSL2 底層用的就是 Hyper-V 技術,兩者可以同時使用。但 WSL2 啟用後,跟直接啟用 Hyper-V 一樣,可能影響 VMware 和 VirtualBox 的效能。

詳見 Hyper-V 完整教學 的「與其他虛擬機軟體共存」段落。

Windows Home 能用 WSL2 嗎?

可以。 這是 WSL 比 Hyper-V 強的地方——Home 版完全支援。

怎麼更新 WSL 核心?

wsl --update

建議偶爾跑一下,微軟會持續更新 Linux 核心修復 bug 和安全漏洞。

WSL 裡面可以跑 GUI 程式嗎?

可以。Windows 11 內建 WSLg,支援 Linux GUI 應用程式。安裝方式:

# 例如安裝 gedit 文字編輯器
sudo apt install gedit -y
gedit &

視窗會直接出現在 Windows 桌面上,跟 Windows 程式並排顯示。不需要額外設定 X Server。

Windows 10 用戶需要另外安裝 X Server(如 VcXsrv),設定較複雜。

多個 WSL 發行版之間可以互通嗎?

可以,但要透過網路或共享的 Windows 路徑(/mnt/c/)。每個 WSL 發行版有自己獨立的檔案系統,互相看不到對方的 /home/

WSL 可以取代虛擬機嗎?

看用途:

  • 純開發(CLI + Docker)→ 可以,WSL 更輕量更快
  • 需要完整 GUI 桌面 → 虛擬機體驗更好
  • 需要快照還原 → 虛擬機,WSL 沒有快照功能
  • 需要跑非 Linux OS → 虛擬機,WSL 只能跑 Linux
  • 需要完全隔離 → 虛擬機,WSL 和主機共享網路和部分資源

✨ 小結

WSL2 是 Windows 開發者的祕密武器。它不是玩具、不是模擬器——是一個跑在輕量 VM 上的完整 Linux 環境,跟 Windows 深度整合。

裝好 Ubuntu、設定好 Git 和 Node.js、用 VS Code 的 WSL 擴充套件連進去,你就擁有了一個 Windows 介面 + Linux 開發環境的最佳組合。不用雙系統開機、不用開笨重的虛擬機、不用犧牲效能。

如果你是 Windows 用戶又需要做任何跟 Linux 沾上邊的開發工作,WSL2 是你第一個該裝的東西。裝完之後你會想:「為什麼我現在才知道這個。」


🔗 延伸閱讀

這篇有幫助嗎? 不用雙系統,Windows 裡直接開 Ubuntu