Free BSD,Linux之比较
1. Linux
优点: 充分发挥 PC 的功能,花样极多,玩起来很有趣,各方面的表现都不错。
缺点: 太过自由,以致於发散掉了,维护方面比 FreeBSD 麻烦(对一般人来说)。
-> 适合喜欢「玩 PC」,更甚於「玩 UNIX(Network)」的人。
2. FreeBSD
优点: 非常 UNIX、非常 Free、非常 BSD -- UNIX 的理想归宿!!
缺点: 太过 UNIX,以致於玩下去很难收手 ^^;;
-> 适合喜欢 UNIX,有心好好经营 service 的人;也是 programmer 的理想 OS。
FreeBSD Core Team 并不是刻意忽略「入门的方便性」,只是人力有限,把主力投注在「UNIX 风味的主题」上。
FreeBSD 对硬体的需求实在也不会太严刻,对刚接触的人,建议使用「最一般化」的硬体,像是: IDE (BigFoot)、ne2000 compatible 杂牌卡,S3Trito64,最烂的14寸VGA,(atapi-cdrom)。
想说明的是,希望对 FreeBSD 有兴趣的人,别买些「太高档(或者说奇怪:p)」的硬体,到时候装不起来就骂 FreeBSD 怎麽这麽烂 ^^;;
可以想一下,到底想试试自己的PC能跑多少东西,还是真的有心进入 UNIX 的世界 :-)
=== 为什麽要选择 FreeBSD ?! ===
嗯...现在有许多免费的 i386 UNIX (在 386 以上 PC 执行的 UNIX),例如Linux、NetBSD、FreeBSD、OpenBSD、386BSD 等,究竟你要如何选择属於你的UNIX ?
玩了三年多的 UNIX (一年半 Linux,两个月 NetBSD,两年 FreeBSD) 笔者只能以非正式的说法说说笔者的个人意见,希望这些意见不要引起争论各个作业系统优缺点的大战。
Linux 是容易上手而且好玩的作业系统,也是现今最多人玩的,正因为它太好装了,只要硬体没问题闭著眼睛都装的起来,因此如果你是 i386 UNIX 的新手,这可说是你入门的最佳试金石。
NetBSD 支援 13 种硬体架构,这也是它的强处,算是 multi-platform 的典范。 也因此,i386 在里面只算是 13 种中的一种,自然无法取得全力的发展,再加上其 core team 比较不活跃,所以在i386 上的硬体支援并不是很好。
OpenBSD 源自 NetBSD,刚出来半年左右,专门把 NetBSD 跟 FreeBSD 的新功能跟修正加在一起,算是 NetBSD+FreeBSD 的混血儿,由於其 core team 人数少,加上程式码很少是自己开发的,因此现在前景还不明朗。
FreeBSD 跟 NetBSD 一样都是基於 4.4 BSD-lite,但是 FreeBSD 现在只支援 i386,所以在 PC 上来说要比 NetBSD/OpenBSD 好太多了,在从前NetBSD 跟 FreeBSD 的 core team 是一起的,後来分家了。FreeBSD 具有一般 BSD 系统的稳定,又从其他作业系统学习了许多优点,再加上自己开发的各种新功能,时时改进演算法以增加执行效率,现在已是免费 BSD 系列中效率最好的,最主要是因为core team 活跃又乐於接受使用者的意见并改进。
* 什麽是 core team ?
core team 是一个专门对原始程式码做发展跟维护的组织,Linux 没有 core team,NetBSD/OpenBSD/FreeBSD 有。有 core team 的优点是原始程式码会有一致性,会有组织的被更新,但是整个 OS 的活力也操在core team 的手中,这就是 NetBSD 在笔者眼中无法兴盛的原因。而没有core team(如 Linux),好处是全世界每个人都可以发表自己的修正(patch) 不须经由 core team 的审核,但缺点是 source code 杂乱无章且可能会不同步。所以 Linux 在更新东东的时候,必须由使用者自己注意 kernel、gcc、library、net-tool、modules、甚至各种 kernel patch 版本的一致性。(或许在 RetHat Linux 已经稍微好一点了)而这些可怜的情形在 FreeBSD 身上都不会发生。
* 要选择怎样的 OS 必须看你自己的需求及能力,还有周遭玩的人多不多,多装几种,多装几次,自己感觉一下才是真的 !
(其实只要不怕 format 硬碟,吃饱撑著,装什麽东西、装几次都好说嘛)
1. 稳定性
一个作业系统最重要的就是稳定性,比方说能连续开机多久,能忍受多少系统负荷,网路不稳时会不会当掉,网路负荷太大时网路会不会死掉,笔者个人觉得 FreeBSD > Linux。
尤其许多研究已经提出,Linux 在高系统负荷下的表现相当不好,而FreeBSD 却不会。
2. 网路
争夺封包(packet)的速度,除了网路卡好坏之外,最重要的还是作业系统跟驱动程式,使用一样的网路卡 FreeBSD > Linux >>> DOS+NCSA. 而且FreeBSD 在 RPC 及 NFS 上都比 Linux 来的稳定及快速。毕竟 BSD 在网路这方面是始祖.
3. 移植软体的难易程度
现今一般的软体大多是为 BSD 写的,所以一般软体在 BSD 上会比在SYSV 上容易编译。而 FreeBSD 是 4.4BSD based,Linux 是 SYSV 加上 BSD-extension,所以在 Linux 上编译东西有时是个梦靥 (不是很SYSV 也不是很 Posix 也不是很 BSD)。不过现在越来越多的软体会注意到 Linux,因为 Linux 使用者太多了。
FreeBSD 有收集数百种软体的 ports,只要打个 make 就可以轻松编译,不然也有编译好的 binary 可以直接安装使用。
4. 硬体支援
Linux 支援最多种的硬体,NetBSD 最少,而 FreeBSD 夹在中间正急起直追中,而且许多 FreeBSD 的 driver 都写的相当棒,反而後来被移植到 NetBSD 跟 Linux。
5. Merged VM/buffer cache
Linux 的磁碟 I/O 速度是一流的,因为一来 Linux 的 ext2fs 是async-mount 的,写入资料时不须一直更新 meta-data,最主要还是Linux 会把目前没用到的记忆体尽量拿来做 I/O buffer。一般传统BSD(如 SunOS,NetBSD)都只有固定大小的 buffer,而 FreeBSD 自己发展出类似 Linux 的 Merged VM/buffer cache,大大提高了 I/O 时的效率以及记忆体利用率,而且现在 FreeBSD 已支援 async-mount,使得 FreeBSD 的档案系统已经跟 Linux 不相上下,甚至更胜一筹。
6. tty 限制
现在 Linux 要用超过 64 个 tty 除了必须更改应用程式的原始程式码,还必须做 kernel patch,而 FreeBSD 内定支援 tty[pqrsPQRS][0-9a-v]总共 256 个 tty,只要到 /dev 下用 MAKEDEV 把 tty 建出来,在/etc/ttys 加入新的 tty 设定,再到 kernel config file 中把 pty的数目打入 256 就好了,要使用超过 256 tty 也相当容易修改。
7. 完整原始程式码取得
一般人使用的 Slackware 版 Linux 是由 Slackware 公司整理,所以一般人要取得完整原始程式码必须自己东抓西抓,这也是 Linux 在NCTUCCCA 的 mirror 量这麽大的缘故。但往往 Linux 使用者找不到自己须要的原始程式码,如果没有那些整理 Linux packages 的公司,以及帮忙 Linux 发展系统工具及函式库的人,Linux 充其量算是只有Linus 写的 kernel 而已,不过最大的问题还是各家写出来的东东一致性的问题。不过新出来的 RedHat 已经提供一个简单的软体同步与更新的方法 - RPM,也算是稍微抒解这一类问题的严重性。
而 FreeBSD 提供完整的系统原始程式码, /bin /sbin /usr/bin /usr/sbin /usr/lib ... 甚至 /etc /usr/share/FAQ 都在里面,让你可以很容易的更改自己想要的东东,要更新系统时也可以抓取最新的 source 打个 make world 就成了 (当然也可以用 core team 做好的 binary),它甚至会自动检查各目录的权限是否正确。简单一句,就是非常的有组织! 利用 binary 来升级只要不到一小时就可以完成,甚至有写好的 script 可以使用。
8. 目录档案组织化
FreeBSD 根据 4.4BSD 规范,什麽档案应该在那里,应该是什麽权限,编译时应该连结(link)成 static 或 dynamic,都非常的严谨,该有的
manpages 绝对不会少。不像 Linux,写 kernel 一个人、写 library 另一个,写 manpages 又另一个、整理 utility 又另一个,各自为政不同步,常常档案到处乱放或是重覆,manpages 不完整,许多目录档案为了新旧版本的相容性而 link 来 link 去。
9. 系统安全
FreeBSD 使用 shadow password,支援 secure NFS,不像 Linux 要自己安装 shadow password,将来编译 ftpd,sudo 时又得改来改去。因为USA 版的 DES 禁止输出到美加以外地区,FreeBSD 为了全世界广大的使用者,在密码系统上内定使用 MD5 编码,它比 DES 来的安全,如果你不跟 SunOS 类的 YP server 跑 NIS,那你是不须要安装 DES 的。如果你要使用 DES,你可以安装可以自由流动的 DES 版本 (非 USA 版),在/usr/share/FAQ/Text/FreeBSD.FAQ 中有提及那里可以取得,或是到台湾任何一个 FTP 站取得。
此外,FreeBSD 的使用者登入控制,以及档案安全层级保护都比其他作业系统来的好 (kernel secure level)。
FreeBSD 的 core team 会注意 source code 跟 security 的同步性,一有新的问题或 sendmail 漏洞,就会立刻更新程式码,已达到最佳的系统安全。
8. core team 活跃
FreeBSD 的 core team 非常活跃而且谦虚,带动整个 FreeBSD 迅速发展,每天都有新的 patch 出来,让使用者以 sup/ctm 来定时自动更新原始程式码。
9. 4.4BSD-lite based
由於 FreeBSD 是基於 4.4BSD-lite 的,因此带来了许多 BSD 的好处,像网路速度稳定、容易移植软体、安全快速等。
10. 从 Linux 而来的优点
FreeBSD 正在把 Linux 的 dosemu 移植过来,甚至可以直接执行 linux 的 binary (linux emulator),还有移植 Linux 支援的一些驱动程式。
11. 支援 LKM
FreeBSD 支援 Loadable kernel module,也就是说许多驱动程式在编译 kernel 时可以不必做进去,一旦你要用到时,kernel 会自动 /lkm/*.o 载入该 driver,这样可以提高弹性并减小 kernel 使用的记忆体空间。未来 FreeBSD 会朝向 LKM device 迈进,就像 Solaris一样不需编译 kernel。 :)
12. 直接执行 gzip 的程式
FreeBSD 可以直接执行 gzip 的程式,如果你把所有的执行档都 gzip 起来,不就等於用 stacker/doublespace 一样了 ?! :)
13. 线上监控
kernel 支援 tty snoop,可以监控线上使用者 (不像 linux 那个半调子ttysnoop,会导致许多问题)。
14. 众多档案系统
支援 MFS (Memory File System),类似 SunOS tmpfs 的东东,还有许多 4.4BSD 定义的档案系统,如 LFS、NULLFS、PORTALFS、UMAPFS、UNIONFS。
15. Interleaved swap
当你有一个以上的 swap 装置时,会同时使用以增加速度 (尤其是使用SCSI 装置时),而不是像 Linux 一个接著一个使用。
16. 新的 slice 观念
新的 slice 观念使得 FreeBSD 对其他 OS 的 partition 相容性比传统的 BSD 好很多,在安装上也较为容易。
17. Binary 相容性
FreeBSD 可以执行 NetBSD-static,BSDI-static,Linux-a.out/elf,SCO-static 等等的 binary code,增加不少相容性。
18. ccd (软体 RAID)
Concatenated disk (ccd) 驱动程式能让你拥有 Strip、Mirror,甚至Parity 等 RAID card 才有的功能。
19. 多国语言的支援
FreeBSD 的 localization 是所有免费作业系统中做的最好的,甚至已经有了亚洲语系(中文、日文)的安装介面。
20. 有组织的原始程式码
FreeBSD 的程式开发者在撰写程式码的时候,会去参考各种 RFC 规范以及新的理论文献,因此 FreeBSD 的程式码有条不紊、层次鲜明;反观 Linux常常为了急就章而走捷径写出来的东西,到最後开发新功能时又必须改来改去。
不过随著时间的发展,Linux、*BSD 都会进步,对於免费的作业系统能越来越好自然是乐见其成的。
一般而言,如果你须要一台稳定快速的 Internet Server,FreeBSD 是你绝对的选择;如果你是个人使用或只是想学习 UNIX,Linux 跟 FreeBSD 都是很好的试金石。
Linux 浮上台面已经四年了,而 FreeBSD 以短短的两年时间就拥有了众多的使用者人口 (尤其是伺服器,以及程式开发者),高手的选择必有他的道理。
用过 FreeBSD 才知道,『PC 不只是很便宜的工作站』 :)
但是,Linux 的优点是『好玩』,而且随著 kernel 日渐更新,很多东西也越来越稳定。我们系上从两年前开始就用 Linux 当 mail, acounts, ftp, gopher, terminal, ppp, slip, BBS servers, 最近又加入 WWW server,服务几百位师生。
目前系上已经有好几台 Linux PC 一起运作,其中包含 NFS,与 WinNT,Win95的连线与资源共享(by SAMBA packages),我们也在测试用其中一台摹拟 Novell Server.
我们的同时上线人数一般不会超过 100 人,用 Linux 来应付绰绰有馀。如果你想开的是一次几百人上线的 BBS 大站,那可能 FreeBSD 会比较适合。不过话说回来,能开这种大站的单位都很有钱,大都拿 SUN 或其他 workstation 级的来 run。
Linux 另一个优点是全球的 Linux users 远超过 FreeBSD,这使得 Linux 上面新的软体跟硬体 drivers 更新数目及速度远超过 FreeBSD。例如,DOSEMU 可以摹拟 DOS,WINE 可以摹拟 Windows 3.1,smbfs 可以将 Win95 或 WinNT 上的partition 拿来用:这些在 FreeBSD 上面都还在发展中,甚至没有。新电脑硬体 drivers 的更新也是如此,几乎任何新的硬体都会有 Linux 迷很快地帮大家写好 drivers。你如果用过 FreeBSD 跟 Linux,你就会发现 FreeBSD 目前对硬体要求仍然比较『严格』(其实是还没有人写 drivers)。我用的 scanner,还有 voice modem,都已经有 Linux 迷写好程式,让我可以在 Linux 上scan 以及有语音信箱。
我个人的建议是,如果你是个人使用,或者网路同时上线人数不超过一百人以上,Linux 的确是好玩又实用,而且新的硬体很快地几乎都可以在 Linux 上使用。如果你要架的是几百人上站的机器,又没钱买 workstation,那 FreeBSD 在网路壅塞时的 performance 的确不错。如果是个人要『玩』,我并不建议FreeBSD,那会使你觉得提不起兴致(纯属个人观点)。
在 csie gopher 中有关 Linux 与 FreeBSD 的比较中,有一项是 FreeBSD 上software porting 比较 easy。但是这个 comment 随著 Linux users 群日渐庞大,我觉得已经有些改变:现在在 Linux 很多东西根本用不著 porting,因为很多软体根本就是 Linux fans 专门为 Linux 设计写出来的,反而要用这些东西需要额外费心去修改以便能在 FreeBSD 上使用。DOSEMU,smbfs 即是其中几个例子。据最近的 newsgroups,FreeBSD core team 有五十多人,但是 Linuxfans 散布在全球各地的 programmers 其数量根本无法计算。有心的话,比较一下 Linux 跟 FreeBSD announce newsgroups 就可知一二。
所以,我并不是很赞同一个 UNIX 的新手去玩 FreeBSD。但是,假如有人已经玩过 Linux ,或者在其他工作站级机器有过简单管理经验,那他们会发现FreeBSD 极易入手。玩过 FreeBSD 的人一定知道光要新增 partitions 就已经是一件麻烦的事。堂堂一个 FreeBSD 的 fdisk 介面连 M$DOS 的都不如,可见 FreeBSD core team 之目标不在一般连 ls, cp, tar 都不懂的 newbie。
另外一个动机是假如你必须要架一台超稳定的 Internet server,那 FreeBSD 是目前的 best choice。
其实呢,如果有心要玩,大可弄个大点的硬碟,同时装上两个系统,一定可以如鱼得水。我的 office 中同时有一台 FreeBSD,一台 Linux,各做各的事,也是很快乐。。。。
就目前使用者能观察到的来看, 一般相信 linux 的data-path-consumed process 的执行速度, 是众多x86 作业系统中最快的; 而 high load 下的网路则令人不能感到非常满意. 虽然 linux 第二版後网路部分有了很大的改善, 据 Linus 本人的说法, linux 在传 single package 已比 FreeBSD 还优胜, 但作为 NFS 或 high load netserver 还是显得略有不顺(所谓 "不顺" 与 "不稳" 无关). 毕竟, 考查 linux 的发展历史, 的确是先在 x86-embededscheduler, fs, 等核心process 执行部分, 最後才加进网路部分, process 执行最佳而网路稍逊乃是合理的结果.
一般建议如果机器用来执行程式 (如跑 project) 为主, 跑各式怪模怪样的小程式及 server, 或有非正统硬体者使用 linux 可能较佳.