Ubuntu Server 應選 GA 還是 HWE kernel?
Ubuntu Server 預設使用 GA,但 HWE 約每 6 個月更新一次 kernel。查看 VPS 目前的 meta-package,了解是否值得為較新驅動程式重新開機。
Ubuntu 的 point release 會在伺服器上安裝新的 kernel 嗎?
不會。在 Ubuntu server 上,選擇 HWE kernel 或 GA kernel 是由你安裝的套件決定,point release 不會替你安裝 HWE kernel。Release notes 中的「enablement」一詞有兩種不同用途,這正是混淆的來源。Hardware enablement(HWE)是較新的 kernel 發行軌道。Upgrade enablement 則是另一個時間點,指從一個 LTS 開放升級至下一個 LTS。已在執行中且使用 GA 的 server,會在其 LTS 的每個 point release 期間持續使用 GA。
GA 與 HWE kernel 軌道
GA(general availability)是 Ubuntu LTS 在發布日提供的 kernel。它會在該版本的標準支援期間維持相同的 upstream kernel 版本。安全性修補與錯誤修正會回移植到其中,因此 uname -r 的最後一個數字每隔幾週就會變更。字串開頭的 upstream 版本不會變更。
HWE(hardware enablement)是另一條軌道。Canonical 會將後續每個 interim release 的 kernel 回移植到 LTS,直到下一個 LTS 的 kernel 為止。因此,在抵達最後一個版本前,enablement kernel 約每 6 個月升級至較新的 upstream 版本。Canonical 將此稱為 rolling update model。最終的 enablement kernel 就是下一個 LTS 的 GA kernel,並會在該 LTS 剩餘的支援期間維持相同的 upstream 版本,且與 GA 相同地取得修補。Desktop 映像預設安裝 enablement kernel。Server 與 cloud 映像預設安裝 GA,而 enablement stack 則是選用套件。
取捨很簡單。GA 提供多年不變的 kernel 版本。HWE 提供較新的驅動程式與 kernel 功能,但在軌道仍持續 rolling 時,約每 6 個月需要升級版本並重新開機。
我目前使用的是哪個 kernel track?
uname -r 絕不包含 hwe 這個詞。兩個 track 輸出的版本結尾都是 -generic,因此僅查看執行中的 kernel 名稱無法回答這個問題。已安裝的 meta-package 會告訴你更新跟隨哪個 track,再將它與 uname -r 比對,即可確認目前實際執行的是哪個 kernel。
uname -r
grep VERSION_ID /etc/os-release
apt-cache policy linux-generic linux-generic-hwe-24.04將 24.04 替換為 VERSION_ID 在你自己的機器上輸出的數字。apt-cache policy 會針對你指定的每個 package 輸出一行 Installed:。該行表示 package 已安裝,不代表其 kernel 正在執行。Installed: (none) 若顯示 -hwe- package 加上 linux-generic 的版本,表示你的更新跟隨 GA,前提是沒有安裝其他 enablement meta-package,例如 linux-virtual-hwe-24.04。下方的命令會進一步檢查這一點。反之則表示你跟隨 enablement track。如果兩者都帶有版本,代表兩個 kernel 都存在於磁碟中。在 Ubuntu 預設的 GRUB_DEFAULT=0 下,GRUB 會啟動最新的 kernel,也就是 enablement kernel;但如果有人將 GRUB_DEFAULT 設為特定項目或 saved,實際啟動的仍可能是 GA kernel。只有 uname -r 能告訴你目前正在執行的 kernel。
部分 provider image 安裝的是 linux-image-virtual,而不是 linux-generic。這是針對虛擬機器建立的精簡 module set,也有自己的 enablement variant。不要自行猜測名稱。先讓機器列出已選擇的 kernel package,再向 archive 查詢該 release 可用的 enablement package。
apt-mark showmanual | grep '^linux-'
apt-cache search linux-image | grep hwe
apt-cache depends linux-image-generic-hwe-24.04
dpkg -l 'linux-image-*' | grep '^ii'
ls /boot/vmlinuz-*apt-cache depends 會顯示 enablement meta-package 目前指向的 kernel image。如果該 image 的版本符合 uname -r,表示你正在執行 enablement kernel。ls /boot/vmlinuz-* 會顯示目前實際安裝且可啟動的 kernel,通常會比你預期的更多。
每個點版本對各個軌道的影響
在 GA 軌道上,點版本不會變更執行中伺服器的任何內容。點版本是重新整理的安裝映像,以及 apt 已經持續提供的更新。它決定新建機器會安裝什麼,而不是現有機器執行什麼。Ubuntu 點版本實際會變更什麼涵蓋其餘內容。
在 enablement 軌道上,meta-package 會在點版本發布日前的例行 kernel 更新週期中變更,而不是在發布日變更。除了第一個 LTS 點版本外,Canonical 會在每個 LTS 點版本前提前更新 enablement kernel。24.04.3 於 2025-08-07 發布,從 6.11 變更至 6.14 的作業原定在 2025.06.16 的 kernel SRU 週期進行。linux-image-generic-hwe-24.04 會將相依性變更為較新的 kernel image,而下一次例行更新執行時便會安裝該 image。apt 手冊頁明確說明為何執行一般更新即可完成此作業:「若為滿足相依性而有需要,會安裝新的套件,但絕不會移除現有套件。」因此,apt upgrade 會拉取新的 kernel。它只有在下次重新開機後才會成為執行中的 kernel。
在 24.04 上,這項滾動更新已經結束。截至 2026-10-12,amd64 上的 linux-generic-hwe-24.04 相依於 7.0 kernel image,而這是 26.04 的 GA kernel。從此之後,該軌道只會取得修正,不會再跳升至後續的 upstream 版本。
unattended 工作是否會替你完成這項作業,取決於你自己的設定。讀取 /etc/apt/apt.conf.d/50unattended-upgrades,並查看其中的 Allowed-Origins 區塊。隨附的預設設定允許 release 與 security pocket,並將 updates pocket 註解掉。這不會阻止 enablement 步驟,因為 Ubuntu 也會將包含 enablement 變更在內的 kernel meta-package 更新發布至 security pocket。截至 2026-10-12,linux-generic-hwe-24.04 版本 7.0.0-38.38~24.04.4 已發布於 noble-security。因此,在安裝 enablement meta-package 的預設設定下,unattended-upgrades 會自行安裝每個新的 enablement kernel。它仍然只有在重新開機後才會生效。請檢查檔案,不要自行假設結果。
支援期限同樣取決於這項機制。GA kernel 會在 LTS 發行版本的標準支援期間內獲得支援,你不需要採取任何動作。每個 enablement kernel 都會獲得支援,直到下一個 enablement kernel 取代它為止。最後一個是例外:它會在 LTS 剩餘期間獲得支援。在完成最後一步前,HWE 只有在你持續完成每個步驟時才是受支援的軌道。在該軌道上落後兩個步驟,表示你執行的 kernel 已不再取得修正,而 apt 不會對此發出任何提示。
不要從任何部落格文章取得確切日期,包括本文。Canonical 會在 Ubuntu kernel 生命週期頁面 發布每個 kernel 版本的結束日期,並在 Ubuntu 發行週期頁面 發布發行與支援日期。請將這些頁面的內容與伺服器上 uname -r 和 grep VERSION_ID /etc/os-release 的輸出互相比對。這兩項事實才是描述你這台機器的唯一依據。
為何 enablement kernel 很少能幫助 VPS
HWE 是為硬體而存在。若筆記型電腦或實體伺服器使用的 NIC(network interface card)、儲存控制器或 GPU 比 LTS kernel 新,在較新的 kernel 到來前,系統可能無法正常運作。enablement kernel 就是用來解決這個問題。在實體硬體上,它往往決定機器能否正常運作。
租用的 VPS 沒有這個問題,因為它看不到那些硬體。客體系統只會看到一組精簡且刻意維持舊版的虛擬裝置。請檢查你的 VPS。
sudo apt install -y pciutils
lspci -nnklspci -nnk 會列出每個裝置,以及其下方繫結的 kernel driver。在大多數 VPS 執行個體上,清單都很短:網路使用 virtio_net,磁碟則使用 virtio_blk 或 virtio_scsi。這些 driver 已經存在於 mainline kernel 多年。虛擬裝置刻意採用穩定的介面,因為供應商將 VPS 移至不同實體硬體時,客體系統仍必須持續運作。因此,人們安裝 enablement kernel 的主要理由,在租用伺服器上通常不存在。
但成本仍然存在。每個 enablement 步驟都會引入一個新的 kernel binary,並需要重新開機;這是在既有的 security kernel 更新所需重新開機之外增加的操作。單一 VPS 沒有其他系統可供 failover 時,重新開機就代表必須安排並監控的停機時間。即時 kernel 修補可以減少部分 security kernel 更新所需的重新開機,但無法免除版本升級所需的重新開機,因為那是不同的 kernel,而不是套用修補程式的既有 kernel。
何時應切換至 enablement kernel
以下 4 種情況,答案確實是「應該切換」。
- Hypervisor 提供的裝置無法由目前的 kernel 驅動。具體症狀是介面未出現在
ip -brief link中,或磁碟未出現在lsblk中;但裝置存在於lspci -nnk,且其下沒有Kernel driver in use:行。 - 您執行的軟體文件要求的最低 kernel 版本高於目前版本。Container runtime、資料庫與 eBPF 工具都可能有此要求。請將供應商列出的最低版本與
uname -r比較,並以供應商資訊為準。 - 您遇到的錯誤已在 GA 版本之後由 upstream 修正,但修正內容尚未 backport。切換前,請確認 enablement 版本確實包含該修正;否則就必須接受重新啟動,並繼續承受這項錯誤。
- 您需要在 GA 版本之後才加入的檔案系統或網路功能,而且該功能正是這台伺服器存在的原因。
如果以上情況都不適用於您的伺服器,GA 就是正確選擇。維持現狀是經過判斷的決定,不代表疏忽。
切換方式,以及重新開機後的檢查項目
先檢查可用空間。如果 /boot 是獨立的小型分割區,新增第二個 kernel 項目可能會將其填滿,導致 apt 停在設定未完成的狀態,並顯示 No space left on device。
df -h /boot
sudo apt update
sudo apt install --install-recommends linux-generic-hwe-24.04
ls /boot/vmlinuz-*
sudo reboot主機恢復後,確認哪些內容已變更,哪些內容沒有變更。
uname -r
ip -brief link
lsblk
journalctl -k -b 0 -p err --no-pageruname -r 現在應與映像檔 apt-cache depends linux-image-generic-hwe-24.04 所指定的版本一致。以目前的 24.04 為例,這表示 upstream 版本會高於先前的版本,改用 7.0 而不是 6.8。若某個發行版本的 enablement track 尚未更新,upstream 版本可能維持不變:截至 2026-10-12,26.04 的 linux-generic 與 linux-generic-hwe-26.04 都依賴 7.0.0-38.38。網路與磁碟清單應與原先完全一致,因為相同的虛擬裝置仍然存在。若這裡缺少網路介面,這是唯一需要特別注意的故障,因為通常表示該主機只能透過供應商的主控台存取。journalctl -k -b 0 -p err 會以 error 優先等級及以上的層級,列出本次開機的 kernel 訊息(err、crit、alert 和 emerg);健康的 VPS 通常不會有輸出,或僅有少量輸出。閱讀 VPS 上的 kernel 日誌 說明這些大量訊息的含義。不要在同一天刪除舊的 kernel。它是返回舊環境的方式。
新核心行為異常時如何退回
舊核心仍已安裝,也仍列在 GRUB 選單中。開啟供應商的主控台,重新開機,然後在「Advanced options for Ubuntu」下選取上一個核心。完成一次即可確認舊核心仍能啟動。若要讓這個選擇在每次重新開機後持續生效,則是另一項工作,請參閱固定 VPS 要啟動的核心。如果機器始終無法恢復,且主控台顯示 GRUB 提示字元或 kernel panic,請參閱核心更新後無法啟動的 VPS,其中說明復原流程。
成功以可正常運作的核心啟動後,將套件切回原本狀態。
sudo apt install linux-generic
sudo apt remove linux-generic-hwe-24.04 linux-image-generic-hwe-24.04 linux-headers-generic-hwe-24.04
sudo reboot移除 meta-package 後,下一次 enablement 步驟就不會再安裝。這不會移除已安裝的核心映像,因此執行中的系統不會立即變更。重新開機後,確認 uname -r 再次顯示 GA 版本。sudo apt autoremove --purge 會清除部分舊映像,但不一定會清除你剛離開的版本。APT 一律保留目前執行中的核心與最新安裝的核心,而 enablement 映像通常就是最新版本。確認 uname -r 顯示目前並未使用該核心後,依 dpkg -l 'linux-image-*' 顯示的版本,按名稱移除該版本的 linux-image-、linux-modules- 與 linux-modules-extra- 套件。若 /boot 在完成上述步驟前已填滿,請參閱清除 /boot 中的舊核心,其中說明較複雜的處理方式。
最後還有一點需要知道:核心分支會在下一個 LTS 自動解決。升級到下一個 LTS 後,系統會使用該版本的 GA 核心;它比目前使用的 GA 核心更新,也會重新開始支援期限。如果你正因規劃這項升級而考慮 point release,請參閱將 24.04 升級至 26.04,其中說明完整流程。在此之前維持 GA 核心,對租用的伺服器而言是正常且合理的選擇。
FAQ
Point release 會變更已安裝伺服器上的 kernel 嗎?
GA track 不會。Point release 主要是更新安裝映像,因此決定的是新建機器取得的內容。現有伺服器會沿用其已安裝 meta-package 名稱所指定的 track。若已安裝 linux-...-hwe-... package,enablement 版本會以一般 kernel update 的形式提供,且會在所屬的 point release 之前發布;下一次執行 apt upgrade 時就會安裝。新的 kernel 會在下次重新開機後開始執行,不是在 apt 完成時立即生效。
如何確認目前執行的是 HWE kernel 還是 GA kernel?
執行 apt-cache policy linux-generic linux-generic-hwe-24.04,並以自己的 release number 取代 24.04。在其 Installed: 行上具有實際版本的 package,就是系統所追蹤更新的 track。這無法證明目前正在執行的 kernel,因此請將 uname -r 與 image apt-cache depends linux-image-generic-hwe-24.04 名稱比對。不要只從 uname -r 判斷 track,因為兩個 track 的執行中 kernel 名稱結尾都是 -generic,且都不會包含 hwe。若兩個 package 都未安裝,請執行 apt-mark showmanual | grep '^linux-',因為部分 provider image 會使用 linux-image-virtual family。
HWE kernel 是否比 GA kernel 不穩定?
每個 enablement kernel 都是受支援的 Ubuntu kernel,因此這不是品質問題,而是變更幅度的問題。GA kernel 多年維持同一個 upstream version,因此經過測試的行為可以保持不變。Enablement kernel 約每 6 個月升級至較新的 upstream version,直到達到下一個 LTS 的 kernel;每次升級都可能讓 driver 預設值或 sysctl 在你的工作負載下發生變化。對於很少維護的伺服器而言,較少的變動通常比較新的 driver 更有價值。
我的 VPS 應該使用 HWE kernel 嗎?
通常不應該。虛擬機器會看到固定的一組虛擬裝置,主要是 virtio,而這些裝置的 driver 多年前就已納入 kernel。因此,enablement track 所提供的硬體支援對 VPS 沒有實際助益。額外的重新開機仍然會發生。只有在有明確原因時才切換,例如目前的 kernel 無法驅動某個裝置,或必須執行的軟體有明文規定的最低 kernel version。
如果安裝 enablement kernel 後一直不重新開機,會發生什麼事?
新的 kernel image 會寫入 /boot 並加入 GRUB 選單,而伺服器會繼續執行舊的 kernel。uname -r 才能準確反映目前執行的 kernel,不能以 package 清單為準。Ubuntu 會在已安裝的 package 需要重新開機才能生效時建立 /var/run/reboot-required,因此 ls -l /var/run/reboot-required 可告訴你是否需要重新開機。在重新開機前,你會持續占用新 kernel 所需的磁碟空間,但無法取得其中的修正。