或许能是Linux发行版的一种未来?Fedora Silverblue 34使用体验

近日(2021.05)Fedora 34正式发布了,搭配开始使用新版本号的Gnome 40,但我们今天要谈的并不是“传统版”Fedora,而是Fedora Silverblue这个衍生版,你可能听说过Fedora CoreOS,而Fedora Silverblue便是其同类型的桌面版。

对于Fedora Silverblue,官方的说法是“Fedora Silverblue is an immutable desktop operating system aimed at good support for container-focused workflows.”,你或许注意到了“immutable”,没错,这个系统最大的特点便是大部分系统目录树都是不可变的,它们通过OSTree的进行管理,这是一个“针对系统二进制文件的git”,也就是说你可以像用git一样随时对你的OS进行更新和回滚,你甚至可以在GRUB界面选择启动当前版本还是上一个版本的系统。

而不可变的限制在于根目录下的大部分目录都是“只读”的,除了/var和下列被映射的目录:

当然一个完全不可变的系统并不能当作日用系统使用,所以Fedora Silverblue有一个混合式的包管理系统,它没有dnf,但你可以使用rpm-ostree install xxx来将rpm软件包安装为ostree的layer,但代价是重启后生效(有一个试验性的rpm-ostree ex apply-live指令可以令其立即生效,但目前与toolbox有兼容性问题)。

                         +-----------------------------------------+
                         |                                         |
                         |       rpm-ostree (daemon + CLI)         |
                  +------>                                         <---------+
                  |      |     status, upgrade, rollback,          |         |
                  |      |     pkg layering, initramfs --enable    |         |
                  |      |                                         |         |
                  |      +-----------------------------------------+         |
                  |                                                          |
                  |                                                          |
                  |                                                          |
+-----------------|-------------------------+        +-----------------------|-----------------+
|                                           |        |                                         |
|         libostree (image system)          |        |            libdnf (pkg system)          |
|                                           |        |                                         |
|   C API, hardlink fs trees, system repo,  |        |    ties together libsolv (SAT solver)   |
|   commits, atomic bootloader swap         |        |    with librepo (RPM repo downloads)    |
|                                           |        |                                         |
+-------------------------------------------+        +-----------------------------------------+

除了rpm-ostree的方式,安装桌面软件一般通过flatapk的方式,相比而言其更方便且无需重启即可生效。此外对于这两者都覆盖不到的情况,可以使用toolbox,用它创建一个传统fedora(或其他OS)的容器,其底层是podman(红帽的docker),但相比直接使用podman是要方便很多。

体验

Fedora Silverblue 34的安装与常规的Fedora类似,区别在于Fedora Silverblue的ISO并不是一个livecd,所以启动后直接就只有一个全屏的安装器界面,这里需要吐槽一下红帽系的anaconda安装器并不算好用,建议安装前先把目标磁盘清空或留好空闲空间。

安装后进入桌面,观感与普通的Fedora Workstation并没有什么不同,自带的Gnome应用商店也对ostree进行了适配,可直接进行系统更新,但可供选择安装的软件数量很少,是个很小的flatapk源,更多软件还是要到flathub上去下载。

在这个系统中你无法使用dnf这种常规的包管理系统,取而代之的是rpm-ostree,一些系统级的软件可以通过它来安装,但不一定能保证正常工作,比如安装cockpit目前就需要让cockpit-ws跑在容器里,直接安装目前会遇到问题。

cockpit也有一个ostree插件,可以在里面进行软件更新和版本查看,功能比较简单:

至于更一般的日常开发,可以都转移到toolbox中,这也是官方建议的“container-focused workflows”,毕竟以前每次折腾点新东西都需要往host系统里加一大堆依赖,想想还是挺强迫症的。

toolbox是一个开箱即用的容器工具,和host系统整合的不错:(据说还可以在里面跑GUI程序)

总结

选择Fedora Silverblue或者类似的“immutable OS”有什么好处?目前看来主要是:系统更新/回滚方便,不会滚挂,安全性好。对于普通用户和企业用户这些可以算是很大的优点。

对于专业的Linux用户这些可能意义不大,但确实也降低了维护成本;而代价是其不可变的特性又确实带来了很多额外的限制,但如果你不排斥“开发行为容器化”,这些限制也是可以克服的。

我的观点是,这依然是一个不错的开发机系统:传统的发行版用久了总会让人感到“墒增”,尤其是你的系统是从之前的release一路升级而来,你很难回忆起你在一年前为了某个小问题对系统做了那些更改,而这可能又会在未来导致更多的你已经无法解决的小问题。解决它的一种出路便是容器化的工作流程,能让你把折腾都留在容器里,保持host系统的纯净性,而既然我们已经不再折腾host OS了,那为什么不干脆让它“immutable”而更方便管理呢?

作者:WuSiYu

学生,Web开发者,智能硬件&IOT爱好者

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注