SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor · 更新于 2026-09-13

Ubuntu服务器应选GA还是HWE内核?如何查看

Ubuntu Server 默认使用 GA 内核,HWE 需单独安装。本文提供命令识别当前轨道,并说明 HWE 约每 6 个月升级内核和重启一次。

小版本发布会为我的 Ubuntu 服务器安装新内核吗?

不会。在 Ubuntu 服务器上,选择 HWE 内核还是 GA 内核,取决于您安装的相应软件包;小版本发布不会替您安装 HWE 内核。“enablement”一词在发行说明中有两种不同含义,这正是混淆的起点。硬件启用(HWE)指较新的内核分支。升级启用则是另一件事,指从一个 LTS 版本升级到下一个 LTS 版本的路径开放。已经运行且使用 GA 内核的服务器,在其 LTS 版本的每个小版本发布中都会继续使用 GA 内核。

GA 与 HWE 内核轨道

GA(general availability,正式发布)是 Ubuntu LTS 在发布当天附带的内核。该内核在此版本的标准支持周期内保持相同的上游内核版本。安全修复和错误修复会回移植到该内核中,因此 uname -r 中的末尾数字每隔几周会变化。字符串开头的上游版本不会变化。

HWE(hardware enablement,硬件支持)是另一条轨道。Canonical 会将后续每个临时版本中的内核回移植到 LTS,因此启用内核大约每 6 个月升级到更新的上游版本。Canonical 将此称为滚动更新模型。桌面镜像默认安装启用内核。服务器和云镜像默认安装 GA,启用内核栈则需要选择安装相应的软件包。

两者的取舍很明确。GA 多年内都不会更换内核版本。HWE 提供更新的驱动程序和内核功能,但大约每 6 个月需要升级版本并重启一次。

我当前使用的是哪个内核版本轨道?

uname -r 中不包含 hwe 一词。两个轨道打印的版本都以 -generic 结尾,因此仅凭正在运行的内核名称无法回答这个问题。已安装的元软件包可以回答。

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 会为你指定的每个软件包打印一行 Installed:。如果 Installed: (none) 对应 -hwe- 软件包,并且 linux-generic 对应的启用版本存在,则表示你使用的是 GA 轨道。反之,则表示你使用的是 enablement 轨道。如果两者都有版本,说明两个内核都已安装在磁盘上;GRUB 会启动更新的内核,也就是 enablement 内核。

某些服务商镜像安装的是 linux-image-virtual,而不是 linux-generic。这是为虚拟机提供的精简模块集,并且有对应的 enablement 变体。不要猜软件包名称。先让系统显示已选择的内核软件包,再查询软件包归档中适用于当前发行版的 enablement 软件包。

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 元软件包当前指向的内核映像。ls /boot/vmlinuz-* 显示实际已安装且可启动的内核,通常比预期的更多。

每个点版本对各个轨道的作用

在 GA 轨道中,点版本不会改变正在运行的服务器。点版本提供更新后的安装镜像,以及 apt 已经持续提供的更新。它决定新构建的机器会安装什么,而不是现有机器运行什么。Ubuntu 点版本实际会改变什么介绍了其余内容。

在 enablement 轨道中,点版本发布时会移动元软件包。linux-image-generic-hwe-24.04 会将依赖项改为较新的内核镜像,下一次普通更新就会安装该镜像。apt 手册页明确说明了为什么普通的更新操作就足够:“如果满足依赖项需要,系统会安装新软件包,但绝不会删除现有软件包。”因此,apt upgrade 会拉取新内核。只有在下一次重启后,新内核才会成为正在运行的内核。

无人参与任务是否会替你执行此操作,取决于你的配置。阅读 /etc/apt/apt.conf.d/50unattended-upgrades,并查看其中的 Allowed-Origins 块。随系统提供的默认配置只使用 security pocket,因此除非有人扩大了该列表,否则不会自动应用来自 updates pocket 的 enablement 升级。请检查文件,不要想当然地判断。

支持期限也由相同的机制决定。GA 内核在 LTS 版本的标准支持期内受支持,无需你执行任何操作。每个 enablement 内核的支持期限持续到下一个 enablement 内核替换它为止,因此 HWE 只有在你持续完成每一步升级时才属于受支持的轨道。如果在该轨道上落后两步,你运行的内核就不再获得修复,而 apt 不会对此给出任何提示。

不要从任何博客文章(包括本文)获取确切日期。Canonical 会在 Ubuntu 内核生命周期页面发布每个内核版本的终止日期,并在 Ubuntu 发布周期页面发布版本和支持日期。将这些页面与服务器上 uname -rgrep VERSION_ID /etc/os-release 的输出进行对照。只有这两类事实能够准确描述你的机器。

为什么 HWE 内核很少对 VPS 有帮助

HWE 用于硬件。笔记本或物理服务器如果配备了比 LTS 内核更新的 NIC(网络接口卡)、存储控制器或 GPU,在新内核发布前可能无法正常工作。启用内核就是为此提供修复的。在真实硬件上,它往往决定机器能否正常运行。

租用的 VPS 不存在这个问题,因为它看不到这些硬件。虚拟机只会看到一组精简且有意保持较旧的虚拟设备。请检查你的设备。

sudo apt install -y pciutils
lspci -nnk

lspci -nnk 会列出每个设备,以及其下方绑定的内核驱动。在大多数 VPS 实例中,列表很短:网络设备使用 virtio_net,磁盘使用 virtio_blkvirtio_scsi。这些驱动已经包含在主线内核中多年。虚拟设备被设计为稳定接口,这是有意为之,因为服务商将 VPS 迁移到其他物理硬件后,虚拟机仍必须继续运行。因此,在租用服务器上,人们安装启用内核的主要原因通常并不存在。

但代价仍然存在。每次启用内核都会引入一个新的内核二进制文件,并需要单独重启;这还不包括你为安全内核更新已经执行的重启。对于没有备用节点可进行故障转移的单台 VPS,重启就是需要安排并监控的停机时间。实时内核修补 可以减少部分安全更新所需的重启,但不能省去版本升级所需的重启,因为版本升级使用的是不同的内核,而不是对现有内核进行修补。

何时应切换到 enablement 内核

以下4种情况,答案明确是“应该切换”。

  • 虚拟机监控程序提供了当前内核无法驱动的设备。具体表现是:设备已出现在 lspci -nnk 中,但其下没有 Kernel driver in use: 行,同时接口未出现在 ip -brief link 中,或磁盘未出现在 lsblk 中。
  • 运行的软件明确要求最低内核版本高于当前版本。容器运行时、数据库和 eBPF 工具都可能有此要求。将供应商声明的最低版本与 uname -r 进行比较,并以供应商要求为准。
  • 你遇到的错误已在 GA 版本之后于上游修复,但修复未回移到当前内核。切换前确认 enablement 版本确实包含该修复,否则你只能接受重启成本并继续承受该错误。
  • 你需要 GA 版本之后才加入的文件系统或网络功能,并且该功能正是服务器存在的原因。

如果以上情况都不适用于你的服务器,GA 就是正确选择。继续使用 GA 是经过判断的决定,而不是疏忽。

切换方法,以及重启后需要检查的内容

首先检查可用空间。如果 /boot 是一个较小的独立分区,添加第二个内核条目可能会将其填满,随后 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-pager

uname -r 输出的上游版本应高于之前的版本。网络和磁盘列表应与之前完全一致,因为其中仍是相同的虚拟设备。如果此处缺少某个网络接口,这是唯一需要重点关注的故障,因为这通常意味着服务器只能通过提供商控制台访问。journalctl -k -b 0 -p err 输出本次启动中级别为 error 的内核消息;在运行正常的 VPS 上,输出应为空或接近为空。在 VPS 上读取内核日志 解释了这些嘈杂日志行的含义。不要在当天删除旧内核。它是回退路径。

新内核运行异常时如何返回

旧内核仍然安装在系统中,也仍在 GRUB 菜单里。打开服务商的控制台,重启系统,然后在“Advanced options for Ubuntu”下选择上一个内核。这样可以确认旧内核仍能启动。让该选择在每次重启后保持不变是另一项工作,具体请参阅固定 VPS 的启动内核。如果机器始终无法恢复,控制台显示 GRUB 提示符或内核崩溃,请参阅内核更新后无法启动的 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

删除元软件包后,下一次启用步骤将不会到达。此操作不会删除已经安装的内核映像,因此不会改变正在运行的系统。重启后,确认 uname -r 再次显示 GA 版本,然后运行 sudo apt autoremove --purge,清理不再使用的内核映像。Ubuntu 的内核钩子会将正在运行的内核排除在该列表之外。清理 /boot 中的旧内核介绍了更棘手的情况:在执行到这里之前,/boot 已经被占满。

还需要了解一点:内核跟踪会在下一个 LTS 版本时自动确定。升级到下一个 LTS 后,系统会获得该版本的 GA 内核。它比当前运行的 GA 内核更新,并会重新开始支持周期。如果你正计划升级,并因此关注点版本,请参阅将 24.04 升级到 26.04,其中介绍了具体流程。在此之前继续使用 GA 内核,对于租用的服务器来说是正常且合理的选择。

FAQ

点版本会更改已安装服务器上的内核吗?

在 GA 轨道上不会。点版本主要提供更新后的安装映像,因此它决定新建机器获得什么版本。现有服务器继续使用其已安装元软件包名称所指定的轨道。如果已安装 linux-...-hwe-... 软件包,那么会更改:点版本发布时,该软件包会指向更新的内核映像,下一次 apt upgrade 会安装它。新内核会在下次重启时开始运行,而不是在 apt 完成安装时立即运行。

如何判断当前运行的是 HWE 内核还是 GA 内核?

运行 apt-cache policy linux-generic linux-generic-hwe-24.04,将 24.04 替换为您自己的发行版编号。其 Installed: 行包含实际版本号的软件包,就是您当前使用的轨道。不要从 uname -r 判断,因为运行中的内核名称在两个轨道上都以 -generic 结尾,并且从不包含 hwe。如果两个软件包都未安装,请运行 apt-mark showmanual | grep '^linux-',因为某些提供商映像使用 linux-image-virtual 系列。

HWE 内核是否比 GA 内核稳定性更差?

每个启用内核都是受支持的 Ubuntu 内核,因此这不是质量问题,而是变更频率问题。GA 内核多年保持同一个上游版本,因此您测试过的行为会保持不变。启用内核大约每6个月迁移到更新的上游版本,每次迁移都可能导致驱动默认值或 sysctl 在您的工作负载下发生变化。对于很少维护的服务器,较少的变动通常比更新的驱动更有价值。

我的 VPS 应该使用 HWE 内核吗?

通常不应该。虚拟机看到的是一组固定的虚拟设备,主要是 virtio;这些设备的驱动已经在内核中存在多年,因此启用轨道所提供的硬件支持对 VPS 没有实际收益。额外的重启仍然会发生。只有在有明确原因时才切换:当前内核无法驱动某个设备,或者您必须运行的软件明确要求最低内核版本。

如果安装启用内核后从不重启,会发生什么?

新的内核映像会写入 /boot 并添加到 GRUB 菜单,而服务器会继续运行旧内核。uname -r 才能准确反映当前运行的内核,不能以软件包列表为准。Ubuntu 会在已安装软件包需要重启才能生效时创建 /var/run/reboot-required,因此 ls -l /var/run/reboot-required 表示等待重启。在完成重启前,您会占用新内核所需的磁盘空间,却无法获得其中的修复。

#ubuntu#kernel#lts#server-maintenance#upgrades