放弃两者的原因
不是openSUSE和Arch Linux不好,而是我用的时候遇到了各种各样的问题,并且随着时间越长就越严重。
openSUSE确实好用,但YAST、桌面环境自带以及直接创建、修改配置文件等等修改配置的方式,就让我很麻爪了,经常不知道该以谁的配置为准(关键也不知道为啥有时候有效果,有时候又没效果,到底方式哪个生效了,还是他们左右互肘出来了)。最后就导致openSUSE的环境一团乱麻,根本不知道该从哪里改设置。另外就是依赖和缺包的问题。(OBS能解决一部分)
Arch Linux的wiki很好,但熵增弥补了一优点。Arch Linux的自由度很高,软件包很多,滚动更新很快,这是优点也是缺点,我遇到的主要问题是随着时间的推移(也随着我修改的配置的增多),我当时的Arch Linux逐渐出现各种各样的小问题,最后崩溃(当时如果不换realtime内核就崩,但用realtime内核就卡。当然amd+nvidia笔记本也是debuff叠满),在一次重装后,我放弃了。
关于我遇到上面的问题一点小小的分析
从某种角度上说,我遇到的与一个词有一定的关系:“依赖地狱”。不同的软件可能依赖同一个软件/库的不同版本,而软件/库的不同版本很多时候不能共存,然后就炸了。而且,有的时候某个被依赖的软件和库不用了,无论是zypper还是pacman,apt还是dnf,剩下的依赖和配置都是令人头能的问题。(autoremove?谁知道会不会炸?)
另一方面,openSUSE和Arch Linux不好安装吗?并不,但令人头大的是安装完后,还要再装、再修改一堆东西(其实windos也是,但不得不承认的是windos在多版本这个事情上做的要好)。
那不可变发行版呢?Fedora Kinoite和openSUSE Kalpa这两者我也试过,结果就是不行。理论上这两个不可变发行版应当主要利用Flatpak安装软件或者AppImage或者DistroBox,但问题不是所有的软件都能如预期一般的在Flatpak和AppImage中工作,比如KeePassXC和浏览器。当时找了一圈,结果就是两者如果都用Flatpak安装,KeePassXC插件就基本不可能正常工作,但如果我用transactional-update和rpm-ostree,那我为啥不直接用Fedora和openSUSE呢?(distrobox也不知道为啥灵车了,一步步配下来就是不知道啥出错了)
注:其实从试过Fedora Kinoite和openSUSE Kalpa以后,我基本上对依赖ostree和快照的两种方式的不可变系统无感了。
其实基本上到目前为止,我要找一个状态可确定、可再现、可靠并且可以基本解决依赖问题的Linux发行版(不是GNU/Linux当然更好,当然BSD也不是没考虑过,但国内软件生态匮乏、缺乏驱动、最重要的是桌面环境我没搞成功)。基本上找了一圈下来,也就剩NixOS了。
请注意,如果没有一点计算机语言基础,尽量还是先不要直接碰NixOS,学一点计算机语言或者Nix再来。
开始折腾
主要的参考资料:《NixOS 与 Flakes 新手指南》、蓝天大佬的NixOS 系列、NixOS Wiki、Arch Linux Wiki、NixOS Manual
- 下载,你可以在官方网站下,也可以在清华大学开源软件镜像站下。(注:Graphical和Minimal无所谓,看个人习惯习惯)
- 想办法启动镜像,可以直接写入U盘或者考虑用Ventoy。(注意:NixOS不原生支持SecureBoot,但配置Secureboot启动很简单。)
- 硬盘分区格式化,我偏向于Btrfs文件系统,Btrfs请参照NixOS Wiki中Btrfs一章中Installation of NixOS on btrfs一节,而不是参照NixOS Manual中Installing NixOS一节。(注意:Installation of NixOS on btrfs一节中没有写添加Swap,可以参考中该章中Swap file一节提前添加,尤其是小内存情况下)
nixos-generate-config --root /mnt后修改/mnt/etc/nixos/configuration.nix和/mnt/etc/nixos/harware-configuration.nix。
(注:不用一次性修改完,也可以安装完直接用配置好的覆盖。
注:如果之前有添加Swap,请不要忘记添加到/mnt/etc/nixos/harware-configuration.nix。
注:如果添加了nix.settings.experimental-features = [ "nix-command" "flakes" ];,请不要忘记安装好git,此处参照启用《NixOS 与 Flakes 新手指南》中 NixOS 的 Flakes 支持一节)nixos-install然后就可以得到一个毛坯房或者精装房。(取决于你的配置)
毛坯房建设
请务必阅读完《NixOS 与 Flakes 新手指南》中 NixOS 与 Flakes 一章。(关于降级请参照NixOS Wiki中Flake-specific tips一节)