...它们之间有什么区别?我这样提出我的问题是为了表明我对意见的争论不感兴趣,而是对 BSD Unix 的不同风格之间的客观比较感兴趣。理想情况下,我可以从拥有所有这些方面经验的用户那里获得反馈。
背景
我最近发现 Unix 不仅仅是 Linux。我在工作中使用Solaris,它让我大开眼界。现在我对新的 unice 很感兴趣,我想尝试一种新的,而且我自然对 BSD 很好奇。
问题
我并不是在寻求关于安装什么 BSD 的建议或意见;我想知道它们之间的差异(和共同点),以便我可以做出自己的决定。问题是很难对它们进行适当的比较。
如果你幸运的话,你会得到一些像这样的仓促定义:
FreeBSD = Popular all-rounder.
NetBSD = Portable (runs on a lot of platforms, including a toaster)
OpenBSD = Security above anything else.
(这可能是真的,但它并不是真正有用。我确信 FreeBSD 也是可移植且安全的......)
如果你运气不好,你就会陷入不可避免的 Unix 传说中,其中涉及项目基于知识/道德的分裂、分叉、品牌重塑,Theo de Raadt 如何成为一名极端主义者,以及 MacOS X 和 FreeBSD 如何在 20 多年前拥有共同的祖先。
令人着迷,但并没有真正提供信息,不是吗?
BSD
我感兴趣的 BSD 是:
- 自由BSD
- 开放BSD
- 网络BSD
以及可选的
- 蜻蜓
- 达尔文
- ...
我的问题
为了更好地理解差异,这里列出了有关不同分布的一些相关问题(我们可以使用这个术语吗?)。如果您在某种形式的表格数据下给出您的答案,那么您就是我永远的英雄!
- 他们使用相同的内核吗?
- 他们使用相同的用户空间工具吗? (如果有的话,有什么区别?)
- 他们使用相同的包/源管理系统吗?
- 他们使用相同的默认 shell 吗?
- 二进制文件可以在它们之间移植吗?
- 它们之间的源可以移植吗?
- 他们使用不同的目录树吗?
- 他们各自的社区有多大?它们是同一数量级吗?
- 其中有多少当前的发展是普遍的吗?
- 它们之间主要的不兼容性是什么?
我不知道这些问题是否容易回答,也不知道这个问题与 StackExchange 格式的相关性如何。我只是从来没有遇到过一个简单的文档,以清晰的方式列出了 BSD 之间的差异,这对于经验丰富的用户来说非常有用,可以轻松查看并做出选择。
答案1
我认为我不会为您和每个人提供完美的答案,但是,每天使用 BSD 系统进行工作,我相信我可以为您提供有关 BSD 世界的有用见解。我没有使用过 NetBSD,所以我不会过多谈论它。
他们使用相同的内核吗?
不,尽管由于历史分叉而存在相似之处。每个项目都是单独发展的。
他们使用相同的用户空间工具吗? (如果有的话,有什么区别?)
他们都遵循 POSIX。您可以期望 *BSD 之间的一组工具具有相同的功能。 BSD 中的进程/网络管理工具存在一些明显的差异也是很常见的。
他们使用相同的包/源管理系统吗?
他们提供了一个针对每个操作系统不同的打包系统。
他们使用相同的默认 shell 吗?
不,例如 FreeBSD 使用 csh,OpenBSD 使用 ksh。
二进制文件可以在它们之间移植吗?
不:
(XXXX@freebsd-6 101)file `which ls`
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 5.5, dynamically linked (uses shared libs), stripped
它们并不真正支持稳定和快速的二进制仿真。不要依赖它。
它们之间的源可以移植吗?
有些是的,例如,只要您不使用内核代码或 libc 代码(与操作系统紧密相关)。
他们使用不同的目录树吗?
不,它们与 Linux 非常相似。然而FreeBSD提倡使用/usr/local/etc作为第三方软件的配置文件。 OpenBSD 将所有内容放在 /etc 中...他们将所有第三方放在 /usr/local 中,而 Linux 发行版将按照他们认为合适的方式进行。一般来说,你可以说 *BSD 对此非常保守,事物属于它们所属的地方,这不是可以弥补的。
他们各自的社区有多大?它们是同一数量级吗?
FreeBSD 是最大且最活跃的,您可以通过许多不同的论坛、邮件列表、IRC 频道等来访问它...OpenBSD 有一个很好的社区,但主要通过 IRC 和邮件列表可见。
实际上,如果您认为需要一个好的社区,FreeBSD 就是您的最佳选择。 NetBSD 和 OpenBSD 社区以开发为中心,讨论新的改进等。他们并不真正喜欢做基本的用户支持或广告。他们希望每个人都是高级 unix 用户,并且能够在提出任何问题之前阅读文档。
目前的发展有多少是共同的?
由于真正免费的许可证代码可以在项目之间流动,OpenBSD 经常按照 NetBSD 修补他们的代码(因为它们的源有很多共同点),FreeBSD 采用并集成 OpenBSD 的数据包过滤器等。当涉及到驱动程序和其他方面时,这显然更困难内核的东西。
它们之间主要的不兼容性是什么?
它们在二进制形式上不兼容,但在语法和代码上大多兼容。您可以依靠它来实现代码的可移植性。它将在所有类型的 BSD 上轻松构建或/和执行,除非您太接近内核(ifconfig、pfctl...)。
您可以通过以下方式享受从 BSD 世界学习的乐趣:
尝试用 openbsd 盒子替换你的家庭路由器,玩转 pf 和网络。您会发现制作您想要的东西是多么容易。它干净、可靠、安全。使用 FreeBSD 作为桌面,它们支持很多 GPU,您可以在一定程度上使用 flash,与 Linux 二进制文件有一定的兼容性。您可以安全地构建自定义内核(实际上这是推荐的)。总的来说这是一次很好的学习经历。在非常旧的硬件上尝试 NetBSD,甚至烤面包机。
尽管它们有所不同,但它们都试图成为一个好的操作系统,并且它更适合用户而不是情况。作为一种学习体验,尝试所有这些(网络/开放/免费),但稍后您可能会发现自己在大多数情况下只使用其中一种(因为您对特定系统更了解或更适合社区)。
其他 BSD 是混合版本或只是稍加修改的版本,我发现最好靠近软件开发的源头(在 OpenBSD 上使用数据包过滤器,在 FreeBSD 上配置自己的桌面,...)。
就个人而言,我很高兴看到像您这样的爱好者,并希望您能在 BSD 世界中发现很多好东西。 BSD 并不是讨厌 Windows 或其他操作系统,而是喜欢 Unix。
答案2
(我无法给出完整的答案,但我也无法回避这个问题,所以......我只会解决一些问题......FreeBSD 是使用最广泛的 BSD(2005 年),所以我尝试提供一些有关“其他人”的线索。)
- 首先,你是对的忽略一行解释OpenBSD 的座右铭是“免费、功能性和安全”,NetBSD 开发人员也努力创建一个功能性系统。
- 二进制兼容性:你显然可以在 NetBSD 上运行 FreeBSD 二进制文件(我从未尝试过)。这是我所知道的 BSD 之间唯一的二进制兼容形式(除了 NetBSD 和 FreeBSD(有限的)Linux 二进制兼容性)。
- 端口:NetBSD和DragonFlyBSD的端口使用
pkgsrc
, OpenBSD 是这里, FreeBSD 的这里。您可以参考它来比较可用的软件包。各自的生态系统相似但不相同。 pkgsrc
它的突出之处在于它的便携性,即您也可以将它与 Minix 3 或 Linux 一起使用。因此,非 BSD 对它感兴趣并且(也许因此)有更多的端口。pkgsrc-wip
使贡献变得容易。- 网络BSD最近推出了彻底的自动测试框架(也可以看看
kyua
)使他们能够运行自动化测试(并且有rump
,使得可以在用户空间中测试内核代码)。我认为它还获得了最彻底的 XEN 支持。与“便携性”的追求稍有不同,他们引入了三层:“焦点”、“有机”和“生命支持”。他们还将 Lua 引入到基础系统中。 - 为了抓住潮流开放BSD,这些“论文”(大部分是漂亮的幻灯片)是宝贵的资源,可以让您深入了解 OpenBSD 的最新发展。
- 蜻蜓BSD开发了自己的 ZFS-contender,锤子,这显然对内存的需求要小得多(可能功能不完整,我不能说)。
- 我不同意@Aki 的观点缺乏支持对于 OpenBSD 或 NetBSD,查看邮件列表,两者都提供了有用的社区——有看看 你自己-- 参考联机帮助页并无冒犯之意。
底线?环顾四周并尝试一下。使用二进制包(通常与二进制版本一起提供,即不用于来自 的快照-current
),获得可用的 BSD 系统并不需要太多工作。
编辑您可能对它们的行星感兴趣:
undeadly.org
对于 OpenBSD,博客.FreeBSDish.org对于 FreeBSD 和planet.netbsd.se
为了他们全部(向下眼下 (?))