unattended-upgrades 不支持热修补,仅能自动安装完整内核包并需重启生效;热修补(如 livepatch/kpatch)是独立运行时机制,须单独启用和管理。

Unattended-Upgrades 本身不支持热修补(Livepatch),它只负责自动下载和安装软件包更新,包括内核安全补丁——但这类补丁仍是传统冷更新:需安装新内核、更新引导配置、重启生效。热修补(如 Livepatch、kpatch)是独立于包管理器的运行时机制,必须单独启用和管理。
为什么 Unattended-Upgrades 不能做热修补
Unattended-Upgrades 是 Debian/Ubuntu 的自动化包更新工具,底层调用 apt。它处理的是 完整的内核二进制包(如 linux-image-6.1.0-27-amd64),这类更新:
- 必须写入 /boot/ 并重建 initramfs
- 依赖 GRUB 启动项切换
- 无法绕过重启加载新内核代码
- 不涉及函数级运行时替换,与 ftrace/kprobe 无关
真正实现“自动热修补”的正确路径
要达成“核心安全补丁自动热修补”,应放弃让 Unattended-Upgrades 承担该职责,转而组合使用:
-
Unattended-Upgrades(仅用于感知):保持开启,但禁用内核自动安装(
Unattended-Upgrade::Install-On-Shutdown "false"),让它每天扫描并报告待修复 CVE 对应的内核包升级可用性 - Canonical Livepatch(Ubuntu)或 kpatch(RHEL/Rocky)服务:独立部署,配置为自动拉取并加载官方签名热补丁模块
- 监控联动脚本:当 Unattended-Upgrades 检测到高危内核更新(如含 Dirty Pipe 修复)时,触发 livepatch 状态检查;若未启用或补丁缺失,则告警人工介入
Ubuntu 系统实操示例
以 Ubuntu 22.04+ 为例,完成闭环:
- 确保已启用 Livepatch:
sudo ua attach <token> && sudo ua enable livepatch</token> - 验证热补丁运行:
sudo canonical-livepatch status | grep -E "(status|kernel|patched)"—— 显示Kernel patched: true即生效 - 保留 Unattended-Upgrades 作为兜底:它会在后台静默下载新内核包,一旦某次 Livepatch 暂无对应补丁(例如全新 CVE 尚未发布热补丁),运维可快速人工安装+重启
关键提醒
热补丁不是万能的:
- 仅覆盖部分 CVE(主要是内存越界、竞态类漏洞),不适用于 ABI 变更、驱动重写等深度修改
- Alibaba Cloud Linux、SUSE Live Patching、Red Hat Kernel Live Patching 均有版本和架构限制,需严格匹配内核小版本号
- 加载热补丁后仍需验证:
dmesg | grep -i livepatch、cat /proc/sys/kernel/livepatch/enabled











