Unix傳奇(上篇)

Unix傳奇(上篇)

 陳皓

 

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

 

Unix是目前還在存活的操作系統的元老了,走過了近乎40年的歷程。在技術更新如此迅速的計算機世界的今天,Unix始終保持它那神聖的光環,它那曲折和令人嘆息的歷史,以及由它引發的思想變革,對當今計算機文化造成的深遠影響,近40年所產生的人和事,讓它成爲了一個傳奇,不能不讓人爲之驚歎。

 

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

 

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

 

下面是本文的大綱:

 

上篇

Unix起源

Unix分裂

Unix的法律糾紛

GNU開源組織

Linux橫空出世

Linux今天的領袖

 

Unix與黑客文化

Unix的歷史教訓

Unix 家族譜

Unix的特點

Unix的影響和哲學

Unix痛恨者手冊

 

Unix 起源

 

回顧Unix歷史,我們就要說一下一個叫MULTICSMultiplexed Information and Computing Service)的項目。上世紀六十年代時,大部份計算機都是採用批處理(Batch Processing)的方式(也就是說,當作業積累一定數量的時候,計算機纔會進行處理)。那時,我們熟知的美國電話及電報公司(American Telephone and Telegraph Inc.AT&T)、通用電器公司(General ElectricsG.E.)及麻省理工學院(Massachusetts Institute of TechnologyMIT)計劃合作開發一個多用途(General-Purpose)、分時(Time-Sharing)及多用戶(Multi-User)的操作系統,也就是這個MULTICS,其被設計運行在GE-645大型主機上。不過,這個項目由於太過複雜,整個目標過於龐大,糅合了太多的特性,進展太慢,幾年下來都沒有任何成果,而且性能都很低。於是到了19692月,貝爾實驗室(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就在這樣被遊戲和玩笑創造了,當時是19698月。也就是這一年,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,可是失敗了。後來他們用一個叫BCPLBasic Combined Programming Language)的語言開發,他們整合了BCPL形成B語言,後來Dennis Ritchie覺得B語言還是不能滿足要求,就是就改良了B語言,這就是今天的大名鼎鼎的C語言。於是,Ken Thompson Dennis Ritchie成功地用C語言重寫了Unix的第三版內核。至此,Unix這個操作系統修改、移植相當便利,爲Unix日後的普及打下了堅實的基礎。而UnixC完美地結合成爲一個統一體,CUnix很快成爲世界的主導。

 

Unix的第一篇文章 The UNIX Time Sharing System”由Ken ThompsonDennis

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

 


Ken Thompson & Dennis Ritchie,

Unix分裂

 

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

 

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

 

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

 

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

Bill Joy

 

1991年,一羣BSD開發者(Donn SeeleyMike KarelsBill Jolitz Trent Hein)離開了加州大學,創辦了Berkeley Software Design, Inc (BSDI)BSDI是第一家在便宜常見的Intel平臺上提供全功能商業BSD UNIX的廠商。後來Bill Jolitz 離開了BSDI,開始了386BSD的工作。386BSD被認爲是FreeBSDOpenBSD NetBSDDragonFlyBSD的先輩。

 

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

 

       這段時期,從實驗室出來的被全世界所分享的Unix,正處於被私有化的關鍵時期。

 

Unix的法律糾紛

 

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

 

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

 

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

 

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

 

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

 

由於Unix是由C語言寫的,所以修改和移植都很容易,因此,很多商業公司及學術機構均加入這個操作系統的研發,各個不同版本的Unix也開始蓬勃發展。這才產生了今天這麼多的各式各樣的Unix衍生產品。如AIXSolarisHP-UXIRIXOSFUltrix等等。(這些商業化的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 Stallman1984年創業了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保護模式下處理多任務切換的程序,後來從MinixAndy Tanenbaum教授所寫的很小 Unix操作系統,主要用於操作系統教學)得到靈感,進一步產生了自認爲狂妄的想法——寫一個比Minix更好的Minix,於是開始寫了一些硬件的設備驅動程序,一個小的文件系統。這樣0.0.1版本的Linux就出來了,但是它只具有操作系統內核的勉強的雛形,甚至不能運行,你必須在有Minix的機器上編譯以後才能玩。這時候Linus已經完全着迷而不想停止,決定踢開Minix,於是在199110 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.6Linux的發展不像傳統的軟件工程,它完全是透過網絡,集合世界各地的高手而成的一套操作系統,在這裏我們也可以見識到網絡快速傳播的威力。Linux初次讓整個世界感覺到了開源力量和網絡力量的如此強大。(Linux 的標誌和吉祥物是一隻名字叫做 Tux 企鵝,標誌的由來是因爲Linus在澳洲時曾被一隻動物園裏的企鵝咬了一口,便選擇了企鵝作爲Linux的標誌。

 

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

 

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

 

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

 

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

 

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

 

Linux今天的領袖

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

 

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

 

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

 

今天,我們也說不清楚是GNU Linux還是Linux GNULinux既不排斥開源,也不排斥商業化,Linus認爲好的軟件是需要免費和商業化共同推進的。正是這種革命性的想法,造就了今天的Linux火紅的局面。Linux就像一股清泉流入了所有人的心中,引發了很多的啓迪和思考。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章