GNU/Linux
如果你不知道标题是什么意思:
我属于哪类 Linux 用户?
首先要声明的是,我们讨论的不是将操作系统作为玩具的Hyprland用户/平铺管理器用户。在Linux桌面领域,胡桃酱只是用户而不是开发者,所以本文中的所有内容都没有经过正确性的确认,仅凭借个人理解编写。
下面展示我的配置:
Budgie是我认为最不折腾的桌面环境。窗口管理器只拥有较少的用户设置项目,大部分默认设置都可以保留。 我对我的桌面环境的 customize 仅包含配色主题,壁纸,dock 栏。
暴论:那些折腾平铺式桌面管理器的都是日常只需要开一个浏览器、一个终端和一个即时通讯软件的用户。由于我的窗口管理需求较为复杂(尤其是Unity编辑器),我只能使用传统的窗口管理。
下面的文章部分都包含一个前提:我们将操作系统视作一种工具,而不是玩具。Linux 桌面不是 Linux 服务器运维,我使用 Linux 桌面不代表我会使用各种网络安全工具和服务器配置工具。
ArchLinux 受到的误解
如果你在各种 SNS 上刷到过 Arch Linux 相关的推文或是视频,会发现这个distro往往被塑造成一个十分麻烦,十分折腾的系统。然而Arch实际上从安装到使用和维护都是一个十分懒人向的,实用主义的 distro。
安装到底麻不麻烦?
一直以来,大家首先喜欢吐槽的就是Arch的安装程序——实际上桌面操作系统的安装无非就是那么几个步骤(分区,创建文件系统,写入文件,设置时区、本地化、网络、添加引导项,创建用户)。
造成这种「错觉」的原因就是:Wizard 类安装程序相当于将文档和用户选项进行了一一对应的展示,而 Archiso 则建议在另一台设备上阅读文档来进行安装。
安装后的配置有多方便?
众所周知,大部分操作系统在安装后还需要进行大量的配置才能满足日常使用需求。实际上在开始添加自己的软件之前,Windows 就已经变得相当麻烦:
根据我的个人经验,Windows 11 全新安装后的步骤大概有:
1. 改回经典右键菜单(需要查找资料完成)
2. 禁用小组件等无用服务(减少打扰和广告)
3. 将C盘中用户家目录的所有目录迁移到其他盘符
4. 更新winget,安装和配置 PowerShell7,安装 scoop(方便管理软件)
5. 激活
即便如此,任务管理器仍然充斥着大量我们不认识的进程,可能需要随着对我们造成影响再逐个禁用服务。
而这是全新安装的 ArchLinux 的pstree
:
❯ pstree
systemd─┬─NetworkManager──4*[{NetworkManager}]
├─dbus-broker-lau──dbus-broker
├─login──zsh──pstree
├─systemd──(sd-pam)
├─systemd-hostnam
├─systemd-journal
├─systemd-logind
├─systemd-timesyn──{systemd-timesyn}
├─systemd-udevd
└─systemd-userdbd──3*[systemd-userwor]
一目了然,我们可以知道所有进程的作用,且全部都是必要进程,不需要做任何清理,可以直接开始在此基础上进行「创作」:直接开始安装自己需要的软件,主题,服务。并且在接下来的使用中,你可以确保 pstree 中的所有进程都是我们认识的——都是我们亲自 start 或者 enable 的。不可能无故出现自己不认识的进程和文件:这才是「电脑真正属于自己」的感觉。
滚动更新到底会不会挂?
说什么都没用,从2023年12月30日到现在我的系统总共滚挂过0次,在社区公告的提醒下手动介入过2次。(我没有定期更新系统的习惯,只会在安装新的软件包前阅读社区公告并进行一次系统更新。)
为什么我选择Linux作为主力系统?
终于进入正题——对于这个问题,说实话我并不想要从“自由软件”等等十分高大上的哲学或者“隐私安全”等这些我们大陆用户根本不配拥有的权利这样的角度去编写一些看起来十分正确但又没有说服力的理由(个人观点)。作为每天都要在身边陪伴自己战斗的工具,「好用」一定是最为重要的特性。
在使用计算机时,我会在意什么?
- 操作系统不应该在我将计算机闲置(没有进行键鼠输入)的时候,在我不知情的情况下创建进程(或是突然使系统进程开始活跃),占用资源导致发热,噪音和能耗。
- 在命令行中启动,运行和奔溃应用程序时应当输出有效的日志。【方便 debug 和环境配置检查。】
- 非系统工具类应用程序(携带版应用程序除外)在运行时不应该有权限在用户的家目录以外的位置(例如软件的安装目录)创建和修改文件。【即使重新安装应用程序,乃至整个系统,用户的 config 都还是重装之前的样子;而当应用程序运行出现问题需要重置时,只需要删除它的 config 目录即可】
- 应用程序应该在需要管理员权限进行操作时说明原因并请求对于单个操作的临时提权,不应该直接以管理员身份运行。
- 用户应当能够通过系统目录的文件名反向查询到其属于哪个软件包。【将系统级目录抽象成一个一个的软件包,尽可能减少用户手动进行逐个文件的管理】
- 当系统出现错误时,用户可以通过对其中某一部分重新配置以进行修复。【完整的重装系统会需要数以月计的时间来恢复到自己曾经熟悉的环境】
软件包管理
包管理方面我并不想要吹aur,因为 aur 和 scoop 的都不缺软件包。但Windows的软件管理策略仍然存在很多不方便不合理的地方:即使是使用了包管理器也是打开安装程序然后让安装程序自己处理软件的安装,有时还不能静默安装,需要弹出 UAC 手动授权并手动点击下一步安装,安装过程也非常不透明等等:
对比维度 | Windows安装器 | Linux包管理器 |
---|---|---|
安装方式 | 单个 exe 或 msi 文件,需要手动点下一步,天朝软件还要避开各种自启动陷阱或捆绑安装。 (你根本不知道他会对你的系统做出什么修改‼️)(有些环境变量还要自己加) |
包管理器输入软件名称直接安装/更新,无需人工干预 包管理器只负责复制文件和运行hook,这也使得系统级目录有一个统一的管理器在管理,而不是安装器各管各的 |
依赖管理 | 依赖关系需安装器自行处理,部分场景还要去微软官网自己找(如VC++运行库、.NET框架)。 | 包管理器自动解析并安装依赖 |
更新机制 | 软件自己检查更新,然后自己更新自己 | 包管理器统一更新 |
不知道安装器和卸载器会对系统做出什么样的修改这一点,其实最大的问题不在于安全性(对我来说),而是在于出了问题不方便修复,容易增加很多不必要的系统重装——一些软件安装上之后,卸载掉,就再也安装不上了,你也无法把系统恢复到原状 因为你不知道安装器对你的系统做出了什么修改;而linux可以很轻松的让一款软件的所有痕迹完全消失,在包管理器和用户 config 目录的帮助下
久而久之,经过各种软件的安装,卸载,再安装不同的版本这样的流程下来,Windows就会变得越来越乱,不知道系统里存了多久之前的历史遗留文件;而 Linux 包管理器则可以做到逻辑上的「装多少删多少」,系统几乎一直和新的一样。
配置文件管理
在Linux下,~/.config
等文件夹包含了所有的用户级配置文件——也称为 dotfile。可以说,dotfile就是你对应用程序进行的所有设置:当你需要迁移系统时(例如更换了计算机或重新安装了系统),只需要迁移你的~/
和/etc
中修改过的配置文件,就可以把一切都恢复到原本的样子(包括桌面环境的控件布局,各种包管理器的镜像源,neovim 插件等等)
实际上由于我们可以轻松的了解到 Linux 运行细节,所以我们可以在系统损坏时针对损坏的部分进行重装和修复(例如桌面环境,grub 引导),而不用重装整个系统。所以几乎遇不到“重新安装了系统”的情况。
(Windows下我无法迁移Local
,LocalLow
,Roaming
,ProgramData
,甚至无法看懂这些目录下的部分文件来源)
零打扰
在科技巨头的控制下,你的系统可以随时被插入他们想要的信息,或随时打扰你的工作。
Windows 11 测试版中,广告出现在资源管理器中。Windows 10 也曾在开始菜单里出现过类似系统更新推送的广告选项,点击后会打开京东购物页面,其资源管理器里还有 OneDrive 云存储的广告,锁屏界面、Edge 浏览器、任务栏上也都曾有过广告。
由于 Windows 10 将于 2025 年 10 月 14 日结束支持,微软为促使用户升级到 Windows 11,在 Windows 10 也曾弹出过全屏更新广告——用户若想拒绝升级,需找到并点击屏幕底部的 “保留 Windows 10” 链接,但点击后不会直接返回桌面,而是会依次打开 “介绍 Windows 11” 等页面继续推广,通常需五步操作才能最终关闭。
ArchLinux的维护策略使得整个系统的不同部分完全由不同的组织开发和维护——完全不可能被某个组织控制。就连系统更新需要手动干预也只能通过在官网发布通知的形式告诉用户。
我现在的启动项配置
即使ArchLinux更适合作为主力系统,Windows也有自己不可替代的优势:游戏多。目前我的配置是由grub引导,ArchLinux作为第一启动项,Windows作为第三启动项——Windows进入系统登录后会自动启动Steam大屏幕模式(把Windows作为游戏主机使用)。如果在Windows启动前打开电视,Steam大屏幕模式将会自动在电视上启动,方便直接用游戏手柄控制电脑。