不同的 BSD 有什么共同点?

rah*_*hmu 61 bsd distribution-choice

……它们之间有什么区别?我这样表述我的问题是为了明确表示我对意见之战不感兴趣,而是对不同风格的 BSD Unix 之间的客观比较感兴趣。理想情况下,我可以从在所有这些方面都有经验的用户那里得到反馈。

背景

我最近发现 Unix 不仅仅是 Linux。我在工作中使用 Solaris,它让我大开眼界。现在我对新的 unices 感兴趣,我想尝试一个新的 unices,我自然对 BSD 很好奇。

问题

我不是在寻求关于安装什么 BSD 的建议或意见;我想知道它们之间的差异(和共同点),以便我可以下定决心。问题是很难在它们之间进行适当的比较。

如果幸运的话,你会得到一些像这样草率的定义:

FreeBSD = Popular all-rounder.
NetBSD = Portable (runs on a lot of platforms, including a toaster)
OpenBSD = Security above anything else.
Run Code Online (Sandbox Code Playgroud)

(这可能是真的,但它并不是真的有用。我确信 FreeBSD 也是可移植和安全的......)

如果你不走运,你会陷入那些不可避免的 Unix 传说中的一个,关于项目拆分、分叉、基于知识/道德理由重新命名,Theo de Raadt 如何是一个极端主义者,以及 MacOS X 和 FreeBSD 如何在 20 多年前有一个共同的祖先。

引人入胜,但不是真正的信息,是吗?

BSD

我感兴趣的 BSD 是:

  • FreeBSD
  • 开放式BSD
  • NetBSD

和可选

  • 蜻蜓
  • 达尔文
  • ...

我的问题

为了更好地理解差异,这里有一个关于不同分布的一些相关问题的列表(我们可以使用这个术语吗?)。如果您在某种形式的表格数据下提出您的答案,那么您就是我的英雄!

  • 他们使用相同的内核吗?
  • 他们使用相同的用户空间工具吗?(有什么区别,如果有的话?)
  • 他们使用相同的包/源管理系统吗?
  • 他们使用相同的默认外壳吗?
  • 二进制文件可以在它们之间移植吗?
  • 来源是否可以在它们之间移植?
  • 他们使用不同的目录树吗?
  • 他们各自的社区有多大?它们的数量级是否相同?
  • 目前的发展有多少是共同的?
  • 它们之间的主要不兼容性是什么?

我不知道这些问题有多容易回答,以及这个问题与 StackExchange 格式的相关性如何。我从来没有遇到过一个简单的文档,它以清晰的方式列出了 BSD 之间的差异,这对于经验丰富的用户来说非常有用,可以轻松查看并做出选择。

Aki*_*Aki 50

我不认为我会给你和每个人提供完美的答案,但是,每天使用 BSD 系统工作,我相信我可以让你对 BSD 世界有一个有用的见解。我从来没有使用过 NetBSD,我不会谈论太多。

他们使用相同的内核吗?

不,尽管由于历史分叉而存在相似之处。每个项目都是单独发展的。

他们使用相同的用户空间工具吗?(有什么区别,如果有的话?)

他们都遵循POSIX。您可以期望一组工具在 *BSD 之间具有相同的功能。在 BSD 中的进程/网络管理工具中也经常看到一些明显的差异。

他们使用相同的包/源管理系统吗?

它们提供了一个打包系统,每个操作系统都不同。

他们使用相同的默认外壳吗?

不,例如 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
Run Code Online (Sandbox Code Playgroud)

它们并不真正支持稳定和快速的二进制仿真。不要依赖它。

来源是否可以在它们之间移植?

例如,只要您不使用内核代码或 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,您可以在一定程度上使用闪存,与 Linux 二进制文件有一定的兼容性。您可以安全地构建您的自定义内核(实际上这是推荐的)。总体来说是一次很好的学习经历。在非常旧的硬件甚至烤面包机上尝试 NetBSD 。

虽然各不相同,但都力求成为一个好的操作系统,它会比场景更匹配用户。作为学习经验,尝试所有这些(网络/开放/免费),但稍后您可能会发现自己在大多数情况下只使用 1 个(因为您对特定系统更了解或更适合社区)。

其他 BSD 是混合版本或只是稍微修改的版本,我发现最好靠近软件开发的源头(在 OpenBSD 上使用数据包过滤器,在 FreeBSD 上配置自己的桌面,...)。

作为个人笔记,我很高兴看到像你这样的爱好者,我希望你能在 BSD 世界中找到很多好东西。BSD 不是讨厌 Windows 或其他操作系统,而是喜欢 Unix。

  • +1 最后一句话。但我希望我可以为整个 +2 (6认同)
  • 向下滚动我确定这是吉尔斯的回答。感谢 Aki 的精彩回答! (5认同)
  • @MaxMackie - 我知道你的意思,我也在想同样的事情!:-) (2认同)
  • 哈哈我在这里不是很活跃所以我不知道吉尔斯是谁,但我很期待阅读他的回答! (2认同)

sr_*_*sr_ 16

(我不能给出一个完整的答案,但我也不能回避这个问题,所以......我只解决一些问题...... FreeBSD 是最常用的 BSD(2005 年),所以我尝试提供一些关于“其他人”的线索。)

  • 首先,您对单行解释是正确的,OpenBSD 的座右铭是“免费、功能性和安全性”,而 NetBSD 开发人员也努力创建一个功能性系统。
  • 二进制兼容性:您显然可以在 NetBSD 上运行 FreeBSD 二进制文件(我从未尝试过)。这是我所知道的 BSD 之间唯一的二进制兼容形式(除了 NetBSD 和 FreeBSD 的(有限的)Linux 二进制兼容性)。
  • 端口:NetBSD 和 DragonFlyBSD 的端口使用pkgsrc,OpenBSD 在这里,FreeBSD 在这里。您可以参考它来比较可用的软件包。各自的生态系统相似但不完全相同。
  • pkgsrc它的突出之处在于它具有便携性,也就是说,您也可以在 Minix 3 或 Linux 上使用它。因此,对它有非 BSD 的兴趣,并且(可能因此)有更多的端口。 pkgsrc-wip使贡献变得容易。
  • NetBSD最近引入了一个全面的自动测试框架(另请参阅 参考资料kyua),使他们能够运行自动化测试(还有rump,使得在用户空间中测试内核代码成为可能)。我认为它还得到了最彻底的 XEN 支持。与“便携性”任务稍有不同,他们引入了三个层次:“焦点”、“有机”和“生命支持”。他们还将 Lua 引入了基本系统。
  • 为了了解OpenBSD 的变化这些“论文”(主要是漂亮的幻灯片)是宝贵的资源,可以让您深入了解 OpenBSD 的最新发展。
  • DragonFlyBSD开发了他们自己的 ZFS 竞争者HAMMER,它显然不那么需要内存(可能功能不完整,我不知道)。
  • 我不同意@Aki缺乏对OpenBSD 或 NetBSD的支持,查看邮件列表,两者都提供了有用的社区——看看 你自己——被引用到联机帮助页并没有冒犯的意思。

底线?环顾四周并尝试一下。使用二进制包(通常与二进制版本一起提供,即不是用于-current.

编辑你可能有兴趣在他们的星球: undeadly.orgOpenBSD系统,blogs.FreeBSDish.org为FreeBSD和planet.netbsd.se所有的人?此刻())

  • 很好的答案。我认为有很多话要说,值得写一篇论文。我并不是说 OpenBSD 社区没有帮助。我做了一些关于二进制兼容性的研究,还有更多:http://www.netbsd.org/docs/compat.html 和 OpenBSD 上的 compat_linux。显然 Open 曾经有过 freebsd 二进制兼容:http://nixdoc.net/man-pages/OpenBSD/man8/compat_freebsd.8.html。正如你所说,它是有限的,我不会依赖它。 (5认同)