openKylin 2.0 揭秘 | 新一代不可变系统的设计与实现
在之前文章中,我们向大家揭秘了什么是不可变系统以及不可变系统相较于传统操作系统具有哪些优势。今天我们继续向大家深入揭秘openKylin不可变系统的特性具体是如何设计和实现的!
UpdateManager SIG基于OSTree技术为原生openKylin操作系统设计并实现了不可变操作系统特性,同时,为尽可能保障在安装、启动、UI界面和用户操作等方面与传统操作系统保持一致,还在文件系统结构、安装方式、启动流程、版本控制方式和版本存储库等特性方面进行了针对OSTree技术特点的设计改造。具体如下:
01文件系统结构
openKylin不可变系统的目录结构与传统Linux发行版相比有一些不同,主要体现在采用OSTree管理文件系统版本、强调不可变系统的特性以及将用户程序和数据都视为不可变的。这些设计使得其在系统稳定性和可靠性方面有所提升。具体实现如下:
➢ /usr
/usr及其下面的所有内容都是只读的。
-
/usr
-
/bin → /usr/bin
-
/lib → /usr/lib
-
/lib64 → /usr/lib64
-
/sbin → /usr/sbin
➢ /var
系统运行时状态的存储位置。/var目录是用于存储可变数据的位置,包括各种应用程序的文件、日志、缓存和运行时数据。同时将/home和/root目录,存放至data分区 /media -> var/run/media。
-
/mnt -> var/mnt
-
/opt -> var/opt
-
/root -> data/root
-
/home->data/home
-
/srv -> var/srv
➢ /sysroot
文件系统根目录,类似于传统Linux中的/目录,使用/sysroot作为其文件系统的根目录,与传统Linux发行版中的/目录有所不同。
➢ /ostree
sysroot/ostree目录是基于OSTree技术的系统根文件系统的存储位置,其中的repo目录存储了OSTree的版本控制数据库,deploy目录存储了不同版本的系统根文件系统部署。这种机制使得系统可以进行整体的不可变性管理和更新。
02系统安装
openKylin不可变系统的安装过程与传统操作系统相似,在安装时,用户可在安装界面勾选不可变系统安装,即可实现不可变系统的安装。在安装完成后,安装器调用OStree CLI实现不可变系统的初始化、 仓库创建、分支提交等动作。
03系统启动
OSTree在/ostree目录下安装部署,但最终还是要控制系统的/boot目录。这种方式是通过Boot Loader来实现的。当部署一个分支时,会生成/boot/loader/entries/ostree-1-
openkylin.conf的配置文件,该配置文件中将包含一个内核参数和一个initrd参数,允许initramfs找到指定的部署。最后OStree会更新/boot/grub/grub.cfg文件,引导系统启动。
04版本控制
OSTree使用版本控制技术来管理系统的文件系统。它将文件系统的每个版本都存储为一个只读快照(snapshot),并通过分支(branch)的方式跟踪和管理不同的版本。这样,系统的每个更新都是事务性的,可以轻松进行回滚操作。
05存储库管理
OSTree使用存储库来存储系统的版本控制数据,存储库中包含了系统的不同分支和快照,以及与版本控制相关的元数据。通过存储库,系统管理员可以方便地管理和维护系统的版本。
通过上述改造和设计,OSTree实现了不可变系统的特性,提供了一种可靠、稳定的系统更新和管理机制。它改变了传统系统的文件系统结构、启动、版本管理和更新方式,为系统提供了更好的可信度、可靠性和维护性。
06关于UpdateManager SIG
openKylin社区UpdateManager SIG小组,致力于新一代操作系统不可变系统相关技术研发,包括系统架构、OStree、系统更新组件等,提供不可变系统相关的技术规划、设计、开发、维护和系统升级等服务。openKylin基于OStree的不可变系统将成为数字化未来的重要引领者,为用户带来更加稳定、安全和高效的数字化体验。
-
SIG主页:
https://gitee.com/openkylin/community/tree/master/sig/UpdateManager

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Ant Design 5.13.3 发布,企业级 UI 设计语言和 React 实现
An Design 5.13.3 现已发布,主要变化如下: Input 修复 Input.Search 宽度比 Input 少 1px 的问题。#47193 修复 Input 启用showCount时在 Space.Compact 下的样式错误。#47112 修复 Descriptions 当item的children为null时丢失单元格右边框样式的问题。#47191 修复 Tablecolumn.onFilter方法未过滤树形数据的问题。#47170 修复 Affix 在 Chrome 缩放80%的情况下占位高度异常的问题。#46823 修复 QRCode 在暗黑模式下的背景色。#47128 修复 Statistic 组件不支持 HTMLrole、data-*和aria-*等属性的问题。#47149 修复 Transfer 反选当页错误的问题#47125 降低 Buttonsize样式权重以方便覆盖。#47074 修复 Modal 自定义classNames.wrapper时centered属性不生效的问题。#47076 修复 Spin 组件在tip和fullscreen同时使用时...
- 下一篇
腾讯 APIJSON 插件 apijson-mongodb 开源,支持文档数据库 MongoDB
腾讯 APIJSON 是一种专为 API 而生的 JSON 网络传输协议 以及 基于这套协议实现的 ORM 库。为各种增删改查提供了完全自动化的万能 API,零代码实时满足千变万化的各种新增和变更需求。 能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。适合中小型前后端分离的项目。 自 2016 年开源 7 年来发展迅速,目前 16K+ Star 位居 400W Java 开源项目前 100。 国内 腾讯、华为、阿里巴巴、字节跳动、美团、拼多多、百度、京东、网易、快手、圆通 等 和 国外 Google, Apple, Microsoft, Amazon, Tesla, Meta(FB), Paypal 等数百个知名大厂员工 Star, 也有 腾讯、华为、字节跳动、Microsoft、Zoom、知乎 等 工程师/专家/架构师 提了 PR/Issue, 还被 腾讯、华为、百度、SHEIN、快手、中兴、传音、圆通、美图 等各大知名厂商用于各类项目。 apijson-mongodb 腾讯APIJSON的 MongoDB 数据库插件,可通过 Maven, Gradle 等远程依赖。 添加依...
相关文章
文章评论
共有0条评论来说两句吧...