9

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

 3 years ago
source link: https://wusiyu.me/fedora-silverblue-34-overview/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

或许能是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”而更方便管理呢?


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK