关注了就能看到更多这么棒的文章哦~

OpenSUSE MicroOS Desktop: a Flatpak-based immutable distribution

March 29, 2023
This article was contributed by Koen Vervloesem
DeepL assisted translation
https://lwn.net/Articles/927373/

Immutable Linux 发行版最近正在快速增长,有好几个流行的发行版都在创建自己的 immutable(不可改变的)版本,正如我们之前预测的那样,这可能是 2023 年的一个新趋势。虽然这些不可变的发行版中有许多都是专注于服务器使用场景的,但也有一些提供了桌面环境。OpenSUSE MicroOS Desktop 就是其中之一,它以最小版本的 openSUSE Tumbleweed 为底层基础操作系统,应用程序则是以 Flatpak 或容器(container)的形式来运行。在日常使用中感觉很像一个正常的 openSUSE 桌面。它最大的好处是在不牺牲系统稳定性的情况下可以获得最新的软件版本。

想跟上最新软件的 Linux 用户一般都会选择滚动发布(rolling-release)的版本,如 Tumbleweed、Arch Linux 或 Gentoo Linux。然而,这种方式可能会带来软件版本之间的兼容性问题,或者导致系统不稳定。另一方面,稳定的或长期支持(LTS)的发行版则迎合了那些优先考虑稳定性而不是最新软件的用户的需求。

当然,有许多用户希望两全其美:在一个稳定的基础操作系统上获得最新的软件版本。有一些解决方案通常可以绕过发行版的本地软件包管理系统。如 Flatpak、Snap 和 AppImage 就是实现这一目的的当前领先的技术。应用程序与它们的依赖关系都被打包在一起,从而防止相互之间的干扰或底层发行版引入的干扰。通过这种方法,用户就能够运行更新版本的软件,而不会遇到依赖性问题,也不会影响系统稳定性。

MicroOS on the desktop

将这一概念发挥到极致,就是采用一个小型的 "不可改变的" 核心操作系统,把尽可能多的软件都打包在独立的软件包中。然后,该操作系统的目的非常单一,比如作为 container host 来运行,或提供一个最小的桌面环境。所有的额外软件都有望被容器化(containerized)或沙盒化(sandboxed)。这种方法在服务器领域和桌面领域的操作系统上都可以实现。对于桌面环境,有 Fedora Silverblue(使用 GNOME)和 Fedora Kinoite(使用 KDE Plasma),基于 Ubuntu(很快将基于 Debian)的 Vanilla OS,基于 Debian 的 Endless OS,以及 openSUSE MicroOS Desktop。

传统的桌面发行版提供了基础操作系统、桌面环境和应用程序。openSUSE MicroOS Desktop 则是一个单一用途的操作系统,提供了基本操作系统和桌面环境。MicroOS ISO 镜像的安装程序与 openSUSE 的普通桌面版相同,但区别在于用户能够选择的系统角色(system roles)。

对于桌面使用环境有两个系统角色:一个是使用了 GNOME,作为 release candidate,另一个是 KDE Plasma,指定为 alpha(见下图)。两者都安装了具有自动更新和回滚功能的 MicroOS 桌面,并且它们默认包括 Podman 容器引擎。安装程序给操作系统、桌面和其他工具都创建了一个 Btrfs 根文件系统,这个文件系统在启动后被 mount 为只读模式。

[安装程序]

Running an immutable desktop

MicroOS 桌面的第一次启动需要经过一个典型的刚安装好之后的配置过程,比如选择语言,选择时区,以及为 GNOME 设置在线账户。不同的是,接下来是自动安装应用程序,如 Firefox、计算器和文本编辑器。最终得到一个最小的、没有什么特别功能的桌面环境。

MicroOS Desktop 中的所有桌面应用程序都以 Flatpaks 的形式安装在用户的目录中,并自动得到更新。在 GNOME 版本中,这是用 GNOME Software 工具来完成的,它通常是使用操作系统的包管理器来安装应用程序。然而,在 MicroOS 桌面中,它被配置为只从 Flathub 安装 Flatpak,并把它们放在~/.local/share/flatpak 中。所以使用 GNOME Software 安装软件包并不会影响底层操作系统。KDE Plasma 版本的 MicroOS Desktop 使用 Discover 将采用了同样的方式来把应用程序采用 Flatpak 形式进行安装。

在日常使用中,MicroOS Desktop 看起来很像一个正常的 openSUSE 桌面系统。基础操作系统和桌面实际上是建立在与 openSUSE Tumbleweed 相同的 RPM 包上的,所以这并不令人意外。为了安装和管理 GNOME Shell extension 这些扩展,还自带了 Extension Manager。然而,MicroOS 默认只带有基本的配置工具,如 GNOME Settings 和 GNOME Tweaks。

系统更新会每天自动完成。这是由一个 systemd timer unit 来实现的,它会运行 transactional-update 命令,这是一个对于软件包管理器 zypper 的封装脚本。它创建了一个新的根文件系统的 Btrfs 快照(snapshot),然后对这个系统进行更新。如果相关更新都安装成功了,那么该脚本会把这跟新的快照标记为系统下次启动时的默认快照。如果出现了错误,该快照就会被丢弃,仍然使用之前的快照来作为默认的启动选项。

重启时就会开始采用新的快照;如果系统在重启期间检测到问题的话,也会自动回滚到之前的默认快照。用户也可以使用 transactional-update rollback 命令手动回滚。这一整个 transactional update 的过程在 openSUSE 的文档中有解释。

Escaping from Flatpakland

跟传统的发行版软件仓库中的内容相比起来,Flatpak 的数量还是非常有限的。目前,对于 MicroOS Desktop 使用 flatpak remote-ls 命令返回的条目进行一下统计,可以看到 Flathub 上的 Flatpaks 超过 3600 个。因此,用户总会有可能需要运行一些没有以 Flatpak 形式出现的软件。但 MicroOS Desktop 也提供了一个解决方案:它在默认安装中附带了 Distrobox。Distrobox 使用 Podman 来创建与 host 紧密结合的容器,会共享用户的 home 目录、外部存储、USB 设备以及图形应用程序。

因此,如果用户想要使用的特定软件并没有相应的 Flatpak 打包的话,在终端中运行一个简单的 distrobox-enter 命令就可以创建(或者进入,如果容器之前已经创建了的话)一个运行 Tumbleweed 的容器。在这个容器中,openSUSE 仓库中所有可用的 RPM 包都可以用 zypper 命令安装。目前有 75000 个以上的软件包可用。请看下面的图片,显示了一个运行 Tumbleweed 的 Distrobox 容器,并查询可用软件包的数量,同时在 host 上运行 GNOME Software 并显示来自 Flathub 的 Flatpak。

[桌面]

Distrobox 也能够从容器中导出一个应用程序到 host 上。这将创建一个 .desktop 文件,从而使应用程序出现在 GNOME 的 Activity 活动中。如果用户点击这个图标,就会在后台启动 Distrobox 容器,并在 host 的桌面上打开应用程序的窗口。该应用程序只是作为 host 的一个正常的桌面应用程序出现。命令行应用程序也可以被 export 出来,例如,export 到用户的~/bin 目录。如果用户启动这个脚本,就会在容器中运行该应用程序。另一种方法也可以:distrobox-host-exec 会让用户在容器中执行 host 上的命令。

对于那些哪怕用 Distrobox 也无法安装的软件,最后的办法是使用 transactional-update 命令在主机上安装 RPM 包,该命令会在制作快照后安装软件;然后需要重启来使新的快照生效,从而可以使用新软件。但只建议在驱动程序、内核模块、虚拟专用网络(VPN)客户端和其他必须与操作系统紧密结合的底层软件包上使用这种方法,因为 host 中每一个额外的软件包都可能会带来一些出现稳定性问题的风险。MicroOS Desktop wiki 有一些使用 transactional-update 的提示。

Newest developments

OpenSUSE MicroOS 与 Adaptable Linux Platform(ALP)有关系,ALP 是最小的、不可改变的操作系统,准备成为 SUSE 的下一代企业 Linux 发行版。我们鼓励 OpenSUSE 用户试用 MicroOS Desktop,看看使用不可变的桌面如何适配到他们的工作流程中去,并向 ALP project 提供反馈。

SUSE 以其强大的配置工具 YaST 而闻名,它能够处理所有类型的系统管理工作。openSUSE 的长期用户在使用 MicroOS Desktop 进行配置的时候会很怀念 YaST,尽管它还是被用在了安装发行版的过程中。YaST 博客指出,YaST 的某些部分需要调整之后才能更好地处理像 MicroOS 这样的事务性系统(transactional system)的管理。但是,话说回来,一个最小的系统可能也不应该需要太多的管理工作。

目前 MicroOS Desktop 还不支持全盘加密。用户能够在安装程序中定制他们的分区,但这样得到的最终配置有可能无法正常工作。在 Reddit 上,MicroOS 发布工程师和 MicroOS Desktop 的主要开发者 Richard Brown 说,当 MicroOS Desktop 停止使用 YaST 进行安装时,就可以期望使用全盘加密了。值得注意的是,Brown 将在 4 月份转入另一个角色,即 SUSE 的发行架构师。

MicroOS 也缺乏一个防火墙。据 Brown 说,这是特意设计成这样的,因为防火墙会给容器运行时(container runtime)带来麻烦。他还说,这并不会有什么真正的好处,"因为你应该在容器中运行你的工作负载,端口映射/开放/重定向是配置容器的重要组成部分"。用户仍然可以安装 firewalld,但它不会被默认安装进来,"除非它能跟容器的配套工具很好地配合起来"。

Brown 还在为那些希望拥有一个基于不可改变的操作系统的完全可定制的桌面环境的开发者制定一个解决方案。他的 Project Greybeard 将基于 MicroOS Desktop,使用 Wayland compositor 和 tiling window manager Sway。它不是一个官方的 openSUSE 项目(目前还不是),Brown 认为它是为那些想建立 openSUSE MicroOS 或 MicroOS Desktop 的定制衍生品的开发者提供的一个范例项目。

Conclusion

对于那些喜欢自己定制的用户来说,openSUSE MicroOS Desktop 并不能完全取代正常的 openSUSE 桌面,因为对桌面可以配置的选项相当少。然而,在特定的情况下,openSUSE 的不可更改的桌面还是相当好用的。它可能是习惯于移动操作系统工作方式的人的理想操作系统。在 Chromebook、iOS 或 Android 上,操作系统本身也不是可定制的。用户只能通过基于映像文件的系统升级来升级他们的操作系统,而且他们安装的也是独立的应用程序。OpenSUSE MicroOS Desktop 为 Linux 桌面提供了同样的方式。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

LWN:OpenSUSE MicroOS Desktop - 基于Flatpak 的不可更改发行版!相关推荐

  1. archman linux教程,Archman GNU/Linux 2020-01 发布,基于Arch的Xfce桌面发行版

    Demiray Muhterem宣布发布Archman GNU/Linux 2020-01 "Xfce"版,这是该项目基于Arch的Xfce桌面发行版的最新稳定版本. 此版本引入了 ...

  2. 轻量级linux iso,antiX 17.2 发布,基于Debian的轻量级Linux发行版

    antiX是一个基于Debian的轻量级Linux发行版. antiX项目发布了一个小更新,antiX 17.2,其中包括17.x系列的各种更新和错误修复. antiX-17.2(Helen Kell ...

  3. 基于RHEL 8的Linux发行版的初始服务器设置

    在本文中,为了获取有关安装系统和服务器正在运行所在硬件的信息以及配置诸如系统更新.网络,root权限,配置ssh,管理服务以及其它的特定系统任务,在安装没有图形环境的最小化的服务器后,你首先需要使用的 ...

  4. Snap和Flatpak 通吃所有发行版的打包方式。

    动机 根据Flatpak和Snap的声明,背后的主要动机是使同一版本的应用程序能够运行在多个 Linux 发行版. "从一开始它的主要目标是允许相同的应用程序运行在各种 Linux 发行版和 ...

  5. 工业软件linux版,恩智浦宣布针对工业4.0推出基于社区的工业Linux发行版

    作为全球领先的高级连接解决方案提供商,恩智浦半导体(NXP Semiconductors™ N.V.)今日宣布推出用于工业领域的Linux发行版,其中包括实时操作系统扩展和对工厂自动化OEM的时间敏感 ...

  6. linux ubuntu桌面下载,LXLE 16.04.3发布下载,基于Lubuntu桌面的Linux发行版

    LXLE是一款使用轻量级桌面的Linux发行版,LXLE基于Lubuntu并以LXDE桌面环境为特色.LXLE 16.04.3已经发布下载,开发代号是"Eclectica",与其上 ...

  7. arch linux系统玩游戏,Garuda Linux 20200831发布,基于Arch的游戏发行版

    原标题:Garuda Linux 20200831发布,基于Arch的游戏发行版 来自:Linux迷 https://www.linuxmi.com/arch-garuda-linux-snap-fl ...

  8. Parrot 发布新版本——基于Debian的Linux 发行版

    2019独角兽企业重金招聘Python工程师标准>>> Parrot 4.6 发布了,Parrot 是一个基于 Debian 的 GNU/Linux 发行版,其设计上主要考虑安全性和 ...

  9. linux opensuse,又一linux发行版发布:openSUSE 15基于Linux 4.12内核正式发布

    导读 openSUSE 项目组于今日放出了 openSUSE Leap 15,其基于即将到来的 SUSE Enterprise Linux 15 系列,包含了专为重度用户而设计的更新组件和技术. SU ...

最新文章

  1. 从语句 char* p=test 说起
  2. docker WARNING: IPv4 forwarding is disabled. 解决方法
  3. [大数据之Yarn]——资源调度浅学
  4. BZOJ 2458 最小三角形(分治)
  5. 局部变量写在循环内还是外_循环内的局部变量和性能
  6. python函数示例_PHP closeir()函数与示例
  7. 想快速重构智慧园区5A系统,这份方案推荐给你
  8. 安卓应用市场分类排名算法一般是怎样的?
  9. 部署 Job (第一部分)
  10. JavaEE学习12--JDBC(上)
  11. 《探讨大规模无线通信》-高西奇教授 讲座记录
  12. redismanager 获取不到yml中的密码_恋爱物语APP:在城市的孤独中,获取真爱密码...
  13. Auto CAD 2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 2010 全版本 附带安装教程+入门到精通视频教程
  14. netdraw绘制网络结构图
  15. kubernets nodeport 无法访问
  16. 人脸识别“火”了!网友:胖了、整容了怎么办?
  17. 网络安全面试常见问题
  18. java 图片缩放 失真_Java图片缩小后不失真的代码(缩略图)
  19. 《逆商:我们该如何应对坏事件》201903
  20. 微信公众号怎么做html,微信公众号怎么做页面模板?

热门文章

  1. 11.21 CSS学习-上午
  2. 《安富莱嵌入式周报》第292期:树莓派单片机100M双通道示波器开源,MDK5.38发布,万用表单芯片解决方案,8通道±25V模拟前端芯片,开源贴片拾取电机板
  3. sklearn.ensemble模型融合
  4. HTML中基本元素基本设置(例如:字体颜色、大小、背景颜色)。
  5. Http缓存机制(强缓存与协商缓存)及过程
  6. scylladb docker 运行试用
  7. android定位:获取当前位置的经纬度
  8. 与AWS、Azure合作的“公共云之友”Commvault,如今牵手阿里云
  9. nvidia控制面板点了没反应win7_WIN7nvidia控制面板点击没反应 - 卡饭网
  10. 亚马逊AWS产品学习 ------ ELB ---- 简介