ubuntu26.04之Livepatch在线更新内核补丁

Livepatch 是一项由 Canonical 提供的黑科技,它允许你在不重启系统的情况下,为正在运行的 Linux 内核应用关键的安全补丁。对于需要 24/7 不间断运行的服务器或不想因为更新内核而中断工作的开发者来说,简直是救星。


1. Livepatch 的工作原理

通常情况下,更新内核需要经历:下载新内核 -> 安装 -> 重启 -> 加载新内核。而 Livepatch 采用了 ftrace 技术:

  1. 函数重定向:当内核发现某个函数存在安全漏洞时,Livepatch 会将该补丁作为一个内核模块加载。
  2. 动态替换:通过 ftrace 机制,系统会将指向“有缺陷函数”的调用指令,动态重定向到内存中“已修复函数”的地址。
  3. 无感修复:整个过程在毫秒级完成,运行中的程序(如数据库、Web 服务)完全不会察觉到中断。

2. 在 Ubuntu 26.04 上使用 Livepatch 的前提

  • Ubuntu Pro 订阅:Livepatch 是 Ubuntu Pro 服务的一部分。
  • 个人用户:免费(最多支持 5 台机器)。
  • 企业用户:需要付费订阅。
  • 64 位架构:支持 x86_64 和 ARM64(26.04 强化了对 ARM 的支持)。
  • 官方内核:必须使用Ubuntu官方仓库提供的通用(Generic)内核。

3. 如何启用 Livepatch(分步指南)

3.1获取 Token

  1. 访问 ubuntu.com/pro
  2. 注册并登录后,在 Dashboard 中找到你的 Free Personal Token

3.2在终端绑定并启用

在 Ubuntu 26.04 中,操作非常简单:

  1. 安装 Ubuntu 优势工具包(通常系统自带):
1
sudo apt update && sudo apt install ubuntu-advantage-tools
  1. 使用 Token 激活 Ubuntu Pro
1
sudo pro attach <你的_TOKEN_字符串>
  1. 确认 Livepatch 已开启
    通常 attach 成功后 Livepatch 会自动启用。你可以手动检查:
1
pro status

如果显示 livepatch: enabled,说明大功告成。


4. 常用管理命令

  • 检查补丁状态
    查看当前应用了哪些内核补丁:
1
canonical-livepatch status
  • 手动检查更新
    强制 Livepatch 立即检查是否有新的内核安全补丁:
1
sudo canonical-livepatch refresh
  • 查看详细日志
    如果怀疑补丁没生效:
1
journalctl -u canonical-livepatch

5. 局限性

虽然 Livepatch 很强大,但它不能完全取代重启

  • 补丁范围:它只修复关键(Critical)高危(High)级别的内核安全漏洞。对于常规的功能改进或驱动更新,仍需重启以加载新内核
  • 堆叠限制:随着时间的推移,内存中累积的动态补丁会越来越多。建议在每隔几个月后的例行维护中,还是重启一次系统以进入最新的物理内核。