第 1.3 节 为什么要使用 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.5 年的版本发布周期,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 的社会意义

思考题

显而易见:目前 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 哲学,不走改旗易帜的邪路,封闭之路。

进一步了解

最后更新于