第 1.3 节 为什么要使用 FreeBSD
技巧
有基金会的官方版本,请参见《为什么你应该使用 FreeBSD》。
选择 FreeBSD 的一句话原因——FreeBSD 能在流变的世界中寻求理想的中道
FreeBSD 能在流变的世界中寻求理想的中道
如果你想选择一款同 Windows、Android 一样的,在大版本更新后也不怎么影响日常工作的系统,而不是每天都在和操作系统斗智斗勇,FreeBSD 值得信赖。
绝大部分或者说几乎所有的 Linux 的配置文件和系统组件都是 变来变去的,这在大版本变动时尤为突出。而且是每分每秒都在 变。而且 Linux 一直且始终是在进行着 破坏性变化(Breaking change)。
CentOS、Debian 只是 在生命周期内不变 罢了,但是大版本更新也不具有任何的连贯性和稳定性。且由于 长期不变,大版本的 变动,只会更加离谱,更加无法迁移。而且由于 Linux 设计上从未区分基本系统与第三方用户软件,故此类系统 在生命周期内不变 的代价是,任何软件的版本也不会变,也变不了,更不能变。
这意味着:
1、如果你需要不断地更新你工作所需的软件版本或者开发工作。那么你几乎总是在处理和操作系统有关的故障,不能专注于自己的开发或服务或者解决其本身的实际问题。
你几乎就是每天都在和系统打架,修理这个难用的锤子,因为他总是会脱把。而不是真正在用它来钉钉子。——单单仅是 Systemd 造成的 Bug 几辈子也修不完,你每天基本上不用干活,都在和这些东西斗智斗勇。
2、除非你的 Linux 环境从未升级过也从未打过补丁更新,因为生产工具和环境已经固定且不再变动,也不想或没有意义花钱更新,即直接放弃了更新与升级。事实上,之前大部分 Linux 就是这么被使用的。所以看起来没有一点问题。但是这存在着巨大的安全隐患和共同故障点。并且你迟早是要升级的,除非你破产倒闭了。这只是时间问题。但是因为你选择了 Linux,升级将是不可能的,几乎所有的配置文件和依赖项目都在变,甚至不存在了,变没了也是常有的事,只能从头再来。你原来的稳定性将不复存在。
即使你 不想变,那些非技术人员和整个市场也会迫使你去更新换代,让你不得不变。比如,你现在还能继续使用你的 Flash 吗?
选择 FreeBSD 的一般原因
从道家来讲,你爱用不用,不用拉倒。太长不看,不用?对其他的原因有意见?请重复看此条目
从佛学来说,因为缘分。万物缘起性空,我们有缘相聚,又会者定离。万般诸相皆如此。
从基督教来讲,这是主的指引。就像出埃及记一样,你看上去是自己的选择,实际上都是主的安排。
从黑格尔来讲,是因为辩证否定。FreeBSD 是 UNIX 直接后裔,而 Linux 只是仿制品,而很多协议又离不开 UNIX,所以你注定了要来到这里。
按照我个人观点而言,追求软件的稳定和新,既要有二进制源,又要能编译安装。除了 FreeBSD 之外我找不到 Linux 系统。(VoidLinux 缺乏类似 USE 的控制系统)
BSD 三则授权协议:并允许自由分发。GPL 与 BSD 协议,究竟何者是真正的自由?GPL 最多只是通过限制自由来确保他所谓的自由罢了。学习 BSD 就和学习哲学一样,本身并不是为了某种确切的知识而去学习,而是为了自由而去学习(因为在大多数人眼中 BSD 已然不具有所谓的实用价值了)。那么在这一点上,可以说,按照他们的想法,BSD 与其他操作系统有根本上的不同——即 BSD 是真正的自由。
FreeBSD 是学院派的开源实践产物,也是 UNIX 哲学的忠实践行者。
远离碎片化的 Linux 发行版,使得选择困难症用户免受痛苦。
BSD 是一个完整的 OS,而不是内核。内核和基本系统作为一个项目来整体维护。——请注意,这是所有 Linux 系统的缺陷所在。没有事实上的基本系统的概念和区分会造成一系列违反直觉的事情。
Linux 社区已经成为一个肮脏的泥潭,无论是内核开发还是用户群组。——见文学故事。
选择 FreeBSD 的技术性原因
基本系统的配置文件与第三方软件配置文件相分离。你不会遇到像在 RHEL 中使用 rpm 命令卸载 glibc 导致系统毁灭这种奇葩的事情(无独有偶,有时候 yum 的错误操作会卸载包括使用中的所有内核),FreeBSD 的包管理器不干涉基本系统。
不会锁死软件版本,比如 Python GCC 等 Linux 中系统依赖的软件。所有软件都会滚动更新。这些非滚动版本的 linux 的软件版本基本上在该版本上锁死的,不会得到任何功能版本更新。滚动版本的又有一堆稳定性问题。BSD 所有版本共用一个 ports,只有极小一部分软件和系统版本硬捆绑,其他都是可以滚动更新的。而且由于基本系统的存在,第三方的软件几乎不影响系统的稳定性。Linux 则无法在软件更新和系统稳定之间找到平衡点。
文档齐全,所有涉及一般性的问题 Handbook 手册都有记述。ArchLinux 的 Wiki 虽然有很多,但大都年久失修且不成体系。
安全漏洞相比于 Linux 较少。
可以避免在产品/架构中出现共同故障点。
接近 2 年的版本发布周期,4 年的维护周期赋予了 FreeBSD 稳定性。
通过 BSD 的 Ports 可以编译安装软件,进行自由配置。
ZFS 文件系统可以被配置为
\
分区。ZFS 被誉为最强大的文件系统。Jail 与 byhve 虚拟化,不必配置底层虚拟化,节约系统资源。
传统的 BSD INIT 引导,使你免受 systemd 迫害。
DTrace 框架与 GEOM 存储框架。
Linux 二进制兼容层,可运行 Linux 软件,只要其支持 CentOS 或 Ubuntu/Debian。且软件运行速度快于 Linux。
安全事件审计。
不同于 Linux 驱动捆绑内核的做法, FreeBSD 的驱动在大致上与内核解耦合。
Linux 内核开发是一个相当封闭的过程,只有少数人能够参与直接提交代码。而 FreeBSD 秉持人人自由开发的理念,目前你可以直接在 Github 上提交你的代码,或者注册个账号在 https://reviews.freebsd.org/ 进行大规模变更。
另请参见 Linux 内核编码风格。而 FreeBSD 的代码风格是 Kernighan & Ritchie 的《C 程序设计语言》中使用的风格。
由于 Ports 的存在,FreeBSD 的老系统的软件源仍然可以正常使用,而不像 Linux 那样一旦过期就没有软件源可用了。
参考文献
选择 FreeBSD 的社会意义
Linux Kernel 由 Linus 一人裁决:“Linus Torvalds 是决定改动能否进入 Linux 内核的最终裁决者。”而 FreeBSD 最终由两年一届的核心团队集体决策。
GNU 与开源软件运动已走到了尽头
思考题
显而易见:目前 FreeBSD 上的桌面部件的缺失很大程度上是因为他们过分依赖了 Linux 特有函数库,比如包含
ip
命令的iproute2
软件包。更多的原因则是因为这些桌面或部件和 systemd 做了深度捆绑或者根本就是强制依赖,比如NetworkManager
。而 Samba 开发者则会说“We use Linux, we develop for Linux, all others please submit patches”。FreeBSD 社区的人把这种行为叫做“Linuxism”(Linux 主义/Linux 歧视),你会在文学故事章节里引用的链接中再次见到这个词,且某些人以此为豪。这种行为会导致何种后果我们不得而知,但是这种程序愈来愈多了,而且有成为主流的趋势,甚至就连大部分开发者在开发程序时也不再考虑兼容 init,比如
todesk
。甚至 Java 程序都丧失掉了他的可移植性,为什么 FreeBSD 上的 Eclipse 将近两年没有更新?就是因为这类捆绑问题。最近甚至还有了systemd-boot
来取代grub2
,在可预见的未来,Linux 将被 systemd 统一。而其程序(预计所有可运行在 Linux 上的程序)也不再具有任何的可移植性。或许 Linux 的开源到了尽头。“你可以继续造你的轮子,但是你不兼容我的 systemd 你就运行不了任何程序。”现在 FreeBSD 所面临的这种困境,将是所有人要面对的。
Linux 已经完完全全背弃了他所出发的哲学与思想这件事是确凿无疑的。
真的是这样吗?又为什么会这样,你怎么看?
选择 FreeBSD,就是选择在 Linux 被 systemd 及其背后的商业公司控制以后,还能够保留一份火种。纵观各大操作系统,有能力替代的,开源的操作系统只有 FreeBSD。
选择 FreeBSD,就是选择保留下一份真正开源的、自由的操作系统。能够使开源事业继续坚持下去,并践行真正的 UNIX 哲学,不走改旗易帜的邪路,封闭之路。
进一步了解
最后更新于