技术信息

本页面提供了 Silverblue 相关的背景技术信息,包括采用的核心技术和文件系统组织结构。

一般用户无需了解这些信息,本页面仅为那些对 Silverblue 实现细节感兴趣的开发者准备。

ostree 和 rpm-ostree

ostree is the core technology that is used to compose, deploy and update Silverblue. ostree operates in a similar manner to a version control system, but it operates on entire filesystem trees. It is often described as “Git for operating system binaries”.

对于 Silverblue 而言,ostree 会被用于部署和更新系统映像(也就是 / 下没有被链接到 /var 的所有目录)。ostree 也被用于更新 grub.cfg 以使新系统出现在引导选单。

rpm-ostree 基于 ostree 而来,它使得在 ostree 映像上层叠 RPM 成为可能。在 Silverblue 安装 RPM 也是通过 rpm-ostree 实现的。

当你通过 rpm-ostree 安装软件,层叠了有关 RPM 包的新系统映像也会随之构建。要使 RPM 安装生效,你需要重启系统以实用新的系统映像。在更新系统映像时,rpm-ostree 也会妥善处理层叠的软件包。

Silverblue 文件系统组织结构

在 Silverblue,根目录是不可变的。也就是说 //usr 和这些目录下的所有文件都是只读的。

/var 被用于储存 Silverblue 的运行时状态。我们使用链接使得目录能在我们期望的位置出现:

  • /home/var/home

  • /opt/var/opt

  • /srv/var/srv

  • /root/var/roothome

  • /usr/local/var/usrlocal

  • /mnt/var/mnt

  • /tmp/sysroot/tmp

这意味着用户目录分区应该被挂载到 /var/home

要进一步了解 Silverblue 的文件系统组织结构,请阅读 libostree 相关文档