第 1.4 节 Linux 用户迁移指南

FreeBSD 与 Linux 不同之处

  • FreeBSD 仍然使用古老的 BSD init 而非 systemd;BSD init 与传统的 SysVinit 也不大相同——BSD 没有运行级别(runlevel),也没有 /etc/inittab,均由 rc 控制。

  • FreeBSD 所有用户 shell 默认均是 sh(14 之前 root 为 csh,普通用户为 sh),而非 bash(如果你喜欢,亦可切换为 bash 或 zsh);

  • FreeBSD 基本系统几乎不包含任何与 BSD 协议不兼容的软件(你可以自己额外安装)。

思考题

  • FreeBSD 致力于去 GNU 化,这意味着基本系统不使用 glibc、GCC 等软件。

你认为是 BSD 一直在去 GNU 化,还是 Linux 一直在 GNU 化?

  • FreeBSD 的用户配置文件和系统配置文件严格分离,即内核和基本系统与第三方应用程序是完全分离的;

  • FreeBSD 项目是作为一个完整的操作系统维护的,而非内核与 userland 单独维护;也就是说如果你要使用 FreeBSD,那么就只有一个 FreeBSD 可选;

  • FreeBSD 没有 free 命令也不支持安装这个包(FreeBSD 已不使用 procfs),FreeBSD 基本系统自带的文本编辑器有 ee 和 vi(不是软链接到 vim 的 vi,是真实的 nvi),没有预装 wget,而是 fetch。

参考文献

FreeBSD 的缺陷

  • FreeBSD 系统总体上不够现代化,缺乏现代操作系统应有的实现,比如 sdio 到了 FreeBSD 13 才有了实现、TCP 堆栈也远远落后于 Linux。

  • FreeBSD 没有为用户提供一个带 GUI 的基本系统,甚至显卡驱动都需要自己通过 Ports 编译安装(因为 drm 是 GPL,无法进入基本系统,目前在重写);

  • FreeBSD 的驱动水平较差,直到最近才将将支持 WIFI 6 的网卡,比如 AX210;

  • FreeBSD 的开发者非常少,这意味着你的 Bug 可能很久都无法得到解决,不是所有软件包都能时刻保持最新版;

  • FreeBSD 的资料相对较少,中文资料更少,除了本文以外的简体中文资料几乎为 0;

  • 由于 systemd 不兼容 Linux 以外的操作系统,导致很多软件比如 NetworkManager 无法移植,桌面环境的组件也无法完善;

  • FreeBSD 社区友好度相比普通开源社区仍有所欠缺。

  • 由于 FreeBSD 项目的基本目标和设计问题,FreeBSD 基本系统不包含一般 Linux 中常用的一些软件和命令,比如没有 lspcifree。有些可以自己安装,有些则不行;

  • FreeBSD 的两个文件系统 ZFS 与 UFS 都只能扩大不能缩小,一个奇怪的设计;

  • FreeBSD 缺乏上层应用软件设计,即使底层有类似 docker 的技术 jail 也没能发展起来;FreeBSD 的虚拟化技术 Byhve 也很难用,没有一个前端的 GUI 来控制,设定参数也缺乏一个统一的教程。

我们现在称为容器技术的概念最初出现在 2000 年,当时称为 FreeBSD jail,这种技术可将 FreeBSD 系统分区为多个子系统(也称为 Jail)。Jail 是作为安全环境而开发的,系统管理员可与企业内部或外部的多个用户共享这些 Jail。2001 年,通过 Jacques Gélinas 的 VServer 项目,隔离环境的实施进入了 Linux 领域。在完成了这项针对 Linux 中多个受控制用户空间的基础性工作后,Linux 容器开始逐渐成形并最终发展成了现在的模样。2008 年,Docker 公司凭借与公司同名的容器技术通过 dotCloud 登上了舞台。—— 什么是 Linux 容器?

基本对比

命令替代/软件替代

因为 Linux 广泛使用的也是 GNU 工具,因此只要理论上不是依赖于特定的 Linux 函数库,该工具都可以在 FreeBSD 上运行。

最后更新于

FreeBSD 中文社区 2024