WSL+Terminal:安裝 Ubuntu 與基礎 Linux 指令
7. Part 2:WSL / Terminal 觀念
7-1. 為什麼需要 Linux 環境
資料工程的核心工具幾乎全部跑在 Linux 上:
| 工具 | 為什麼需要 Linux | 哪一集學 |
|---|---|---|
| Docker | Docker Engine 原生跑在 Linux kernel 上 | EP04 |
| MySQL | 業界大多部署在 Linux server | EP08 |
| RabbitMQ / Celery | 訊息佇列和分散式 worker 都跑在 Linux 容器裡 | EP05-07 |
| Airflow | 排程系統,用 Docker Compose 在 Linux 環境啟動 | EP13-14 |
| GCP / GCE | 雲端虛擬機就是 Linux(Ubuntu / Debian) | EP15-22 |
結論:不管你用 Windows 還是 Mac,之後的指令都要在 Linux shell 裡打。
7-2. 雙平台策略
| 平台 | 怎麼取得 Linux 環境 | 之後所有指令在哪跑 |
|---|---|---|
| 🪟 Windows | 安裝 WSL2 + Ubuntu | 在 WSL 的 bash terminal 裡 |
| 🍎 Mac | 不用裝,macOS 原生就是 Unix-like | 直接用 Terminal |
關鍵特性:EP04 Docker 之後,幾乎所有操作都在 Docker 容器(Linux)裡,兩個平台的指令 100% 一致。只有 Season 0 的環境建置階段需要分平台教。
7-3. 為什麼要用 WSL
- 工程師必學 Linux——資料工程師的職缺幾乎都要求會用 Linux,這是業界的基本門檻
- 業界主要都是使用 Linux 環境部署系統和服務——從小型新創到大型企業,伺服器幾乎清一色跑 Linux(Ubuntu、CentOS、Debian)
- 安裝各類語言、程式、開源套件都非常方便,兼容性也特別高——
apt install一行指令就裝好,不用像 Windows 一樣到處找安裝檔 - macOS 和 Linux 都屬於類 Unix(Unix-like)作業系統,所以 Mac 不用另外安裝——Mac 的 Terminal 跟 Linux 的 shell 指令幾乎一模一樣
- 開發環境統一——團隊裡不管誰用 Windows 誰用 Mac,WSL 讓大家都用 Linux 指令,減少「在我電腦可以跑」的問題
- Docker 需要 Linux——EP03 要學的 Docker,在 Windows 上就是透過 WSL2 來跑的
7-4. 什麼是 WSL
WSL 全名是 Windows Subsystem for Linux(Windows 的 Linux 子系統)
- 對於開發者來說,Linux 環境提供了強大的工具和靈活性;而 Windows 系統則擁有廣泛的應用程式支援和使用者友善的界面。兩者各有優勢,但工程師需要兩個都能用
- 許多開發人員希望能夠在 Windows 系統中無縫地使用 Linux 命令和工具,而 WSL 正是微軟針對這一需求推出的解決方案。它讓你不需要買一台 Mac、不需要裝雙系統、不需要開虛擬機,就能在 Windows 裡直接用 Linux
- WSL 讓用戶在 Windows 環境中運行 Linux 應用程式,而無需安裝虛擬機或雙系統。你可以同時用 Windows 的 Word、Chrome,同時在 WSL 裡跑 Python、Docker、MySQL
- 與 WSL 1 相比,WSL 2 採用了真正的 Linux 核心,並使用虛擬機技術來提升性能,使其更接近於原生 Linux 環境。WSL2 的檔案系統效能大幅提升,而且最重要的是——Docker 只支援 WSL2
7-5. 如何安裝與設定 WSL
📣 實作時間!請各位同學跟著老師的指示操作。
- WSL 是每一位同學都要裝的,後面的課程都會用到
- 可能因為大家的電腦、系統、版本、設定、介面不同,遇到的狀況也會不一樣
- 有遇到問題的同學請舉手或留言發問
- Windows 同學跟 Step 0-11,Mac 同學跳到 7-B
安裝方式有兩種,建議先試方法一:
方法一:一行指令安裝(最簡單)
以系統管理員身份開啟 PowerShell,輸入:
wsl --install
這個指令會自動:
- 開啟「虛擬機器平台」功能
- 開啟「Windows 子系統 Linux 版」功能
- 下載並安裝最新的 Linux 核心
- 將 WSL2 設為預設
- 下載並安裝 Ubuntu(預設最新版)
✅ 如果這個指令一路成功,直接跳到 Step 6 從 Microsoft Store 安裝指定版本 Ubuntu 22.04
安裝完成後,用以下指令確認和管理 WSL:
| 指令 | 功能 | 範例 |
|---|---|---|
wsl --status |
查看 WSL 狀態(預設版本、核心版本) | 確認是否為 WSL2 |
wsl -l -v |
列出所有已安裝的 Linux 發行版(名稱、狀態、WSL 版本) | 確認 Ubuntu-22.04 在列表中 |
wsl -l -o |
列出微軟官方提供的可安裝發行版 | 看有哪些可以裝 |
wsl --install -d Ubuntu-22.04 |
不用 Store,直接用指令安裝指定版本 | Store 壞掉時的備案 |
wsl --update |
更新 WSL 核心到最新版 | 遇到錯誤時先跑這個 |
wsl --set-default-version 2 |
將 WSL2 設為所有新發行版的預設版本 | 確保後續安裝的都是 WSL2 |
wsl --set-default Ubuntu-22.04 |
設定預設的 Linux 發行版 | 打 wsl 直接進 Ubuntu 22.04 |
wsl --shutdown |
關閉所有 WSL(重開方式:搜尋 Ubuntu 點開 / 打 wsl / 打 code .) |
WSL 卡住時用這個 |
wsl --terminate Ubuntu-22.04 |
關閉指定的發行版 | 只關某一個,不影響其他 |
wsl --unregister Ubuntu-22.04 |
完全移除指定發行版(⚠️ 資料全刪) | 要重新安裝時才用 |
安裝後建議立刻執行的確認指令:
wsl --status
✅ 預期:看到「預設版本:2」和核心版本資訊
wsl -l -v
✅ 預期:看到類似以下輸出:
NAME STATE VERSION * Ubuntu-22.04 Running 2
*表示預設發行版VERSION 2表示是 WSL2(不是 WSL1)STATE顯示 Running 或 Stopped
wsl --set-default-version 2
確保之後安裝的 Linux 都預設用 WSL2。
方法二:手動逐步安裝(如果方法一失敗)
如果 wsl --install 失敗或報錯,按以下 Step 0 → Step 1 → … 逐步處理。
WSL1 vs WSL2
| WSL1 | WSL2(我們用這個) | |
|---|---|---|
| 原理 | 翻譯 Linux 系統呼叫 | 跑一個輕量 VM(Hyper-V) |
| 效能 | 檔案 I/O 快,但相容性差 | 完整 Linux kernel,Docker 能跑 |
| Docker | ❌ 不支援 | ✅ 支援 |
| 適合 | 簡單腳本 | ⭐ 資料工程開發 |
WSL + VS Code 的關係
┌──────────────────────────────────────┐
│ Windows 11 / 10 │
│ │
│ ┌─────────────────────────────────┐ │
│ │ WSL2 (Ubuntu) │ │
│ │ ┌───────────────────────────┐ │ │
│ │ │ bash terminal │ │ │
│ │ │ python3 / pip / pipenv │ │ │
│ │ │ git │ │ │
│ │ │ docker(EP04 後) │ │ │
│ │ │ 所有 Linux 工具 │ │ │
│ │ └───────────────────────────┘ │ │
│ └─────────────────────────────────┘ │
│ │
│ VS Code(Windows 端) │
│ ↕ WSL Extension 連線 │
│ VS Code Server(WSL 端,自動安裝) │
│ → 檔案在 WSL 裡,VS Code 在外面編輯│
└──────────────────────────────────────┘
📸 截圖 B0:Windows / WSL / VS Code 的關係架構圖(標出 Windows 層、WSL 層、VS Code 連線)
VS Code + WSL 的運作方式
當你在 WSL terminal 裡打 code .:
- VS Code 會在 WSL 裡安裝一個 VS Code Server(第一次連線時自動安裝,約 30-60 秒)
- VS Code 的視窗跑在 Windows 上,但所有檔案操作都在 WSL 裡
- VS Code 左下角會顯示
WSL: Ubuntu,代表連線成功 - Terminal 面板打開的就是 WSL 的 bash,不是 Windows 的 PowerShell
這代表你可以用 Windows 的 VS Code 介面,直接編輯 Linux 裡的檔案、跑 Linux 指令。兩個世界無縫接軌。
7-4. Mac 使用者:Terminal 基礎
Mac 原生就是 Unix-like(基於 Darwin / BSD),不需要 WSL。你需要確認的是:
| 工具 | 確認方式 | 預期結果 |
|---|---|---|
| Terminal | Cmd+Space → 輸入 Terminal → Enter | 看到終端機視窗 |
| Shell | echo $SHELL |
/bin/zsh(macOS 預設) |
| Python | python3 --version |
Python 3.x |
| Homebrew | brew --version |
Homebrew 4.x 或 5.x |
如果沒有 Homebrew,安裝指令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
7-5. 常見問題
| 問題 | 答案 |
|---|---|
| 「我可以不用 WSL 直接在 Windows 跑嗎?」 | 可以跑 Python,但 Docker / MySQL / Airflow 會非常麻煩。WSL 是最省事的方案。 |
| 「WSL 會拖慢電腦嗎?」 | 不會。WSL2 很輕量,閒置時幾乎不佔資源。 |
| 「我用 Mac,之後指令跟 Windows 同學一樣嗎?」 | EP04 Docker 之後 100% 一樣。Season 0 有少數差異會標 🍎/🪟。 |
| 「可以用 Ubuntu 以外的 Linux 嗎?」 | 可以,但我們統一用 Ubuntu,避免排錯時指令不同。 |
8. Lab 2:安裝 WSL + Ubuntu
🪟 7-A. Windows 用戶
Step 0:確認虛擬化(模擬)已經開啟
WSL2 需要 CPU 的虛擬化功能。大部分電腦預設已開啟,但要先確認。
- 按
Ctrl + Shift + Esc開啟「工作管理員」 - 點左側「效能」分頁
- 點「CPU」
- 在右下角找到「虛擬化」(或「模擬」)欄位
- 確認顯示「已啟用」
📸 截圖 B1:工作管理員 → 效能 → CPU
- 紅色箭頭標出左側「效能」分頁
- 紅框標出右下角「虛擬化:已啟用」
✅ 預期:虛擬化顯示「已啟用」
用指令確認(備案):
如果在工作管理員裡找不到「虛擬化」欄位,也可以用 PowerShell 指令確認:
systeminfo
在輸出的最後幾行找「Hyper-V 需求」區塊:
Hyper-V 需求: 已偵測到 Hypervisor。將不會顯示 Hyper-V 所需的功能。
或者:
Hyper-V 需求: VM 監視器模式延伸: 是
韌體中已啟用虛擬化: 是
第二層位址轉譯: 是
資料執行防止可用: 是
✅ 如果看到「已偵測到 Hypervisor」或「韌體中已啟用虛擬化:是」→ 虛擬化沒問題 ❌ 如果看到「韌體中已啟用虛擬化:否」→ 需要進 BIOS 開啟
❌ 虛擬化顯示「已停用」怎麼辦?
需要進 BIOS 手動開啟。這個步驟每台電腦不太一樣,但流程大致相同:
- 儲存所有工作,重新啟動電腦
- 開機過程中立刻重複按以下其中一個鍵(依品牌不同):
| 電腦品牌 | 進 BIOS 的按鍵 |
|---|---|
| ASUS | F2 或 Delete |
| Lenovo | F1 或 F2 |
| HP | F10 或 Esc |
| Dell | F2 |
| Acer | F2 或 Delete |
| MSI | Delete |
- 進入 BIOS 畫面後,找到以下設定(名稱可能因品牌而異):
| CPU 品牌 | 要找的設定名稱 | 位置通常在 |
|---|---|---|
| Intel | Intel Virtualization Technology 或 Intel VT-x |
Advanced → CPU Configuration |
| AMD | SVM Mode 或 AMD-V |
Advanced → CPU Configuration |
- 把設定改成 Enabled
- 按
F10儲存並離開(Save & Exit) - 電腦會重新開機
重新開機後,回到 Step 0 確認工作管理員的虛擬化已顯示「已啟用」。 ⚠️ 如果不確定怎麼進 BIOS,請舉手找老師或 TA 協助,不要亂改其他設定。
Step 1:開啟 Windows 功能(Hyper-V + WSL + 虛擬機器平台)
wsl --install 指令通常會自動開啟這些功能,但手動確認更安全。
方法一:用控制台
- 按
Win鍵,搜尋「控制台」,打開它 - 點「程式與功能」(如果看不到,先把檢視方式改成「類別」再點「程式集」→「程式與功能」)
📸 截圖 B1.5:控制台 → 程式與功能
- 點左側「開啟或關閉 Windows 功能」
📸 截圖 B1.6:Windows 功能視窗
- 在清單中找到並勾選以下三項:
- ✅ Hyper-V(含子項目全部勾選)
- ✅ Windows 子系統 Linux 版(Windows Subsystem for Linux)
- ✅ 虛擬機器平台(Virtual Machine Platform)
📸 截圖 B1.7:Windows 功能清單
- 紅框標出 Hyper-V(已勾選)
- 紅框標出 Windows 子系統 Linux 版(已勾選)
- 紅框標出虛擬機器平台(已勾選)
- 點「確定」
- 系統會提示「重新啟動電腦」→ 點「立即重新啟動」
⚠️ 這三個功能缺任何一個,WSL2 都跑不起來。如果之後
wsl --install失敗,先回來確認這三個有沒有勾。
✅ 預期:重新開機後,三個 Windows 功能都已啟用
方法二:用 PowerShell 指令(進階)
如果你比較熟指令,也可以用系統管理員 PowerShell 執行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V-All /all /norestart
然後重新開機。
⚠️ Windows 11 Home 版特別注意:Hyper-V 手動啟用
Windows 11 Home 版在「Windows 功能」裡找不到 Hyper-V 選項——這是微軟的限制,只有 Pro / Enterprise / Education 版才有。但其實 Home 版的系統裡已經有 Hyper-V 的安裝檔,只是被隱藏了。
用以下方法手動啟用:
- 打開「記事本」,貼上以下內容:
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
pause
- 存檔為
EnableHyperV.bat(注意副檔名是.bat不是.txt) - 在這個 .bat 檔案上右鍵 → 「以系統管理員身份執行」
- 等待約 5-10 分鐘,看到安裝進度跑完
- 跑完後會問是否重新啟動 → 按 Y 重新開機
✅ 預期:重新開機後,Hyper-V 已啟用。可以回到「Windows 功能」確認 Hyper-V 選項已出現並勾選。
怎麼確認自己是 Home 版還是 Pro 版?
- 按
Win + R→ 輸入winver→ 按 Enter - 看版本資訊裡是寫「Windows 11 Home」還是「Windows 11 Pro」
- 如果是 Pro → 不需要這個步驟,直接在「Windows 功能」裡勾 Hyper-V 就好
Step 2:確認 Windows 版本
- 按住
Win鍵 +R鍵 → 彈出「執行」視窗
📸 截圖 B2:「執行」視窗(標出輸入欄位)
- 輸入
winver - 按 Enter
📸 截圖 B3:Windows 版本視窗
- 紅框標出版本號(例如 22H2)
- 標注「需要 2004 以上」
✅ 需要:Windows 10 版本 2004 以上,或 Windows 11 任何版本 ❌ 如果版本太舊:先去 Settings → Windows Update 更新
Step 3:打開 PowerShell(系統管理員)
- 右鍵點桌面左下角的「開始」按鈕(Windows 圖示)
📸 截圖 B4:右鍵選單(標出「Windows Terminal(系統管理員)」選項)
- 選「Windows Terminal(系統管理員)」
- 如果沒有這個選項,選「PowerShell(系統管理員)」
- 彈出「使用者帳戶控制:是否允許此應用程式變更您的裝置?」→ 點「是」
📸 截圖 B5:PowerShell 視窗
- 紅框①標出標題列顯示「系統管理員」字樣
- 紅框②標出提示符號
PS C:\Users\你的名字>
✅ 預期:看到藍色或黑色的 PowerShell 視窗 ⚠️ 確認標題列有「系統管理員」,沒有的話關掉重開
Step 4:安裝 WSL 框架
在 PowerShell 裡逐字輸入以下指令,然後按 Enter:
wsl --install --no-distribution
--no-distribution表示只裝 WSL 框架,不自動裝 Ubuntu。我們要自己選版本。
📸 截圖 B6:輸入指令的畫面(標出指令位置)
等待 1-3 分鐘,會看到類似輸出:
正在安裝: 虛擬機器平台
已安裝 虛擬機器平台。
正在安裝: Windows 子系統 Linux 版
已安裝 Windows 子系統 Linux 版。
要求的作業已成功完成。
系統可能需要重新啟動。
📸 截圖 B7:安裝完成的輸出(標出「要求的作業已成功完成」)
✅ 預期:看到「已成功完成」 ⚠️ 如果看到「已安裝」→ 表示之前裝過,直接下一步 ❌ 如果報錯 → 回 Step 0 確認虛擬化有沒有開
Step 5:重新開機
⚠️ 必須重新開機,不能跳過。
- 存好所有工作
- 點「開始」→「電源」→「重新啟動」
- 等電腦重新開機完成
Step 6:開啟 Microsoft Store,安裝 Ubuntu 22.04
重新開機後,我們從 Microsoft Store 安裝指定版本的 Ubuntu。
- 按
Win鍵,搜尋「Microsoft Store」,打開它
📸 截圖 B8:Microsoft Store 首頁
- 在 Store 的搜尋欄輸入「ubuntu」
- 在搜尋結果中找到「Ubuntu 22.04 LTS」(不是 Ubuntu 沒版號的那個,要選有 22.04 的)
📸 截圖 B8.5:Microsoft Store 搜尋 ubuntu(標出 Ubuntu 22.04 LTS)
⚠️ 為什麼選 22.04?
- 22.04 是 LTS(長期支援版),穩定、套件多、官方支援到 2027 年
- 不要選最新的 24.04——部分工具的相容性還沒跟上
- 不要選沒有版號的「Ubuntu」——那會自動裝最新版,日後版本會變
- 點「取得」或「安裝」
- 等待下載完成(約 500MB)
📸 截圖 B8.6:下載進度
Step 7:下載並開啟 Ubuntu 22.04 LTS
- 安裝完成後,點「開啟」(或從「開始」搜尋 Ubuntu 22.04)
- 第一次開啟會跑初始化,等待 1-2 分鐘
- 會看到黑色的 Terminal 視窗,標題列寫「Ubuntu 22.04.5 LTS」
📸 截圖 B9:Ubuntu 22.04 初次啟動畫面
- 標題列顯示
Ubuntu 22.04.5 LTS- 畫面顯示
Installing, this may take a few minutes...
如果沒有自動彈出:
- 點「開始」
- 搜尋「Ubuntu 22.04」
- 點開
Step 8:第一次登入需建立用戶
初始化完成後,畫面會顯示:
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
📸 截圖 B9:第一次登入建立用戶畫面
- 標題列
Ubuntu 22.04.5 LTS- 紅框標出
Enter new UNIX username:輸入位置- 紅字標注「username 必須是英文小寫」「password 簡單好記就好」
- 輸入你想要的使用者名稱(全部小寫英文,例如
dex) - 按 Enter
⚠️ 規則:
- username 必須是英文小寫,不能有空格、中文、大寫
- 不需要跟 Windows 帳號一樣
- password 簡單好記就好(這是本機開發用,不需要太複雜)
Step 9:設定密碼
New password:
- 輸入你的密碼,按 Enter
⚠️ 打字時螢幕不會顯示任何字元(沒有
*也沒有●),這是 Linux 的正常行為。照打就好。
Retype new password:
- 再輸入一次同樣的密碼,按 Enter
📸 截圖 B10:設定密碼完成後的畫面
- 紅框標出提示符號
dex@DESKTOP-XXXXX:~$- 標注「看到這個就表示成功了」
✅ 預期:看到
你的名字@電腦名:~$的提示符號 ❌ 如果密碼不一致,會要求重新輸入
Step 10:驗證安裝成功
在 Ubuntu 視窗裡輸入:
cat /etc/os-release
📸 截圖 B11:os-release 輸出
- 紅框標出
NAME="Ubuntu"和VERSION="22.04"
✅ 預期:看到
NAME="Ubuntu"和版本號
python3 --version
✅ 預期:
Python 3.10.x或更高
Step 11:更新系統套件
sudo apt update && sudo apt upgrade -y
📣 「
sudo是用管理員權限執行。第一次會問你密碼,就是剛才設的那個。」
📸 截圖 B12:apt update 的輸出畫面(標出「sudo 要求密碼」的提示)
等待 2-5 分鐘。
✅ 預期:跑完後回到
$提示符號,沒有紅色錯誤 ⚠️ 過程中可能問Do you want to continue? [Y/n],直接按 Enter(預設 Y)
🪟 WSL 安裝常見問題 Q&A
Q1:沒有 Microsoft Store / Microsoft Store 打不開怎麼辦?
方法一:用 PowerShell 重新安裝 Microsoft Store
以系統管理員身份開啟 PowerShell,輸入:
Get-AppxPackage -allusers Microsoft.WindowsStore | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
重新開機後 Microsoft Store 應該就回來了。
方法二:不用 Store,直接用指令安裝 Ubuntu
如果 Store 真的修不好,可以用 PowerShell 直接裝:
wsl --install -d Ubuntu-22.04
這會跳過 Store,直接從微軟伺服器下載 Ubuntu 22.04。
方法三:LTSC 版本(企業精簡版)
如果你的 Windows 是 LTSC 版本(本來就沒有 Store),參考 LTSC 加入 Microsoft Store 教學。
Q2:wsl --install 出現錯誤 0x80370102
這是最常見的錯誤,代表虛擬化沒有開啟。
解決步驟:
- 回 Step 0 確認工作管理員的虛擬化是否「已啟用」
- 如果「已停用」→ 進 BIOS 開啟(見 Step 0 的 BIOS 表格)
- 回 Step 1 確認 Hyper-V、WSL、虛擬機器平台三個 Windows 功能都有勾
- 都確認了還是不行 → 用系統管理員 PowerShell 執行:
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V-All /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
然後重新開機。
Q3:wsl --install 出現錯誤 0x800701bc
代表 WSL2 的 Linux 核心需要更新。
wsl --update
更新完重新開機即可。
Q4:安裝過程中網路超時(0x80072ee2)
這是網路問題,通常是防火牆或公司網路擋住了 GitHub 的連線。
解決方式:
- 換一個網路(例如手機熱點)
- 或關閉 VPN 後重試
- 或等一陣子再試(微軟伺服器偶爾會忙碌)
Q5:Ubuntu 啟動後卡在「Installing, this may take a few minutes…」很久
正常的話 1-2 分鐘就好。如果超過 10 分鐘:
- 關掉 Ubuntu 視窗
- 開 PowerShell,輸入
wsl --shutdown - 重新打開 Ubuntu
Q6:想重新安裝 Ubuntu(砍掉重來)
wsl --unregister Ubuntu-22.04
⚠️ 這會刪除 Ubuntu 裡的所有資料。確定要重來才執行。
然後回 Step 6 從 Microsoft Store 重新安裝。
Q7:wsl --install 顯示「已安裝」但找不到 Ubuntu
表示 WSL 框架裝了但沒有裝 Linux 發行版。直接去 Step 6 從 Microsoft Store 安裝 Ubuntu 22.04。
更多問題參考:Microsoft 官方 WSL 疑難排解
Q8:怎麼知道我裝的是 WSL1 還是 WSL2?
在 PowerShell 或 CMD 輸入:
wsl -l -v
會看到類似這樣的輸出:
NAME STATE VERSION
* Ubuntu-22.04 Running 2
VERSION欄位如果是2→ 你是 WSL2 ✅VERSION欄位如果是1→ 你是 WSL1 ❌,需要轉換(見 Q10)
Q9:為什麼會裝成 WSL1 而不是 WSL2?
WSL2 需要三個條件都滿足,缺一個就會退回 WSL1:
| 條件 | 怎麼確認 | 沒滿足怎麼辦 |
|---|---|---|
| CPU 虛擬化已開啟 | 工作管理員 → 效能 → CPU → 虛擬化:已啟用 | 進 BIOS 開啟 Intel VT-x 或 AMD-V(見 Step 0) |
| Hyper-V 已啟用 | 控制台 → Windows 功能 → Hyper-V 已勾選 | 勾選後重開機;Home 版用批次檔啟用(見 Step 1) |
| Windows 版本夠新 | winver 確認 Windows 10 2004+ 或 Windows 11 |
更新 Windows |
Q10:怎麼從 WSL1 轉成 WSL2?
步驟:
- 先確認三個前提條件都滿足(見 Q9 的表格)
- 在 PowerShell(系統管理員)輸入:
wsl --set-version Ubuntu-22.04 2
- 等待轉換完成(可能需要幾分鐘)
- 驗證:
wsl -l -v
✅ 預期:VERSION 欄位變成
2
轉換失敗常見錯誤:
| 錯誤碼 | 原因 | 解法 |
|---|---|---|
| 0x80370102 | 虛擬化沒開 | 進 BIOS 啟用虛擬化 + 確認 Hyper-V 已開(見 Step 0 和 Step 1) |
| 0x800701bc | WSL2 Linux 核心需要更新 | wsl --update 然後重新開機 |
如果需要開啟虛擬化和 Hyper-V,可以在系統管理員 PowerShell 執行:
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V-All /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
然後重新開機,再跑 wsl --set-version Ubuntu-22.04 2。
Q11:怎麼設定以後安裝的 Linux 都預設用 WSL2?
wsl --set-default-version 2
這樣以後從 Microsoft Store 或 wsl --install 安裝的所有 Linux 發行版,都會自動用 WSL2。
Q12:為什麼不能裝 Ubuntu 18.04?
因為 VS Code Remote WSL 連不上 Ubuntu 18.04。
VS Code 從 1.86 版(2024 年 1 月)起,Remote WSL 功能要求 Linux 系統的 glibc 版本 ≥ 2.28:
| Ubuntu 版本 | glibc 版本 | VS Code 支援 |
|---|---|---|
| 18.04 | 2.27 | ❌ 不支援(已 EOL) |
| 20.04 | 2.31 | ✅ 支援 |
| 22.04 | 2.35 | ✅ 支援(課程使用) |
| 24.04 | 2.39 | ✅ 支援 |
⚠️ 如果你裝了 Ubuntu 18.04,
code .會失敗或 VS Code Server 無法啟動。請改裝 Ubuntu 22.04(見 Q14)。
Q13:Microsoft Store 怎麼選 Ubuntu 版本?
Microsoft Store 裡的 Ubuntu 有好幾個版本:
| 名稱 | 說明 |
|---|---|
| Ubuntu (沒有版號) | 自動指向最新 LTS,版本可能會變 |
| Ubuntu 20.04 LTS | 固定版本,支援到 2025 |
| Ubuntu 22.04 LTS | ⭐ 課程使用這個,支援到 2027 |
| Ubuntu 24.04 LTS | 最新 LTS,支援到 2029 |
💡 選 Ubuntu 22.04 LTS。不要選沒有版號的「Ubuntu」,因為它的版本會變,你不確定裝到哪一版。
搜尋方式:
- 打開 Microsoft Store
- 搜尋欄輸入
Ubuntu 22.04 - 找到 Ubuntu 22.04.x LTS(Canonical Group 發行)
- 點「取得」安裝
如果 Microsoft Store 打不開,也可以用指令安裝:
wsl --install -d Ubuntu-22.04
Q14:已經裝了 Ubuntu 18.04 怎麼辦?
方法一(推薦):直接再裝 Ubuntu 22.04,兩個共存
- 從 Microsoft Store 安裝 Ubuntu 22.04(跟 18.04 不衝突,可以同時存在)
- 設定 22.04 為預設:
wsl --set-default Ubuntu-22.04
- 之後
wsl和code .都會用 22.04
方法二:移除 18.04 再裝 22.04
wsl --unregister Ubuntu-18.04
⚠️ 這會刪除 Ubuntu 18.04 裡的所有資料,確定不需要才執行。
然後從 Microsoft Store 安裝 Ubuntu 22.04。
不建議:用 do-release-upgrade 從 18.04 升級到 22.04
雖然 Ubuntu 支援版本升級(sudo do-release-upgrade),但跨多個版本升級(18→20→22)風險高、容易出問題。直接裝新的更快也更乾淨。
Q15:登入 Ubuntu 的用戶是 root,如何改為個人用戶?
如果你打開 Ubuntu 後看到的提示符號是 root@...#(而不是 你的名字@...$),代表你用的是 root 帳號。課程中應該使用個人用戶。
在 Windows PowerShell 或 CMD 執行:
# 以指定用戶登入(enzoo 改成你的帳號名)
wsl -d Ubuntu-22.04 -u enzoo
# 將 enzoo 設為預設用戶
ubuntu2204 config --default-user enzoo
如果還沒建立個人用戶(記得改成你的):
# 建立用戶
$ adduser enzoo
# 加入 sudo 群組(讓這個用戶可以用 sudo)
$ usermod -aG sudo enzoo
# 切換到該用戶
$ sudo su enzoo
adduser 過程中會問你設定密碼和個人資訊(Full Name、Room Number 等),密碼必填,其他按 Enter 跳過即可。
更多問題參考:Microsoft 官方 WSL 疑難排解
🍎 7-B. Mac 用戶
Step 1:打開終端機
方法 A(推薦):
- 按
Cmd + Space(Spotlight 搜尋) - 輸入
Terminal - 按 Enter
📸 截圖 C1:Spotlight 搜尋 Terminal(標出搜尋欄和 Terminal app)
方法 B:
- 打開 Finder
- 前往「應用程式」→「工具程式」
- 雙擊「終端機」
📸 截圖 C2:Terminal 開啟後的畫面
- 紅框標出提示符號(例如
dex@MacBook ~ %)
Step 2:確認 shell
echo $SHELL
✅ 預期:
/bin/zsh
Step 3:確認 Python
python3 --version
✅ 預期:
Python 3.x.x
如果顯示 command not found:
# 先裝 Homebrew(Mac 的套件管理器)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
📸 截圖 C3:Homebrew 安裝畫面(標出「Press RETURN to continue」提示)
安裝完 Homebrew 後:
# 裝 Python
brew install python3
# 驗證
python3 --version
✅ 預期:
Python 3.x.x
Step 4:確認 Homebrew
brew --version
✅ 預期:
Homebrew 4.x.x
如果 brew: command not found:
⚠️ Homebrew 裝完後需要加入 PATH。終端機會顯示兩行指令,類似:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"把這兩行複製貼上執行。
9. Lab 3:基礎 Linux 指令
📂 現在在:家目錄
~,本段會建出~/projects/(你自己的資料夾) 🪟 Windows:在 WSL Ubuntu 視窗裡操作 🍎 Mac:在 Terminal 裡操作
為什麼要學 Linux 指令
你可能習慣用滑鼠開資料夾、拖拉檔案。但在資料工程中,很多操作只能用指令完成:
| 場景 | 為什麼用指令而不是滑鼠 |
|---|---|
| SSH 連到遠端伺服器 | 遠端沒有桌面,只有 terminal |
| Docker 容器裡操作 | 容器沒有 GUI |
| 寫自動化腳本 | 指令可以寫成 .sh 腳本自動執行 |
| Git 操作 | 大部分 Git 操作用指令最快 |
| 安裝套件 | pip install、apt install 都是指令 |
以下 10 個指令是最基礎的——學會這些,後續課程的操作就不會迷路。
Step 1:你在哪?(pwd)
pwd = Print Working Directory(印出目前所在的目錄路徑)
pwd
✅ 預期:
- 🪟
/home/你的名字(這是 WSL Ubuntu 的家目錄)- 🍎
/Users/你的名字(這是 macOS 的家目錄)
每次不確定自己在哪裡,就打
pwd。這是最常用的「定位」指令。
📸 截圖 D1:pwd 輸出(標出完整路徑)
Step 2:看資料夾有什麼(ls)
ls = List(列出目前目錄裡的檔案和資料夾)
ls
可能是空的(新環境沒有檔案)。
加上參數可以看到更多資訊:
ls -la
| 參數 | 功能 |
|---|---|
-l |
詳細模式(顯示權限、擁有者、大小、修改日期) |
-a |
顯示所有檔案(包含以 . 開頭的隱藏檔) |
-la |
兩個一起用 |
📸 截圖 D2:ls -la 輸出
- 紅框①標出
.(當前目錄)和..(上一層目錄)- 紅框②標出隱藏檔案(
.bashrc、.profile等)
小知識:以
.開頭的檔案是「隱藏檔」,通常是設定檔。ls預設不顯示,要加-a才看得到。
Step 3:建資料夾(mkdir)
mkdir = Make Directory(建立新資料夾)
mkdir projects
ls
✅ 預期:看到
projects出現在列表裡
這個
~/projects/就是你之後放練習和團隊專題的地方。
Step 4:進入資料夾(cd)
cd = Change Directory(切換到指定的資料夾)
cd projects
pwd
✅ 預期:
/home/你的名字/projects(或/Users/你的名字/projects)
常用的 cd 變化:
| 指令 | 效果 |
|---|---|
cd projects |
進入 projects 資料夾 |
cd .. |
回到上一層 |
cd ~ 或 cd |
回到家目錄 |
cd - |
回到上一次待的目錄 |
Step 5:建檔案(touch)
touch = 建立一個空白檔案(如果檔案已存在,則更新修改時間)
touch hello.txt
ls
✅ 預期:看到
hello.txt出現
Step 6:寫入內容(echo + 重導向)
echo = 在 terminal 上印出文字。搭配 > 可以把文字寫進檔案:
echo "Hello from WSL!" > hello.txt
| 符號 | 功能 |
|---|---|
> |
寫入檔案(覆蓋原有內容) |
>> |
附加到檔案尾端(不覆蓋) |
範例:
echo "第一行" > hello.txt
echo "第二行" >> hello.txt
Step 7:讀取檔案內容(cat)
cat = Concatenate(串接並印出檔案內容)
cat hello.txt
✅ 預期:顯示
Hello from WSL!
📸 截圖 D3:touch → echo → cat 的完整操作(標出每步輸出)
Step 8:複製檔案(cp)
cp = Copy(複製檔案)
cp hello.txt backup.txt
ls
✅ 預期:看到
hello.txt和backup.txt兩個檔案
Step 9:重新命名 / 移動(mv)
mv = Move(移動檔案,也用來改名)
mv backup.txt renamed.txt
ls
✅ 預期:
backup.txt不見了,多了renamed.txt
mv既是「移動」也是「改名」。如果目標是不同資料夾就是移動,同一個資料夾就是改名。
Step 10:刪除檔案(rm)
rm = Remove(刪除檔案)
rm renamed.txt
ls
✅ 預期:只剩
hello.txt
⚠️ 注意:
rm不進垃圾桶,刪了就沒了。 用之前確認檔名。如果要刪資料夾,要加-r(recursive):rm -r 資料夾名稱。
📸 截圖 D4:cp → mv → rm 的完整操作(標出每步的 ls 結果)
Step 11:回上一層(cd ..)
cd ..
pwd
✅ 預期:回到
/home/你的名字
Linux 指令速查
| 指令 | 全名 | 功能 | 範例 |
|---|---|---|---|
pwd |
Print Working Directory | 看目前在哪 | pwd |
ls |
List | 列出檔案 | ls -la |
mkdir |
Make Directory | 建資料夾 | mkdir projects |
cd |
Change Directory | 切換目錄 | cd projects |
touch |
Touch | 建空白檔案 | touch hello.txt |
echo |
Echo | 印出/寫入文字 | echo "hi" > f.txt |
cat |
Concatenate | 讀取檔案 | cat hello.txt |
cp |
Copy | 複製檔案 | cp a.txt b.txt |
mv |
Move | 移動/改名 | mv old.txt new.txt |
rm |
Remove | 刪除檔案 | rm file.txt |
nano |
Nano | 終端機文字編輯器 | nano test.txt |
htop |
Htop | 活動監視器(看 CPU/記憶體) | htop(按 q 離開) |
常用 Linux 指令完整參考
# 列出當前目錄下的資源
> ls
# 切換到指定目錄
> cd /xxx/yyy/zzz
> cd ../ . 代表當前目錄、.. 代表上一層
> cd ~/ ~ 代表用戶預設目錄
# 顯示當前目錄的完整路徑
> pwd
# 建立新目錄
> mkdir xxx_folder
# 編輯檔案
> nano test.txt
# 活動監視器
> htop
# 複製檔案
> cp source.txt dest.txt
# 移動或重新命名檔案
> mv old_name.txt new_name.txt
# 刪除檔案(⚠️ 不進垃圾桶)
> rm file.txt
# 刪除目錄(含所有內容)
> rm -rf folder_name
# 查看檔案內容
> cat file.txt
# 用管理員權限執行指令
> sudo apt update

送件鴿飛出去了