NEWS

新闻

了解openKylin最新资讯,关注社区和产品动态。

NEWS

Learn about the latest news.

openKylin 2.0 SP2探秘 - 不可变系统远程仓库详解

2026-07-29 19:58:02

OpenAtom openKylin(简称“openKylin”)不可变系统想做的事其实很简单——让系统文件本身不可被改动。围绕这个目标,openKylin 2.0 SP2系统上搭载了三样“法宝”:不可变系统本体、KARE兼容环境、开明包格式三者搭配下来,系统足够稳,应用照样跑,习惯不用改。

而这次咱们要聊的远程仓库,是这套方案里负责"提供完整系统版本"的部分。原因也很直接:不可变系统的更新方式不是打补丁,而是整体换系统,那就必须有一个地方能随时拉到完整的系统镜像——这就是远程仓库存在的意义。

它跟传统 Linux 仓库到底区别在哪?


传统  Linux 更新,执行“apt upgrade”命令,系统从服务器拉一堆软件包,一个一个往现有文件系统上堆。灵活是灵活,但有个难以避免的问题:  网络一抖、依赖一冲突,系统就容易卡在"半新半旧"的尴尬状态。不少 Linux 用户对“升级”这两个字有心理阴影,根源就在这。

而不可变系统换了个思路:仓库里不再放零散的包,而是放整张系统快照。具体生成一个仓库版本,分三步:

  • 在管理平台装出一整套系统。把某个openKylin版本需要的所有deb包装齐,跑完整兼容性和性能测试,产出一个稳定可用的完整版本;

  • 用OSTree生成一个Commit。注意,这里产出的不是ISO,而是一个相对轻量的Commit。OSTree会基于"上一版有什么"做增量计算,只记新增和变化的部分。每个 Commit拿到一个全球唯一的SHA-256指纹,生成后无法伪造;

  • 推送到远程仓库。用ostree-push把Commit和它引用的所有对象,推送到openKylin 官方远程仓库,正式对外可用。

总结一句话:OSTree像Git管代码一样管整个操作系统的文件树——哈希校验、内容寻址、自动去重。这才是"不可变"能站住脚的底座。

Commit 怎么安全地进仓库?


Commit在管理平台生成后,还得完整地传到远程仓库。这一步不是scp或rsync,而是'ostree-push'和'ostree-receive'配合完成的。流程大致如下:

图片

  • ostree-push通过SSH连到远程主机,调起对端的ostree-receive

  • push端先算清楚本地和远程的对象差异,只发远程缺的那部分;

  • receive端收到对象后,不直接写主目录,先扔到临时区;

  • 所有对象校验通过后,再原子化地搬到正式存储区,更新ref指针。

核心就是"原子化"这三个字—— 要么全成,要么全退,没有中间态 。

为何需要如此严谨?对比rsync就清楚了:rsync按文件顺序传,中途断了,远程仓库就可能停在"新对象已经写进去一部分、ref指针还没更新"的状态仓库就坏了。ostree-receive用临时区+原子提交的方式,把这个风险从根上掐断。

仓库里到底长什么样?




讲完怎么建、怎么收,最后看仓库本身的结构。不过在拆结构之前,先回答一个更实际的问题:这套结构对谁有用?

  • 对普通用户,最直接的感受是升级不再提心吊胆。以前升Linux,网络一抖就怕起不来;现在仓库里存的是完整镜像,每次更新是整体替换,新版本有问题,重启时回滚到上一版就行。体验与手机系统升级类似:确定、可逆、不打补丁。

  • 对仓库管理员,原子化推送意味着哪怕进行到一半时网线被拔了,仓库也不会坏。每个 Commit 都有唯一的 SHA-256,出问题能定位到具体版本,复现和修复都快。

这些体验背后,靠的是仓库的五层结构。 结构决定能力,能力决定体验。

图片

仓库结构层

核心作用

用户体验

摘要文件(summary

以极小体积枚举仓库所有可用Ref及其校验和,供客户端快速预览远程版本

更新前毫秒级完成版本检测,用户不用下载几十GB就知道有没有新版本,省时省流量

分支引用

refs

轻量级指针,始终指向各系列最新Commit,屏蔽复杂哈希值

用户只需记住“openKylin 2.0”这样的分支名,版本选择零门槛,永远获得该系列最新稳定版

对象存储(objects

内容寻址存储,天然去重+完整性自证

每次更新只需拉取增量而非全量,更新包更小、更快;文件被篡改自动失效,安全无忧

仓库配置(config

定义压缩策略(archive-z2),高效压缩所有对象

传输数据更小,用户更新等待时间大幅缩短

事务状态管理(state

临时对象缓存区(tmp

原子化提交+临时暂存+文件锁,确保操作要么全成要么全退

更新要么成功、要么维持原状,用户永远不用担心升一半崩一半;多设备并发更新仓库也不乱

“打补丁”“整体交付”,从零散包到完整镜像——openKylin 不可变系统的远程仓库借助 OSTree,搭起了一套高效、安全、可靠的系统镜像分发体系。它让"不可变系统"不再只是概念,而是用户能实实在在感受到的:原子化的丝滑更新、无缝的安全回以及坚不可摧的稳定底座。

  • openKylin OStree项目地址:https://gitee.com/openkylin/ostree

  • 扫描以下二维码或点击“阅读原文”立即体验系统!

    图片

*本文内容基于openKylin 2.0 SP2,后续版本如有调整,以官方文档为准。