AI & Data Dreamers練功房
寶箱片場規則
前傳・開工前環境安裝

WSL+Terminal:安裝 Ubuntu 與基礎 Linux 指令

← 回資料館・在 GitHub 看原始檔(de-course)・裝到一半卡住?左下角送件鴿或 Discord #觀眾服務台 喊一聲

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

這個指令會自動:

  1. 開啟「虛擬機器平台」功能
  2. 開啟「Windows 子系統 Linux 版」功能
  3. 下載並安裝最新的 Linux 核心
  4. 將 WSL2 設為預設
  5. 下載並安裝 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 .:

  1. VS Code 會在 WSL 裡安裝一個 VS Code Server(第一次連線時自動安裝,約 30-60 秒)
  2. VS Code 的視窗跑在 Windows 上,但所有檔案操作都在 WSL 裡
  3. VS Code 左下角會顯示 WSL: Ubuntu,代表連線成功
  4. 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 的虛擬化功能。大部分電腦預設已開啟,但要先確認。

  1. 按 Ctrl + Shift + Esc 開啟「工作管理員」
  2. 點左側「效能」分頁
  3. 點「CPU」
  4. 在右下角找到「虛擬化」(或「模擬」)欄位
  5. 確認顯示「已啟用」

📸 截圖 B1:工作管理員 → 效能 → CPU

  • 紅色箭頭標出左側「效能」分頁
  • 紅框標出右下角「虛擬化:已啟用」

✅ 預期:虛擬化顯示「已啟用」

用指令確認(備案):

如果在工作管理員裡找不到「虛擬化」欄位,也可以用 PowerShell 指令確認:

systeminfo

在輸出的最後幾行找「Hyper-V 需求」區塊:

Hyper-V 需求:      已偵測到 Hypervisor。將不會顯示 Hyper-V 所需的功能。

或者:

Hyper-V 需求:      VM 監視器模式延伸: 是
                    韌體中已啟用虛擬化: 是
                    第二層位址轉譯: 是
                    資料執行防止可用: 是

✅ 如果看到「已偵測到 Hypervisor」或「韌體中已啟用虛擬化:是」→ 虛擬化沒問題 ❌ 如果看到「韌體中已啟用虛擬化:否」→ 需要進 BIOS 開啟

❌ 虛擬化顯示「已停用」怎麼辦?

需要進 BIOS 手動開啟。這個步驟每台電腦不太一樣,但流程大致相同:

  1. 儲存所有工作,重新啟動電腦
  2. 開機過程中立刻重複按以下其中一個鍵(依品牌不同):
電腦品牌 進 BIOS 的按鍵
ASUS F2 或 Delete
Lenovo F1 或 F2
HP F10 或 Esc
Dell F2
Acer F2 或 Delete
MSI Delete
  1. 進入 BIOS 畫面後,找到以下設定(名稱可能因品牌而異):
CPU 品牌 要找的設定名稱 位置通常在
Intel Intel Virtualization Technology 或 Intel VT-x Advanced → CPU Configuration
AMD SVM Mode 或 AMD-V Advanced → CPU Configuration
  1. 把設定改成 Enabled
  2. 按 F10 儲存並離開(Save & Exit)
  3. 電腦會重新開機

重新開機後,回到 Step 0 確認工作管理員的虛擬化已顯示「已啟用」。 ⚠️ 如果不確定怎麼進 BIOS,請舉手找老師或 TA 協助,不要亂改其他設定。

Step 1:開啟 Windows 功能(Hyper-V + WSL + 虛擬機器平台)

wsl --install 指令通常會自動開啟這些功能,但手動確認更安全。

方法一:用控制台

  1. 按 Win 鍵,搜尋「控制台」,打開它
  2. 點「程式與功能」(如果看不到,先把檢視方式改成「類別」再點「程式集」→「程式與功能」)

📸 截圖 B1.5:控制台 → 程式與功能

  1. 點左側「開啟或關閉 Windows 功能」

📸 截圖 B1.6:Windows 功能視窗

  1. 在清單中找到並勾選以下三項:
    • ✅ Hyper-V(含子項目全部勾選)
    • ✅ Windows 子系統 Linux 版(Windows Subsystem for Linux)
    • ✅ 虛擬機器平台(Virtual Machine Platform)

📸 截圖 B1.7:Windows 功能清單

  • 紅框標出 Hyper-V(已勾選)
  • 紅框標出 Windows 子系統 Linux 版(已勾選)
  • 紅框標出虛擬機器平台(已勾選)
  1. 點「確定」
  2. 系統會提示「重新啟動電腦」→ 點「立即重新啟動」

⚠️ 這三個功能缺任何一個,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 的安裝檔,只是被隱藏了。

用以下方法手動啟用:

  1. 打開「記事本」,貼上以下內容:
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
  1. 存檔為 EnableHyperV.bat(注意副檔名是 .bat 不是 .txt)
  2. 在這個 .bat 檔案上右鍵 → 「以系統管理員身份執行」
  3. 等待約 5-10 分鐘,看到安裝進度跑完
  4. 跑完後會問是否重新啟動 → 按 Y 重新開機

✅ 預期:重新開機後,Hyper-V 已啟用。可以回到「Windows 功能」確認 Hyper-V 選項已出現並勾選。

參考來源:在 Windows 11 Home 版啟用 Hyper-V

怎麼確認自己是 Home 版還是 Pro 版?

  • 按 Win + R → 輸入 winver → 按 Enter
  • 看版本資訊裡是寫「Windows 11 Home」還是「Windows 11 Pro」
  • 如果是 Pro → 不需要這個步驟,直接在「Windows 功能」裡勾 Hyper-V 就好

Step 2:確認 Windows 版本

  1. 按住 Win 鍵 + R 鍵 → 彈出「執行」視窗

📸 截圖 B2:「執行」視窗(標出輸入欄位)

  1. 輸入 winver
  2. 按 Enter

📸 截圖 B3:Windows 版本視窗

  • 紅框標出版本號(例如 22H2)
  • 標注「需要 2004 以上」

✅ 需要:Windows 10 版本 2004 以上,或 Windows 11 任何版本 ❌ 如果版本太舊:先去 Settings → Windows Update 更新

Step 3:打開 PowerShell(系統管理員)

  1. 右鍵點桌面左下角的「開始」按鈕(Windows 圖示)

📸 截圖 B4:右鍵選單(標出「Windows Terminal(系統管理員)」選項)

  1. 選「Windows Terminal(系統管理員)」
    • 如果沒有這個選項,選「PowerShell(系統管理員)」
  2. 彈出「使用者帳戶控制:是否允許此應用程式變更您的裝置?」→ 點「是」

📸 截圖 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:重新開機

⚠️ 必須重新開機,不能跳過。

  1. 存好所有工作
  2. 點「開始」→「電源」→「重新啟動」
  3. 等電腦重新開機完成

Step 6:開啟 Microsoft Store,安裝 Ubuntu 22.04

重新開機後,我們從 Microsoft Store 安裝指定版本的 Ubuntu。

  1. 按 Win 鍵,搜尋「Microsoft Store」,打開它

📸 截圖 B8:Microsoft Store 首頁

  1. 在 Store 的搜尋欄輸入「ubuntu」
  2. 在搜尋結果中找到「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」——那會自動裝最新版,日後版本會變
  1. 點「取得」或「安裝」
  2. 等待下載完成(約 500MB)

📸 截圖 B8.6:下載進度

Step 7:下載並開啟 Ubuntu 22.04 LTS

  1. 安裝完成後,點「開啟」(或從「開始」搜尋 Ubuntu 22.04)
  2. 第一次開啟會跑初始化,等待 1-2 分鐘
  3. 會看到黑色的 Terminal 視窗,標題列寫「Ubuntu 22.04.5 LTS」

📸 截圖 B9:Ubuntu 22.04 初次啟動畫面

  • 標題列顯示 Ubuntu 22.04.5 LTS
  • 畫面顯示 Installing, this may take a few minutes...

如果沒有自動彈出:

  1. 點「開始」
  2. 搜尋「Ubuntu 22.04」
  3. 點開

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 簡單好記就好」
  1. 輸入你想要的使用者名稱(全部小寫英文,例如 dex)
  2. 按 Enter

⚠️ 規則:

  • username 必須是英文小寫,不能有空格、中文、大寫
  • 不需要跟 Windows 帳號一樣
  • password 簡單好記就好(這是本機開發用,不需要太複雜)

Step 9:設定密碼

New password:
  1. 輸入你的密碼,按 Enter

⚠️ 打字時螢幕不會顯示任何字元(沒有 * 也沒有 ●),這是 Linux 的正常行為。照打就好。

Retype new password:
  1. 再輸入一次同樣的密碼,按 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

這是最常見的錯誤,代表虛擬化沒有開啟。

解決步驟:

  1. 回 Step 0 確認工作管理員的虛擬化是否「已啟用」
  2. 如果「已停用」→ 進 BIOS 開啟(見 Step 0 的 BIOS 表格)
  3. 回 Step 1 確認 Hyper-V、WSL、虛擬機器平台三個 Windows 功能都有勾
  4. 都確認了還是不行 → 用系統管理員 PowerShell 執行:
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V-All /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

然後重新開機。

參考:iT 邦幫忙 WSL 0x80370102 修復

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?

步驟:

  1. 先確認三個前提條件都滿足(見 Q9 的表格)
  2. 在 PowerShell(系統管理員)輸入:
wsl --set-version Ubuntu-22.04 2
  1. 等待轉換完成(可能需要幾分鐘)
  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」,因為它的版本會變,你不確定裝到哪一版。

搜尋方式:

  1. 打開 Microsoft Store
  2. 搜尋欄輸入 Ubuntu 22.04
  3. 找到 Ubuntu 22.04.x LTS(Canonical Group 發行)
  4. 點「取得」安裝

如果 Microsoft Store 打不開,也可以用指令安裝:

wsl --install -d Ubuntu-22.04

Q14:已經裝了 Ubuntu 18.04 怎麼辦?

方法一(推薦):直接再裝 Ubuntu 22.04,兩個共存

  1. 從 Microsoft Store 安裝 Ubuntu 22.04(跟 18.04 不衝突,可以同時存在)
  2. 設定 22.04 為預設:
wsl --set-default Ubuntu-22.04
  1. 之後 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(推薦):

  1. 按 Cmd + Space(Spotlight 搜尋)
  2. 輸入 Terminal
  3. 按 Enter

📸 截圖 C1:Spotlight 搜尋 Terminal(標出搜尋欄和 Terminal app)

方法 B:

  1. 打開 Finder
  2. 前往「應用程式」→「工具程式」
  3. 雙擊「終端機」

📸 截圖 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