Learning Objectives
- 說明虛擬化的觀念,分辨在作業系統上執行的虛擬化軟體與 KVM、Xen 這類核心層級的虛擬化
- 依自己的電腦(Windows、macOS Intel、Apple 晶片 Mac、Linux)選擇合適的虛擬化軟體
- 比較伺服器版與桌面版的特性、適用情境與生命週期
- 在 Linux 裡用指令確認自己是否在虛擬機中,並查看 CPU、記憶體與硬碟資源
安裝之前先想清楚三件事
動手安裝之前,先決定三件事:
- 裝在哪裡:直接裝在一台實體電腦上、裝在虛擬機裡,還是租一台雲端主機
- 裝哪一種版本:伺服器版(沒有圖形介面)還是桌面版(有圖形介面)
- 裝哪一個發行版本與版本號:上一課的建議是選有長期支援(LTS)的版本
學習階段最推薦的做法是虛擬機:在自己的電腦裡開一台虛擬電腦,裡面裝什麼、弄壞了都不影響原本的系統, 還可以先存一個快照(snapshot),出問題就還原。
虛擬化:一台電腦當好幾台用
虛擬化是用軟體模擬出一台完整的電腦(CPU、記憶體、硬碟、網路卡),讓另一套作業系統在裡面執行。 負責模擬與分配資源的軟體叫做 Hypervisor(虛擬機監視器)。你原本的系統叫主機(host),虛擬機裡的系統叫客體(guest)。
Hypervisor 大致分成兩種:
| 類型 | 說明 | 例子 |
|---|---|---|
| 裝在作業系統上的應用程式 | 像一般軟體一樣安裝,用視窗操作虛擬機,適合個人電腦 | VirtualBox、VMware Workstation Pro、VMware Fusion、UTM |
| 核心層級(直接管理硬體) | 是作業系統核心的一部分,或直接裝在硬體上,效能高,常用於伺服器與雲端 | KVM、Xen、Microsoft Hyper-V |
KVM(Kernel-based Virtual Machine)由 Avi Kivity 在 Qumranet 公司開發,2007 年 2 月隨 Linux 核心 2.6.20 發布,從此 Linux 核心本身就具備虛擬化能力; Qumranet 在 2008 年被 Red Hat 收購。Xen 現在由 Linux 基金會底下的 Xen Project 開發。兩者都支援完全虛擬化與半虛擬化, 差別在於 KVM 把 Linux 核心直接變成 Hypervisor,Xen 則是一個獨立的 Hypervisor 層,再由一台特權的虛擬機負責管理。
要讓虛擬機跑得順,CPU 必須支援硬體虛擬化(Intel 稱為 VT-x,AMD 稱為 AMD-V),並在電腦的 BIOS/UEFI 設定中開啟。
選一套虛擬化軟體
| 軟體 | 開發者 | 主機平台 | 授權 |
|---|---|---|---|
| VirtualBox | Oracle | Windows、Linux、macOS(Intel 與 Apple 晶片;Apple 晶片從 7.1 版開始支援) | 主程式為 GPL v3 開放原始碼;另外的 Extension Pack 採 PUEL 授權,個人與教育使用免費 |
| VMware Workstation Pro | Broadcom | Windows、Linux | 2024 年 11 月起個人、教育與商業使用都免費;需在 Broadcom 網站註冊帳號下載 |
| VMware Fusion | Broadcom | macOS(Intel 與 Apple 晶片) | 同 Workstation Pro |
| UTM | 開放原始碼社群 | macOS | 免費開放原始碼(從官網或 GitHub 下載);Mac App Store 版付費,差別是可自動更新 |
| WSL 2 | Microsoft | Windows 10/11 | Windows 內建;在輕量虛擬機裡執行真正的 Linux 核心,沒有完整的虛擬機視窗與安裝流程 |
| KVM(搭配 virt-manager) | Linux 核心 | Linux | 核心內建,virt-manager 提供圖形化的管理介面 |
Apple 晶片(M 系列)Mac 要特別注意:CPU 是 ARM 架構,虛擬機裡要裝 ARM64(arm64)版本的 Ubuntu。 Ubuntu Server 有 arm64 的安裝映像檔;桌面版的通用 ARM64 安裝映像檔從 Ubuntu 24.10 開始提供。在 Apple 晶片上模擬 x86 的系統雖然可行,但速度會慢很多。
授權條款與支援平台會變動,下載前以各軟體官方網站的說明為準。
讀懂這些輸出
| 指令 | 看什麼 | 模擬器的結果 |
|---|---|---|
systemd-detect-virt |
虛擬化的種類 | oracle 代表 VirtualBox;VMware 會顯示 vmware、KVM 顯示 kvm、WSL 顯示 wsl,實體電腦顯示 none |
hostnamectl |
Virtualization: 這一行 |
同上,另外列出作業系統與核心版本 |
lscpu |
CPU(s):、Architecture: |
2 顆 CPU、x86_64(Apple 晶片 Mac 上的 ARM 虛擬機會是 aarch64) |
free -h |
Mem: 的 total 與 available |
總共約 3.8Gi,可用約 2.7Gi |
df -h |
根目錄 / 那一列 |
大小 25G,已用 26% |
lsblk |
磁碟與分割區 | 一顆 25G 的 sda,分成 /boot/efi 與 / 兩個分割區 |
-h(human-readable)讓數字以 K、M、G 為單位顯示,比較好讀。虛擬機分到的資源可以之後在虛擬化軟體裡調整,但硬碟只適合加大,縮小比較麻煩,一開始就要預留足夠的空間。
想一想:虛擬化
在一台 Linux 上執行 systemd-detect-virt,輸出是 none,代表什麼?
關於 KVM 與 Xen,下列何者正確?
用 Apple 晶片(M 系列)的 Mac 建立 Ubuntu 虛擬機,應該下載哪一種安裝映像檔?
伺服器版與桌面版
| 伺服器版(Server) | 桌面版(Desktop) | |
|---|---|---|
| 介面 | 沒有圖形介面,全部用終端機操作 | 有完整的圖形介面(Ubuntu 用 GNOME 桌面) |
| 軟體 | 使用穩定版本的核心與套件 | 硬體與多媒體支援較完整,方便日常使用 |
| 資源需求 | 較少;官方文件列出 Ubuntu 24.04 Server 以 ISO 安裝時最少需要 1.5 GB 記憶體 | 較多,一般建議 4 GB 以上的記憶體與 25 GB 以上的硬碟空間 |
| 適合 | 網站、資料庫等需要長時間不停機、高流量的服務 | 學習、日常使用、需要圖形介面的開發工作 |
| 代表 | Ubuntu Server、Debian、RHEL、Rocky Linux、AlmaLinux | Ubuntu Desktop、Ubuntu Flavours、Fedora Workstation、Debian |
兩者用的是同一套套件倉庫,伺服器版之後也可以再裝桌面環境,反過來也一樣。學習這條路徑:
- 第一次接觸 Linux、想看得到畫面:裝 Ubuntu Desktop LTS,從桌面打開「終端機」練習
- 想練習接近實際伺服器的環境:裝 Ubuntu Server LTS,再從自己的電腦用 SSH 連進去(第 05 課)
規劃建議
- 選擇有長期支援的版本(例如 Ubuntu 24.04 LTS 或 26.04 LTS),不要用已經停止支援的版本
- 避免使用特殊硬體,或先確認發行版本支援它
- 依用途規劃硬碟分割;學習用的虛擬機用安裝程式的預設值即可
- 留意系統安全模組(例如 Ubuntu 的 AppArmor)的預設設定,不要一遇到問題就把它關掉
- 不要用 root 帳號直接登入操作:平常用一般帳號,需要時再用
sudo(第 04 課說明)
| 環境 | 適用情境 | 建議 |
|---|---|---|
| 虛擬化主機 | 短時間內建立、執行大量虛擬機 | 實體主機的 CPU 與記憶體要充足;Ubuntu Server LTS 搭配 KVM |
| 伺服器版 | 高流量、不停機的正式服務 | 穩定且有長期支援的發行版本,依服務性質規劃磁碟分割;Ubuntu Server LTS、RHEL 系列 |
| 桌面版 | 圖形介面、多媒體、第三方軟體 | 有長期支援的版本;使用第三方套件前,先確認它支援這個版本;Ubuntu Desktop LTS、Ubuntu Flavours |
這條路徑的範例輸出以 Ubuntu 24.04 LTS 為準;用 26.04 LTS 練習,指令的用法大多相同,個別輸出的版本號會不同。
想一想:選擇版本
要架設一台長時間運作、不需要螢幕的網站伺服器,比較合適的是?
下列哪一項是規劃 Linux 系統時的好習慣?
重點精華回顧
- 安裝前決定:裝在哪裡(實體、虛擬機、雲端)、伺服器版或桌面版、哪個 LTS 版本。學習階段推薦虛擬機。
- Hypervisor 分兩類:裝在作業系統上的(VirtualBox、VMware Workstation Pro/Fusion、UTM)與核心層級的(KVM、Xen、Hyper-V)。
- KVM 從 2007 年的 Linux 2.6.20 起內建於核心;CPU 要支援並開啟 VT-x/AMD-V。
- Apple 晶片 Mac 要裝 arm64 版本的 Ubuntu;Windows 可以用 WSL 2 快速練習指令。
systemd-detect-virt、hostnamectl看是否在虛擬機;lscpu、free -h、df -h、lsblk看 CPU、記憶體、硬碟。- 伺服器版:無圖形介面、穩定、適合不停機的服務;桌面版:圖形介面、硬體與多媒體支援好。
- 選有長期支援的版本,避免用 root 直接登入操作。