不可变文件系统、无状态、声明式配置,是 Linux 发行版的未来么?

308 天前
 ryan4yin

不知道是不是因为我自己最近一直在折腾 NixOS ,还写了点 NixOS 的入门教程,发觉 V 站上有越来越多的人在推荐 NixOS 、SliverBlue 等比较有特点的发行版 。比如说前两天这个帖子:

https://www.v2ex.com/t/953897#reply81

SliverBlue 感觉是个很新的发行版,而 NixOS 虽然不新,但确实是在最近几年听得越来越多。

结合 Docker/Kubernetes/Terraform 这样的容器即代码、声明式集群管理系统、声明式配置工具的发展趋势,就感觉 Linux 现在的发展也有点切合这个趋势。

也跟人讨论过这个问题,朋友感慨为什么 2023 年了大家才发现声明式配置、不可变系统的好处... 也有一些 NixOS 用户疑惑,为什么 NixOS 用户群现在才这么点,Flakes 咋到现在还是个实验特性,感觉很不应该...

4178 次点击
所在节点    Linux
33 条回复
duke807
308 天前
不觉得能撼动 gentoo 做为发行版的尽头的地位
codehz
308 天前
如果要推广给个人用户的话,还是一键 A/B 分区(加验证禁止修改 root ),软件尽可能单独用户安装的模式比较合适
crz
308 天前
@duke807 lfs?
ryan4yin
308 天前
@codehz #2 我主要是考虑开发者群体,有能力理解声明式配置,可复现的开发环境对开发也有很大的好处。

@duke807 #1 没用过 Gentoo ,不过 NixOS 跟它有一点一样,就是都是源码发行版。

@crz #3 LFS 主要意义在于学习 Linux ,感觉没啥实用价值,没见过几个人长期自己折腾 LFS 当桌面的,太 Geek 了.
aloxaf
308 天前
这有啥不应该的,喜欢折腾 Linux 的终究是少数,大多数人用 Linux 只是为了干活。
至于服务端,如果有大公司去推倒是有可能,不然谁敢在服务器上用小众发行版,出了事儿怎么办?

说白了,发行版的命运,一方面要靠自我奋斗,但另一方面也要考虑到历史的行程……
Masoud2023
308 天前
感谢分享,第一次知道这个。

不知道服务器用这个怎么样,想试试 debian12 加 nix 的体验如何。
chengleqi
308 天前
我之前看过个 nixos 的视频,好像不符合 Linux 目录规则?这个是怎么解决的?
vcn8yjOogEL
308 天前
当然是,早就通过实战检验了,使用者最多的不可变系统叫 Android
ryan4yin
308 天前
@chengleqi 是的,简单的说,NixOS 为了极致的系统管理能力,将系统的所有文件都放在了 /nix/store 里面,并且设置为 readonly 避免被用户修改。
在系统启动时,所有 FHS 相关目录才会被动态创建,比如 /bin /usr/bin /var /tmp 等文件夹,这些文件夹中的初始内容全都是指向 /nix/store 的 symlink.

也就是说 NixOS 不遵循 Linux FHS 规范,但是通过 symlink 一定程度上兼容了最核心的一些 FHS 路径,使系统能正常运行。

但是这导致用户无法在 NixOS 上执行任何其他系统上构建的程序,因为绝大部分程序都依赖的 glibc 不在标准路径下。
解决方法有很多,源码包可以通过在 NixOS 上重新编译一份来解决,二进制包可以通过 patchelf 修改动态链接库路径,也可以模拟一个 FHS 环境来运行这些程序。详见:

https://nixos-and-flakes.thiscute.world/zh/best-practices/run-downloaded-binaries-on-nixos
ryan4yin
308 天前
@vcn8yjOogEL 想了下还真是,Android 包老早就是不可变了,还带签名校验,灯下黑了我。
pokon548
308 天前
不可变系统严格意义上不是未来,而是当下。因为目前已经有很多流行的商业产品了,例如 Xbox / Nintendo Switch ( A / B 更新,共同点是更新近乎无下线时间,重启即更新好)。至于 NixOS / Fedora SilverBlue 不火,个人认为主要还是生态和用户面不够广。

无状态的生态是硬伤,因为很多程序没有按照这个思路去设计。声明式配置同理
ysc3839
308 天前
去掉无状态基本就是 Android 了,不可变文件系统,系统功能由代码和配置文件控制
L4Linux
308 天前
这种类型或许适合服务器,但不适合个人用户。
deorth
308 天前
我感觉不如滚动更新+文件系统快照
flyqie
308 天前
@aloxaf #5

太暴力了。。

不过小众发行版之所以小众,一方面是机遇,另一方面也是自身解决的痛点问题所导致的。
angrylid
308 天前
我觉得 Linux Desktop 如果有未来,要么是 Chrome OS 要么是 Steam OS
flyqie
308 天前
@angrylid #16

wayland 和 x11 ,还有 google 造的轮子。。

linux 桌面。。不好搞啊。
angrylid
308 天前
@flyqie 且如果 Chrome OS 或 Steam OS 真的在未来有一席之地,那说明是他们的商业模式走通了,而非是在技术上有什么一骑绝尘的特性。那他们会成功在瞄准了 Windows 鞭长莫及的市场,而不是解决了 Windows 的技术痛点。
lucifer9
307 天前
NixOS 以前我问过一个长期的用户,有些软件的配置需要查好多选项应该怎么写,而且还有 configuration.nix 和 home.nix 里面同一个软件可以用的选项不一样,这些都要怎么知道。得到的回答是看源码。后来他又补充了一句,要是你有之前就写好的配置,可以直接用 builtin.readFIle 还是啥的直接导入到 nix store 。听上去还挺方便。后来我仔细想了一下,这跟我自己用 stow+git 管理配置,系统自动快照有啥区别
yyws2012
307 天前
预言:声明式配置会一直保持小众。不可变发行版会在 10 年成为主流

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/954572

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX