修漏洞不想半夜停机:openEuler SysCare热补丁实操走查
服务器爆了内核或基础库的漏洞,传统修法是打补丁再重启——可数据库、网关这类业务哪敢说停就停,于是补丁一拖几个月。openEuler 给的答案是 SysCare:官方定位是操作系统的热补丁服务,统一了内核态与用户态的热补丁能力,可以在不重启的情况下在线修复内核、用户态服务、动态库等基础组件的问题。本文按 openEuler 官方文档把使用流程走一遍。
SysCare 的能力边界
按官方介绍,它有三条技术特点:一是补丁制作归一化,内核态、用户态用同一套流程,不用分别研究两套制作细节;二是用户态热补丁支持多进程、多线程业务,进程或线程重新拉起、服务重启后补丁依然生效;三是采用热补丁 lazy 机制,克服传统 ptrace 方式需要全部退出内核调用的问题,提高修复成功率。文档同时设有专门的约束限制章节(版本约束、应用约束、语言约束等),动手前应先对照自家组件过一遍适用性。
前提与准备
SysCare 是纯命令行工具。制作补丁前要备齐两样:目标软件的源码包和调试信息包,以内核为例:
yumdownloader kernel --source --debuginfo
再装好编译依赖,官方示例包括 make、gcc、bison、flex、openssl-devel、dwarves、python3-devel、elfutils-libelf-devel 等。
一条命令做补丁
官方的补丁制作命令是 syscare build,把补丁名、源码包、调试信息包、补丁文件、输出目录一次给全:
syscare build --patch_name HP001 \
--source kernel-...src.rpm \
--debuginfo kernel-debuginfo-...rpm \
--output output \
--patch 001-kernel-patch-test.patch
成功后输出补丁包(patch-*.rpm)与源码包。命名有官方规矩:补丁包按"目标软件全名-补丁名称-补丁版本-补丁release-架构"组织。构建失败时看临时目录下的 build.log 定位问题。
安装与状态管理
补丁包用 dnf 安装,文件落位在 /usr/lib/syscare/patches 下:
dnf install patch-*.rpm
之后就是 syscare 的状态机管理。每个补丁有唯一标识(格式:目标包名/补丁名),状态沿"未加载 → 未激活 → 已激活 → 已接受"推进,核心命令五个:
syscare apply 补丁标识 //加载热补丁
syscare active 补丁标识 //激活热补丁
syscare accept 补丁标识 //接受热补丁(转为长期信任)
syscare deactive 补丁标识 //反激活,随时可回退
syscare remove 补丁标识 //卸载热补丁
配合 syscare list 看全部补丁状态、syscare info 与 syscare status 查单个补丁的元信息与状态。官方还提供 syscare save 与 syscare restore,把所有补丁状态保存和恢复——重启、迁移场景下用得上。两点细节:补丁处于已激活以上状态时执行卸载,会先自动卸载再移除;临时验证的补丁别急着 accept,观察一个业务周期再定。
适合谁用
跑着不能说停就停的业务——数据库、支付网关、工控上位机、7×24 的对外服务——又需要跟安全更新的团队,热补丁是重启窗口和补丁及时性之间的那个折中。落地建议分两步走:先在测试机上把 build 到 accept 全流程演练一遍,摸清自家组件在约束限制章节里的适用性;再把"高危漏洞走热补丁、例行更新走维护窗口"写进运维制度。
openEuler 服务器部署、热补丁方案评估与日常运维托管,贵州诚鑫致达科技提供中小企业 Linux 服务器运维的本地化服务,欢迎留言或私信聊聊您的停机窗口约束。
(来源:openEuler 26.09 官方文档 SysCare 用户指南(介绍/使用/补丁管理),命令与约束以官方文档为准)
企业存储选型参考|贵州诚鑫致达
做备份容灾一体机方案,群晖机型参考:DP7400 · DP520 · DP320。需要选型建议或上门评估,搜「诚鑫致达」即可找到我们。