第 19.6 节 为何不能选择 Linux 桌面操作系统?
Linux 并不自由
思考题
“我发现看似纷繁复杂的 Linux 发行版,仅仅是一个假象罢了。他们甚至连任何自主决策权都没有。上游 systemd,他们就也 systemd(不这样的话,你没有任何第三方软件可用了,而后果就是你本身也被消灭了)Linux 发行版从未真正存在过。”
①Linux 发行版到底谁说了算?或者说,究竟有没有这么一个人或团体,是他说了算?
②“自由软件”的真正精神就和本书一样是复制粘贴吗?
③ 结合全文及你的经历,评析“Linux 发行版从未真正存在过”。
看似你有很多发行版可选,还能对发行版的种种评头论足,但是你其实始终没得选。你做出的选择看似是你自己做出的,但是选项是别人给出的。你也有能力自己维护自己的发行版,但是你究竟维护着什么?什么也没有。这是事实。
思考题
常见的 Linux 发行版和所谓的国产操作系统,究竟在维护着什么?文件系统他们不维护,内核和 glibc 他们不维护,Systemd 他们不维护,桌面他们不维护,其他第三方软件他们也不维护,甚至就连包管理器和软件源他们也都不维护。他们对上述软件/工具既不维护也不测试,更不会去打补丁,撰写文档。
① 如果去掉文件系统,去掉 Linux 内核,去掉 Shell,去掉 Systemd,去掉桌面,再去掉包管理器,去掉任何第三方软件,这些 Linux 发行版还能剩下什么?
② 如果把上面都去掉的东西组合起来,声称为一个发行版,该发行版和普通的 Linux 发行版有什么区别?
③ 他还是原来的发行版吗?如果不是,是在去掉哪个组件后不是的?如果是,为什么,他的哪个部分真正属于原来的发行版?
但是,Linux 真的自由吗?什么是 Linux?什么是自由?
Linus 将开发者从维护名单移除出去,看似只是文本改动,对开发毫无影响。其实不然,我以前说过,Linux 的开发相当地封闭,并且由 Linus 一人独裁。这些名单中的人名和电子邮件,是通过脚本进行检索的,当你想要贡献时,你必须运行脚本看看你能把你的补丁发给谁。而现在,都删掉了,就没人了。岂不是荒唐。你移除的是别人的名字,但其实伤害的是 Linux kernel 项目自己。
仅从许可协议上强制要求开源,也谈不上自由可言。商业公司无法将自己的产品融合进 Linux 内核(聪明的红帽选择使用 systemd 控制整个 Linux 社区)。无法复用代码,被迫重复造轮子编写一模一样的代码。在某种意义上,是 Linux 迫使商业公司变得更不诚信,更不可信,败坏了社会道德与社会风气;也被迫造成了大量的资源浪费,破坏着人类赖以生存的和谐环境。
不再拥有的的稳定性
自 Systemd 引入以降,Linux 就显而易见地不怎么稳定了。日常使用都经常能遇到 Systemd 引发的故障。Systemd 的 Bug 几辈子也修不完,并且由于缺乏代码审查,代码质量极差,还在不断地引入新 Bug。但 Systemd 仍在不断地接管系统组件。Systemd 接管地越多,Linux 就越不稳定。Linux 早已将“一切皆文件”的 Unix 哲学弃之如敝屣。
并且目前常见主流发行版所占的系统资源同 Windows 相比,亦只多不少。而现今那些宣称轻量级的发行版,完全就是在搞苦难哲学,根本不足以满足日常使用需求。
他们所强调的稳定性只是黑白的 tty 界面罢了。在日常使用的图形界面下,Linux 的稳定性还不如 Windows 95。起码 Windows 已经做到了当图形界面崩溃时还能调出来任务管理器结束这一切。而 Linux 往往无能为力,只能强制断电——不信你安装国产操作系统 UOS 专业版试试。而一旦强制断电,你就又掉入了下一节的坑底。
每天都需要 fsck
的文件系统
fsck
的文件系统Linux 的文件系统相当脆弱。如果你像使用 Windows 那样使用 Linux,等待你的将会是 You are in emergency mode
、BusyBox (initramfs)
或者 grub rescue>
。你几乎每天都在 fsck
。这也是他们宣传 Linux 不关机(并要求 UPS)的原因所在,因为压根没法关机。你以为他长期不关机是系统稳定,其实恰恰相反。
并不可靠的安全性与伪开源
几乎没有一款 Linux 发行版可以做到默认安全(secure by default)。Linux 系统的核心代码不是彻底开源的,里面充斥着各种二进制和代码混淆。对用户完全是黑箱。这意味着你的 Linux 系统只是看起来漏洞很少罢了。Linux 虽然有着各种各样的不同版本,但是其采用的所有组件发行版都无力维护——哦,包管理器不算。供应链攻击(如 CVE-2024-3094)始终是 Linux 安全性的阿喀琉斯之踵。大多数发行版的安全更新都相当滞后——如果你使用的是某不知名发行版。大家没有想到的一个问题就是,这些用于管理读写权限控制、带保护的子系统、审计跟踪、核心授权的安全措施的模块或机制本身就是有问题的呢?我们至今仍未知道 Linux 内核里面的由美国国家安全局(NSA)开发的 SELinux 究竟有没有后门?
由于 Linux 发行版的海量应用,共同故障点的问题将会越发凸显。
破坏性的软件包管理机制
在 Linux 里你可以卸载一切不想安装在系统里的预置应用。问题在于,“所有”软件都是“预置应用”。Linux 缺乏基本系统的概念。就会出现一系列违反直觉的事情——卸载包管理器本身、卸载 Glibc、卸载 Linux 内核、卸载 Grub。
Linux 的包管理器做不到纯净卸载,总是会留下各种配置文件在各种目录到处乱放。由于 Linux 发行版无力维护软件包的配置文件应该放哪儿这种简单问题,即使安装后,你也不得不用 find
命令满地球找,看看他这个玩意的配置文件到底在哪儿?!
依赖地狱是老生常谈的话题了。这一切根源于上面提及的 Linux 缺乏基本系统的概念。
为什么几乎所有的 Linux 软件都是动态库?而问题在于 Linux 的动态库根本就不能叫做动态库。应该叫“人一次也不能踏入同一条河流库”。每分每秒都在发生着破坏性变动。Windows 也频繁使用动态库 .dll
,也会出现 dll 错误,但多是因为盗版系统或用户自身原因造成。但是 Windows 能兼容三十年前设计的动态库,这是为什么?
无法离线使用
在离线或内网情况下,Linux 系统基本上就毫无用处。由于复杂的依赖,几乎无法离线安装任何软件。由于缺乏基本系统的设计,也根本无法实现原子更新。也根本不存在像 Windows 的那种独立的补丁包或 Update 补丁包集合,这些在 Linux 下是根本无法做到的。而且由于上述问题,往往造成局域网的 Linux 根本得不到任何安全更新与系统升级的可能性,反而使得 Linux 成为了最不安全的操作系统。他们还津津乐道地说旧就是稳定。系统组件亦是由无数开源软件组成的。系统级的开源软件出现漏洞也是频频发生的事情。这时候想要升级,是不可能的一件事。比如 glibc、python。一般来说,你选择了什么 Linux,你就已经被锁死到了这个 Linux 默认的开源软件的版本了。你既得不到安全更新,也得不到功能更新。在内网部署 Linux 就是一件苦难哲学的实例。
社区极不友好
Linux 社区都是一群热衷于搞苦难哲学的人,不屑于回答你任何简单的问题——即使他们自己不会。Linux 社区既不团结亦非友好——不信你自己试试。更多请参见其他相关文章,不再赘述。他们善于在大团体中结成各个小团体,是你永远也融不进的圈子。从充斥着各种学历攀比,再到每天像机器人一样在群里发各种看似高深莫测实则自己也狗屁不懂的技术科普,以及无穷尽地虚伪的表情包背后隐藏的技术歧视与傲慢随偏见。你只是他们娱乐的玩具而已,连群宠都算不上。
参考文献
最后更新于
这有帮助吗?