NetBSD 与 OpenBSD 更相似一些(其实应该反过来说才更确切)。就操作系统而言,我现在能想到的有这些区别(用即将推出的 2.0 版做比较):
- 没有 /stand/sysinstall,配置一般用命令行。有一个叫 sushi 的 program 是个菜单式的系统管理界面,但有些东西好像还不 work。
- 网卡的配置文件是 /etc/ifconfig., 可以是 fxp0, xl0 等,每个网卡一个文件。
- Daemon 的启动用的是 NetBSD 的 rc.d 系统,该系统已经被 FreeBSD 5.x 采纳,所以如果用过 5.x 的话应该不陌生。
- 默认的 shell 是 csh (FreeBSD 用得实际上是 tcsh)。
- FreeBSD 用了 PAM,NetBSD 没有用,但 PAM 在 pkgsrc 里有。
- NetBSD 采用的 nsswitch,FreeBSD 好像没有。
- NetBSD 采用 raidframe,FreeBSD 采用 vinum。但这两者都已移植到了对方的系统。
- NetBSD 的防火墙采用 ipfilter,-current 里还加入了 OpenBSD 的 pf。在 NetBSD 2.0 里,可以采用 pkgsrc-wip 里的 pflkm 来加入 pf 的支持。FreeBSD 的防火墙诸位都应该比较熟悉了,我就不多说了。
另外一个显著的不同是 NetBSD 的 pkgsrc。尽管它是从 FreeBSD 的 ports 派生的,但在其后的演化中加入了许多新特性,比如用 buildlink 替代 DEPENDS,等等。与 FreeBSD 的 ports 比较,有这些不同:
- 软件安装的 prefix 是 /usr/pkg,而不是 /usr/local(当然如果你愿意,还可以把它变为 /usr/local)。这样做的好处就是,从源码编译安装的软件仍然可以安装到 /usr/local,而不与 NetBSD 的 pkg 混在一起。当然 FreeBSD 也可以把 prefix 设为不是 /usr/local,但不是所有的 package 都遵循,有的 package 使用 hardcode 的 prefix (/usr/local)。
- pkgsrc 把一个 software package 的不同的模块分解到不同的 pkg 里,这也是我比较喜欢 pkgsrc 的比较重要的一点。比如说,对于 php4 这个 pkg,在 FreeBSD 下就需要在编译时选择编译哪些模块,如果安装以后想要再增加新的模块(或去掉不用的模块),就需要重新编译。NetBSD 则不然,比如说你想安装 php4-mysql,在安装 php4 后,再进入 /usr/pkgsrc/databases/php4-mysql,然后 make && make install 就可以了,其他的 php4 模块也是如此。其他的例子还有 subversion,在 FreeBSD 下你或者安装 subversion,或者安装 subversion-python。在 pkgsrc 下,你可以安装 subversion-base,然后安装 py-subversion,还可以安装 ap2-subversion (apache2 的 webdav support),等等。在这一点上,我觉得 pkgsrc 有点象 Debian,把一个软件包拆成不同的功能块,分别放在不同的 pkg 里面。
- pkgsrc 不仅可以在 NetBSD 上使用,也可以在各种不同的 Linux distribution, FreeBSD, OpenBSD, Solaris, IRIX, AIX, Darwin (Mac OS X)。我个人就在 Linux 和 Solaris 上用过。
- pkgsrc 里的 pkg 虽然不如 FreeBSD 里面的多(因为要兼顾 NetBSD 支持的各种平台),但许多 missing 的 pkg 可以在 pkgsrc-wip (http://pkgsrc-wip.sourceforge.net/) 里面找到。wip 是 work in progress 的意思,一个 pkg 在加入 pkgsrc 之前,要经过 wip。wip 里面的 pkg 大多数都能很好地支持 i386,所以在 i386 上可以作为 pkgsrc 的补充。比如 jdk14 (这个是 NetBSD native 的),pflkm 现在还都是在 wip 里面。
关于 pkgsrc,详见 http://www.pkgsrc.org 。