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 可能較佳.