第 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。
参考文献
Comparison of init systems,各大 init 对比图
GPL Software in FreeBSD Base,FreeBSD 基本系统中的 GPL 软件
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 中常用的一些软件和命令,比如没有
lspci
、free
。有些可以自己安装,有些则不行;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 上运行。
最后更新于