Livepatch 是一项由 Canonical 提供的黑科技,它允许你在不重启系统的情况下,为正在运行的 Linux 内核应用关键的安全补丁。对于需要 24/7 不间断运行的服务器或不想因为更新内核而中断工作的开发者来说,简直是救星。
1. Livepatch 的工作原理
通常情况下,更新内核需要经历:下载新内核 -> 安装 -> 重启 -> 加载新内核。而 Livepatch 采用了 ftrace 技术:
- 函数重定向:当内核发现某个函数存在安全漏洞时,Livepatch 会将该补丁作为一个内核模块加载。
- 动态替换:通过 ftrace 机制,系统会将指向“有缺陷函数”的调用指令,动态重定向到内存中“已修复函数”的地址。
- 无感修复:整个过程在毫秒级完成,运行中的程序(如数据库、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
- 访问 ubuntu.com/pro。
- 注册并登录后,在 Dashboard 中找到你的 Free Personal Token。
3.2在终端绑定并启用
在 Ubuntu 26.04 中,操作非常简单:
- 安装 Ubuntu 优势工具包(通常系统自带):
1
| sudo apt update && sudo apt install ubuntu-advantage-tools
|
- 使用 Token 激活 Ubuntu Pro:
1
| sudo pro attach <你的_TOKEN_字符串>
|
- 确认 Livepatch 已开启:
通常 attach 成功后 Livepatch 会自动启用。你可以手动检查:
如果显示 livepatch: enabled,说明大功告成。
4. 常用管理命令
1
| canonical-livepatch status
|
- 手动检查更新:
强制 Livepatch 立即检查是否有新的内核安全补丁:
1
| sudo canonical-livepatch refresh
|
1
| journalctl -u canonical-livepatch
|
5. 局限性
虽然 Livepatch 很强大,但它不能完全取代重启:
- 补丁范围:它只修复关键(Critical)或高危(High)级别的内核安全漏洞。对于常规的功能改进或驱动更新,仍需重启以加载新内核。
- 堆叠限制:随着时间的推移,内存中累积的动态补丁会越来越多。建议在每隔几个月后的例行维护中,还是重启一次系统以进入最新的物理内核。