NEWS

新闻

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

NEWS

Learn about the latest news.

openKylin 2.0揭秘 - 新一代不可变系统的设计与实现

2024-01-30 09:34:43

之前文章中,我们向大家揭秘了什么是不可变系统以及不可变系统相较于传统操作系统具有哪些优势。今天我们继续向大家深入揭秘openKylin不可变系统的特性具体是如何设计和实现的!

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