Menu

Unix傳奇(上篇)

瞭解過去,我們才能知其然,更知所以然。總結過去,我們才會知道我們明天該如何去規劃,該如何去走。在時間的滾輪中,許許多的東西就像流星一樣一閃而逝, 而有些東西卻能經受著時間的考驗散發著經久的魅力,讓人津津樂道,流傳至今。要知道明天怎麼去選擇,怎麼去做,不是盲目地跟從今天各種各樣琳瑯滿目前沿技 術,而應該是去 —— 認認真真地瞭解和回顧歷史。 

Unix是目前還在存活的操作系統的元老了,走過了40年的歷程(參看《Unix 40年:Unix年鑑》、《Unix 40年:昨天,今天和明天》)。在技術更新如此迅速的電腦世界的今天,Unix始終保持它那神聖的光環,它那曲折和令人嘆息的歷史,以及由它引發的思想變革,對當今電腦文化造成的深遠影響,這40年所產生的人和事,讓它成為了一個傳奇,不能不讓人為之驚嘆。

這是一段所有從事電腦行業人員尤其是軟件開發人員需要瞭解的歷史。Unix的傳奇歷史是整個電腦世界文化最具代表性的,它對整個電腦世界文化的影響也是最巨大,最深遠的。他給人帶來的不單單的對過去的回味,更為我們帶來了電腦世界的新思潮。

瞭解這段的歷史的人,才能體會電腦世界變遷過程中的是是非非,才能瞭解電腦世界中的文化,從而才能參與到整個電腦革命的大潮中。希望這段歷史,這篇文章能讓你感受到電腦世界那強力的脈搏,從而讓你踏上這條令人充滿激情的道路。

上篇

  • Unix起源
  • Unix分裂
  • Unix的法律糾紛
  • GNU開源組織
  • Linux橫空出世
  • Linux今天的領袖

 

下篇

  • Unix與黑客文化
  • Unix的歷史教訓
  • Unix 家族譜
  • Unix的特點
  • Unix的影響和哲學
  • Unix痛恨者手冊

 

Unix 起源

 回顧Unix歷史,我們就要說一下一個叫MULTICS(Multiplexed Information and Computing Service)的項目。上世紀六十年代時,大部份電腦都是採用批處理(Batch Processing)的方式(也就是說,當作業積累一定數量的時候,電腦才會進行處理)。那時,我們熟知的美國電話及電報公司(American Telephone and Telegraph Inc.;AT&T)、通用電器公司(General Electrics;G.E.)及麻省理工學院(Massachusetts Institute of Technology;MIT)計劃合作開發一個多用途(General-Purpose)、分時(Time-Sharing)及多用戶(Multi- User)的操作系統,也就是這個MULTICS,其被設計運行在GE-645大型主機上。不過,這個項目由於太過複雜,整個目標過於龐大,糅合了太多的 特性,進展太慢,幾年下來都沒有任何成果,而且性能都很低。於是到了1969年2月,貝爾實驗室(Bell Labs)決定退出這個項目。

 熟悉這段歷史的人都知道,貝爾實驗室中的有個叫Ken Thompson的人,他為MULTICS這個操作系統寫遊戲了個叫「Space Travel」的遊戲,在MULTICS上經過實際運行後,他發現遊戲速度很慢而且耗費昂貴 —— 每次運行會花費75美元。退出這個項目以後。他為了讓 這個遊戲能玩,所以他找來Dennis Ritchie為這個遊戲開發一個極其簡單的操作系統。這就是後來的Unix。(值得一提的是,當時他們本想在DEC-10上寫,後來沒有申請到,只好在 實驗室的牆角邊找了一台被人遺棄的Digital PDP-7的迷你電腦進行他們的計劃,這台電腦上連個操作系統都沒有,於是他們用彙編語言僅一個月的時間就開發了一個操作系統的原型)他們的同事 Brian Kernighan非常不喜歡這個系統,嘲笑Ken Thompson說:「你寫的系統好真差勁,乾脆叫Unics算了。」Unics的名字就是相對於MULTICS的一種戲稱,後業改成了Unix。於 是,Unix就在這樣被遊戲和玩笑創造了,當時是1969年8月。也就是這一年,Linux之父Linus Torvalds在芬蘭出生了。

1971年,Ken Thompson寫了充分長篇的申請報告,申請到了一台PDP-11/24的機器。於是Unix第一版出來了。在一台PDP-11/24的機器上完成。這 台電腦只有24KB的物理內存和500K磁盤空間。Unix佔用了12KB的內存,剩下的一半內存可以支持兩用戶進行Space Travel的遊戲。而著名的fork()系統調用也就是在這時出現的。

到了1973年的時候,Ken Thompson 與Dennis Ritchie感到用彙編語言做移植太過於頭痛,他們想用高級語言來完成第三版,對於當時完全以彙編語言來開發程序的年代,他們的想法算是相當的瘋狂。一 開始他們想嘗試用Fortran,可是失敗了。後來他們用一個叫BCPL(Basic Combined Programming Language)的語言開發,他們整合了BCPL形成B語言,後來Dennis Ritchie覺得B語言還是不能滿足要求,就是就改良了B語言,這就是今天的大名鼎鼎的C語言。於是,Ken Thompson 與Dennis Ritchie成功地用C語言重寫了Unix的第三版內核。至此,Unix這個操作系統修改、移植相當便利,為Unix日後的普及打下了堅實的基礎。而 Unix和C完美地結合成為一個統一體,C與Unix很快成為世界的主導。

Unix的第一篇文章 「The UNIX Time Sharing System」由Ken Thompson和Dennis

Ritchie於1974年7月的 the Communications of the ACM發表。這是UNIX與外界的首次接觸。結果引起了學術界的廣泛興趣並對其源碼索取,所以,Unix第五版就以「僅用於教育目的」的協議,提供給各大 學作為教學之用,成為當時操作系統課程中的範例教材。各大學公司開始通過Unix源碼對Unix進行了各種各樣的改進和擴展。於是,Unix開始廣泛流 行。

Ken Thompson & Dennis Ritchie

 

Unix分裂

1978年,對 Unix而言是革命性的一年;因為學術界的老大柏克利大學 (UC Berkeley),推出了一份以第六版為基礎,加上一些改進和新功能而成的 Unix。這就是著名的「1 BSD(1st Berkeley Software Distribution)」,開創了Unix的另一個分支:BSD 系列。 同時期,AT&T成立USG(Unix Support Group),將 Unix變成商業化的產品。從此,BSD的 Unix 便和AT&T 的Unix 分庭抗禮,Unix就分為System IV和4.x BSD這兩大主流,各自蓬勃發展。

1979年發佈的Unix 第七版被稱為是「最後一個真正的Unix」,這個版本的Unix內核只有40K bytes。後來這個版本被移植到VAX機上(我在大學時學習C語言時用過這個VAX機,我還記得那時上VAX機最大的愛好就是使用talk命令和別人聊 天,呵呵)。20世紀80年代相繼發佈的8、9、10版本只授權給了少數大學。

1982年,AT&T基於版本7開發了UNIX System Ⅲ的第一個版本,這是一個商業版本僅供出售。為瞭解決混亂的UNIX版本情況,AT&T綜合了其他大學和公司開發的各種UNIX, 開發了UNIX System V Release 1。這個新的UNIX商業發佈版本不再包含源代碼,所以加州大學Berkeley分校繼續開發BSD UNIX,作為UNIX System III和V的替代選擇。BSD對UNIX最重要的貢獻之一是TCP/IP。BSD 有8個主要的發行版中包含了TCP/IP:4.1c、4.2、4.3、 4.3-Tahoe、4.3-Reno、Net2、4.4以及 4.4-lite。這些發佈版中的TCP/IP代碼幾乎是現在所有系統中TCP/IP實現 的前輩,包括AT&T System V UNIX 和Microsoft Windows中的TCP/IP都參照了BSD的源碼。

同時,其他一些公司也開始為其自己的小型機或工作站提供商業版本的UNIX系統,有些選擇System V作為基礎版本,有些則選擇了BSD。BSD的一名主要開發者,Bill Joy,在BSD基礎上開發了SunOS,並最終創辦了Sun Microsystems。

 
Bill Joy

 1991年,一群BSD開發者(Donn Seeley、Mike Karels、Bill Jolitz 和 Trent Hein)離開了加州大學,創辦了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常見的Intel平台上提供全功能商業BSD UNIX的廠商。後來Bill Jolitz 離開了BSDI,開始了386BSD的工作。386BSD被認為是FreeBSD、OpenBSD 和 NetBSD、 DragonFlyBSD的先輩。

這是一個AT&T妄圖私有化的Unix的時代。為了私有化Unix,1986年IEEE指定了一個委員會制定了一個一個開放作業系統的標 準,稱為 POSIX (Portable Operating Systems Interface)。最後加上個X,不知道是為了好聽,還是因為這本質上是UNIX的標準。當然,AT&T的Unix取得了這個標準制訂戰爭的 勝利,還取得了Unix這個註冊商標。此時BSD的擁護者自喻為冷酷無情的公司帝國的反抗軍。就銷售量來說,AT&T UNIX始終趕不上BSD/Sun。到1990年,AT&T與BSD版本已難明顯區分,因為彼此都有採用對方的新發明。

 這段時期,從實驗室出來的被全世界所分享的Unix,正處於被私有化的關鍵時期。(這裡有一個笑話——《Alice夢遊UNIX仙境》)

 

Unix的法律糾紛

 Berkeley Software Design, Inc(BSDI)很快就與AT&T的UNIX Systems Laboratories(USL)附屬公司產生了法律糾紛,USL是AT&T註冊的公司。AT&T為了擁有System V版權,以及Unix商標,為了壟斷Unix,1992年,USL正式對BSDI提起訴訟,說BSD剽竊他的源碼。而最終了結了好評如潮的BSD系統。

由於最後判決懸而未決,這樁法律訴訟將BSD後裔的開發,特別是自由軟件,延遲了兩年,這導致沒有法律問題的Linux內核獲得了極大的支持。 Linux跟386BSD的開發幾乎同時起步,Linus說,當時如果有自由的基於386的Unix-like操作系統,他就可能不會創造Linux。儘 管無法預料這給以後的軟件業究竟造成了什麼樣的影響(如果沒有這個法律糾紛,很有可能沒有今天的革命性的Linux),但有一點可以肯定,Linux更加 豐富了這塊土壤。

這場官司一直打到 AT&T將自己的Unix系統實驗室賣掉,新接手的Novell公司採取了一種比較開明的做法,允許BSDI自由發佈自 己的BSD,但是前提是必須將來自於AT&T的代碼完全刪除,於是誕生了4.4 BSD Lite版,由於這個版本不存在法律問題,4.4BSD Lite成為了現代BSD系統的基礎版本。

這樁訴訟最終在1994年1月了結,更多地滿足了BSDI的利益。伯克利套件的18,000個文件中,只有3個文件要求刪除,另有70個文件要求修 改,並顯示USL的版權說明。這項調解另外要求,USL不得對4.4BSD提起訴訟,不管是用戶還是BSDI代碼的分發者。於是,BSD Unix走上了復興的道路。BSD的開發也走向了幾個不同的方向,並最終導致了FreeBSD、OpenBSD和NetBSD的出現。

從AT&T意識到了Unix的商業價值,不再將Unix源碼授權給學術機構以來,到以後的幾十年,Unix仍在不斷變化,其版權所有者不斷 變更,授權者的數量也在增加。Unix的版權曾經為AT&T所有,之後Novell擁有了Unix,再之後Novell又將版權出售給了 SCO(這一事實雙方尚存在爭議)。有很多大公司在取得了Unix的授權之後,開發了自己的Unix產品。(幾年前,據傳聞微軟為了限制Linux,微軟 讓SCO到法院告Linux剽竊其源碼)

由於Unix是由C語言寫的,所以修改和移植都很容易,因此,很多商業公司及學術機構均加入這個操作系統的研發,各個不同版本的Unix也開始蓬勃 發展。這才產生了今天這麼多的各式各樣的Unix衍生產品。如AIX、Solaris、HP-UX、IRIX、OSF、Ultrix等等。(這些商業化的 Unix基本上都是源於AT&T授權的Unix System V)

 

Unix開源組織

AT&T的這種商業態度,讓當時許許多的Unix的愛好者和軟件開發者們感到相當的痛心和憂慮,他們認為商業化的種種限制並不利於產生的發 展,相反還能導制產品出現諸多的問題。隨著商業化Unix的版本的種種限制和諸多問題,引起了大眾的不滿和反對。於是,大家開始有組織地結成「反叛聯盟」 以此對抗欺行罷市的AT&T等商業化行為。

另一方面,關於「大教堂」(集權、封閉、受控、保密)和「集市」(分權、公開、精細的同僚覆審)兩種開發模式的對比成為了新思潮的中心思想。這個新思潮對IT業產生了非常深遠影響。為整個電腦世界帶來了革命性的價值觀。

此 時,一個名叫Richard Stallman的領袖出現了,他認為Unix是一個相當好的操作系統,如果大家都能夠將自己所學貢獻出來,那麼這個系統將會更加的優異!他倡導的 Open Source的概念,就是針對Unix這一事實反對實驗室裡的產品商業化私有化。儘管Stallman既不是、也從來沒有成為一個Unix程序員,但在後 1980的大環境下,實現一個仿Unix操作系統成了他追求的明確戰略目標。Richard Stallman早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他們對代碼共享的使命感甚至比那些有更多Unix背景的人強烈。

為了這個理想,Richard Stallman於1984年創業了GNU,計劃開發一套與Unix相互兼容的的軟件。1985 年 Richard Stallman 又創立了自由軟件基金會(Free Software Foundation)來為 GNU 計劃提供技術、法律以及財政支持。儘管 GNU 計劃大部分時候是由個人自願無償貢獻,但 FSF 有時還是會聘請 程序員幫助編寫。當 GNU 計劃開始逐漸獲得成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是之後被 Red Hat 兼併的 Cygnus Solutions。

GNU組織的建立,延續了當年Unix剛出現時的情形,並為這種情形建立了可靠的法律和財務保障。GNU 工程十幾年以來, 已經成為一個對軟件開 發主要的影響力量, 創造了無數的重要的工具。例如:強健的編譯器,有力的文本編輯器,甚至一個全功能的操作系統。從那時開始,許多程序員聚集起來開始開 發一個自由的、高質量、易理解的軟件,讓這使得Unix社區生機勃勃,一派繁榮景象。

 自90年代發起這個計劃以來,GNU 開始大量的產生或收集各種系統所必備的組件,像是——函數庫(libraries)、編譯器 (compilers)、調式工具(debugs)、文本編輯器(text editors)、網站服務器(web server),以及一個Unix的使用者接口(Unix shell)等等,等等。但由於種種原因,GNU一直沒有開發操作系統的kernel。正當Richard Stallman在為操作系統內核傷腦筋的時候,Linux出現了。

Linux橫空出世

1990 年,Linus Torvalds還是芬蘭赫爾辛基大學的一名學生,最初是用彙編語言寫了一個在80386保護模式下處理多任務切換的程序,後來從Minix(Andy Tanenbaum教授所寫的很小 的Unix操作系統,主要用於操作系統教學)得到靈感,進一步產生了自認為狂妄的想法——寫一個比Minix更好的 Minix,於是開始寫了一些硬件的設備驅動程序,一個小的文件系統。這樣0.0.1版本的Linux就出來了,但是它只具有操作系統內核的勉強的雛形, 甚至不能運行,你必須在有Minix的機器上編譯以後才能玩。這時候Linus已經完全著迷而不想停止,決定踢開Minix,於是在1991年10 月5 號發佈Linux 0.0.2版本,在這個版本中已經可以運行bash 和gcc。

從一開始,Linus就決定自由擴散Linux,包括原代碼,隨即Linux引起黑客們(hacker)的注意,通過電腦網絡加入了Linux的 內核開發。Linux傾向於成為一個黑客的系統——直到今天,在Linux社區裡內核的開發被認為是真正的編程。由於一批高水平黑客的加入,使 Linux 發展迅猛,幾乎一兩個禮拜就有新版或修正版的出現,到1993年底94年初,Linux 1.0終於誕生了!Linux 1.0已經是一個功能完備的操作系統,而且內核寫得緊湊高效,可以充分發揮硬件的性能,在4M內存的80386機器上也表現得非常好,至今人們還在津津樂 道。時至今日,kernel的版本已經出到2.6。Linux的發展不像傳統的軟件工程,它完全是透過網絡,集合世界各地的高手而成的一套操作系統,在這 裡我們也可以見識到網絡快速傳播的威力。Linux初次讓整個世界感覺到了開源力量和網絡力量的如此強大。(Linux 的標誌和吉祥物是一隻名字叫 做 Tux 的 企鵝,標誌的由來是因為Linus在澳洲時曾被一隻動物園裡的企鵝咬了一口,便選擇了企鵝作為Linux的標誌。)

Linux 的歷史是和GNU緊密聯繫在一起的。從1983年開始的GNU計劃致力於開發一個自由並且完整的類Unix操作系統,包括軟件開發工具 和各種應用程序。到1991年 Linux 內核發佈的時候,GNU已經幾乎完成了除了系統內核之外的各種必備軟件的開發。在 Linus Torvalds 和其它開發人員的努力下,GNU組件可以運行於Linux內核之上。整個內核是基於 GNU 通用公共許可,也就是GPL(GNU General Public License,GNU通用公共許可證)的,但是Linux內核並不是GNU 計劃的一部分。1994年3月,Linux1.0版正式發佈,Marc Ewing成立了 Red Hat 軟件公司,成為最著名的 Linux 分銷商之一。

嚴格來講,Linux這個詞本身只表示Linux內核,但在實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程 各種工具和應用程序的操作系統(也被稱為GNU/Linux)。基於這些組件的Linux軟件被稱為Linux發行版。一般來講,一個Linux發行套件 包含大量的軟件,比如軟件開發工具,數據庫,Web服務器(例如Apache),X Window,桌面環境(比如GNOME和KDE),辦公套件(比如OpenOffice.org),等等。

1991至1995年間,Linux從概念型的0.1版本內核原型,發展成為能夠在性能和特性上均堪媲美專有Unix的操作系統,並且在連續正常工 作時間等重要統計數據上打敗了這些Unix中的絕大部分。1995年,Linux找到了自己的殺手級應用——開源的web服務器Apache。就像 Linux,Apache出眾地穩定和高效。很快,運行Apache的Linux機器成了全球ISP平台的首選。約60%的網站選用Apache,輕鬆擊 敗了另兩個主要的專有型競爭對手。今天的LAMP(Linux , Apache, MySQL, PHP)已經成為了架構Web服務器的主要首選。

 現如今的Linux不但可以裝在幾乎所有的主流服務器上,當然也包括桌面的X86系統中。其還常常被用於嵌入式系統,機頂盒、手機、交換機、遊戲機、PDA、網絡交換機、路由器、等等,都是因為Linux那精彩的內核。

Linux的出現,不僅僅給世界帶來了一個免費的操作系統,也不僅僅是對Unix自由、共享的文化的延續,它的出現帶給了電腦世界自Unix、GNU以來更為成熟的思想和文化。

Linux今天的領袖

Linux和GNU關係是比較微妙的。那時,自由軟件基金會編寫的用戶軟件工具包鋪平了一條擺脫高成本專有軟件開發工具的前進道路。意識服從經濟, 而不是領導:一些新手加入了RMS的革命運動,高舉GPL大旗,另一些人則更認同整體意義上的Unix傳統,加入了反對GPL的陣營,但其他大部分人置身 事外,一心編碼。

Linus Torvalds巧妙地跨越了GPL和反GPL的派別之爭。他利用GNU工具包搭起了自創的Linux內核,用GPL的傳染性質保護它,但拒絕認同 Richard Stallman的許可協議反映的思想體系計劃。Linus Torvalds明確表示他認為自由軟件一般情況下更好,但他偶爾也用專有軟件。即使在他自己的事業中,他也拒絕成為狂熱分子。這一點極大地吸引了大多數 黑客,他們雖然早就反感Richard Stallman的言辭,但他們的懷疑論一直缺個有影響力或者令人信服的代言人。而Linus Torvalds正好充當了這一角色。

 Linus Torvalds令人愉快的實用主義及靈活而低調的行事風格,促使黑客文化在1993至1997年間取得了一連串令人驚奇的勝利,不僅僅在技術上的成功, 還讓圍繞Linux操作系統的發行、服務和支持產業有了堅實的開端。結果,他的名望和影響也一飛衝天。Torvalds成為了互聯網時代的英雄;到 1995年為止,他只用了四年時間就在整個黑客文化界聲名顯赫,而Richard Stallman為此花了十五年,而且他還遠遠超過了Stallman向外界販賣「自由軟件」的記錄。與Torvalds相比,Richard Stallman的言辭漸漸顯得既刺耳又無力。(參看《Linus Torvalds 語錄 Top 10》)

今天,我們也說不清楚是GNU Linux還是Linux GNU。Linux既不排斥開源,也不排斥商業化,Linus認為好的軟件是需要免費和商業化共同推進的。正是這種革命性的想法,造就了今天的Linux火紅的局面(參看《誰寫了Linux》、《Linux基金會的廣告》、《Linux Distribution Timeline》)。Linux就像一股清泉流入了所有人的心中,引發了很多的啟迪和思考。

 

Unix傳奇(下篇)>>>