UNIX 簡史 

unix-plate2.jpg 先前的一個理想

1969 年以前:一個沒有完成的夢想: Bell, MIT 與 GE 的『 Multics'系統
UNIX 系統自 1969 年
Ken Thompson Ken ThompsonDennis Ritchie Dennis Ritchie 在美國貝爾電話實驗室(Bell Telephone Laboratories)發展出雛形至今,已歷經近 40 年。而 "UNIX" 這個字典上查不到其原意的怪字,其實是戲謔 MULTICS(MULTiplexed Information and Computing System)作業系統的大而無當所產生的諧音字。

在1957年10月,前蘇聯發射了第一枚人造衛星,此舉讓當時的美國總統艾森豪決定投下巨額的經費用以支援及發展科學,美國高等研究計劃署(ARPA, Advanced Research Projects Agency)便是在這個時空下設立了,該單位負責推動系統發展等相關計畫,成為當時美國電子計算機發展的重要推手。

J.C.R. Licklider1960 年代是大型電腦的發展年代,當時的麻省理工學院因最先實現了相容分時系統(CTSS, Compatible Time-Sharing System),在電子計算機領域享有相當崇高的地位。1963 年,麻省理工的裡克萊德(J. C. R. Licklider, 1915~1990)推動了 MAC 計畫,MAC 以 IBM 的大型電腦做為主體,連接了將近160台終端機,這些終端機就四散在學區以及教職員的家中,可以讓 30 位使用者同時共享電腦資源。這項計畫到了 1965 年便不堪負荷,於是麻省理工便決定開發更大型的分時電腦系統。新的計畫便是 -- MULTICS,一個電腦史上最為龐大的分時電腦系統,企圖連接 1000 部終端機,支援 300 的使用者同時上線的分時電腦系統。她面臨的是,作業系統的分時觀念還在各學術與研究機構中探索成形,電腦硬體亦需重新設計修改的雙重挑戰。

當時麻省理工原本想找 IBM 配合這項計畫,但 IBM 正忙著應付自己的問題而無意配合 MULTICS 計畫。此時,通用電子公司(General Electric Company)也就是奇異公司正好在發展自己的大型主機,見機不可失,便極力邀請麻省理工參予她們的 GE 645 大型主機的規格制定。有了奇異熱心主動的電腦硬體配合,麻省理工找上的不能販售電腦卻人才濟濟的貝爾電話實驗室來負責承包軟體工程。於是乎,MULTICS 的計畫便在 1965 年由麻省理工學院、奇異公司及貝爾電話實驗室這三個成員開始共同發展。

1969年,MULTICS 計畫在歷經四年的奮戰後,仍舊未達到原先規劃設計的理想,貝爾電話實驗室決定退出計畫。功能不足的 MULTICS 還是安裝在奇異公司的 GE 645 大型電腦上供麻省理工使用。奇異公司在該計畫草草結束後不到一年的便完全淡出的大型電腦的市場。日後失敗的 MULTICS 計畫,被嘲解為 Many Unnecessarily Large Table In Core Simultaneously。

農 夫我個人認為, MULTICS 計畫誕生在大型電腦將開始鼎沸的 1965 年,夭折於大型電腦最為輝煌的 1969 年。她如果適時在 1960 年代末期成功的話,絕對可以助長當時已經普遍被電腦權威人士視為理想的『電腦公用事業』,至少可以讓大型電腦的發展與資源集中的應用模式就不至於會在 1970 年代初期就迅速萎縮。因為 MULTICS 計畫如果成功,至少能讓當時的大型電腦的應用規模大上 10 倍左右。然而,MULTICS 計畫失敗了。她嚴重地打擊了當時依賴大型電腦主機的電腦公用事業業者在發展上的信心。更由於沒有相似的計劃後繼進行,使得集中式的大型電腦主機沒有明顯的 使用效能提昇,而加速催化計算機工業的轉變,以尋找新的道路。另一方面,MULTICS 計畫失敗的經驗亦讓當時參與該計畫的軟體工程師們得到相當寶貴的經驗與正面的影響。

在 1960 年代初期麻省理工學院 (MIT) 發展了所謂的: 『相容分時系統( Compatible Time-Sharing System, CTSS )』, 它可以讓大型主機透過提供數個終端機(terminal)以連線進入主機,來利用主機的資源進行運算工作。 架構有點像這樣:
早期主機與終端機的相關性圖示
如此一來,無論主機在哪裡,只要在終端機前面進行輸入輸出的作業,就可利用主機提供的功能了。 不過,需要注意的是,此時終端機只具有輸入/輸出的功能,本身完全不具任何運算或者軟體安裝的能力。 而且,比較先進的主機大概也只能提供 30 個不到的終端機而已。

為了更加強化大型主機的系統,以讓主機的資源可以提供更多使用者來利用,所以在 1965 年前後, 由貝爾實驗室 (Bell)、麻省理工學院 (MIT) 及奇異公司 (GE) 共同發起了 Multics 的計畫, Multics 目的是想要讓大型主機可以達成提供 300 個以上的終端機連線使用的目標。 不過,到了 1969 年前後,計畫進度落後,資金也短缺,所以該計畫就宣告失敗~ (註: Multics 有複雜、多數的意思存在。)

幾年後,MULTICS 計畫這個不同凡響的失敗換來的一個不同凡響的成功。一個嘲笑她的名字誕生了---UNIX。

一個遊戲的開始

1969 年: Ken Thompson 的小型 file server system
PDP-71969 年貝爾實驗室的計算機科學研究中心(Computing Science Research Center)成員退出 MULTICS 計畫的同時,貝爾實驗室本身其實也沒有一套完善便利的交談式計算機服務環境。在其中不少工程師們也正為了改善程式設計環境努力著, Ken Thompson、Dennis Ritchie 和其同事們在當時草擬一個新的檔案系統架構,這個檔案系統也就是早期的 UNIX 作業系統的檔案系統的前身。當時的 Ken Thompson 忙著使用 Fortran 語言將原本在 Multics 系統中開發的 game 叫 "Space Travel"(太空旅遊)轉移到 GECOS System 上開發。當時 GECOS System 大型電腦的 CPU Time 相當昂貴(一秒要 75 塊美金),同時控制 "spaceship"(太空船)的效果不甚理想,於是 Ken Thompson 不得不尋找替代的開發環境。Thompson 看上了一台很少被人使用的 Digital Equipment Corporation PDP-7 迷你電腦,當時 PDP-7 使用的是 Graphic-II 顯示器,具有不錯的圖形處理能力。Brian kernighan 於是 Ken Thompson 便與 Dennis Ritchie 聯手將程式設計轉移到 PDP-7 型電腦上。 Ken Thompson 在移轉工作環境的同時為了得到較好的發展環境,便與 Dennis Ritchie 共同動手設計一套包含 File System、Process Subsystem 及一小組 Utility 的作業系統,當時這套系統僅能支援 2 個使用者使用。由於貝爾實驗室對於 MULTICS 計畫失敗的陰霾還未消散, Brian Kernighan 這位仁兄開玩笑地戲稱這套新的作業系統為 UNiplexed Information and Computing System,縮寫為 UNICS,之後大家取諧音便叫她為 "UNIX",沒想到這個開玩笑的名字會被人叫到今天。

Thompson 的這個檔案系統有兩個重要的概念,分別是:

  • 所有的程式或系統裝置都是檔案
  • 不管建構編輯器還是附屬檔案,所寫的程式只有一個目的,且要有效的完成目標。


初期的自由發展

1973 年: Unix 的正式誕生,Ritchie 等人以 C 語言寫出第一個正式 Unix 核心
事實上該套 "UNIX" 系統在當時僅是私下的被使用,也並沒有得到多大的重視,一直到 1971 年的一個正式的計畫,UNIX 才正式被搬上檯面。

1970 年,當時貝爾實驗室的專利部門(Patent department)缺乏一套文書處理系統,為了設計開發的需要,於是買了一台 PDP-11 電腦。當時 PDP-11 電腦的交機過程並不順利,處理器先到,硬碟則是等了好幾個月。當 PDP-11 一切準備妥當後,他們便將 UNIX 移植到擁有 512K bytes 硬碟的 PDP-11/20 PDP-11/20 型電腦上,並在此系統之下開發了一套文書處理工具。而這套工具便是後來 nroff / troff 的前身。那時的 UNIX 提供 16K bytes 給系統、8K bytes 給使用程式,檔案最大的極限是 64K bytes。而此套含有文書處理工具的系統,也正式獲得貝爾實驗室的專利部門採用,系統名稱並被編為 "First Edition"。在 UNIX 移植成功後 Thompson 用 B 語言為它添加了 Fortran Compiler,但因為 B 語言屬於一種解譯語言(interpretive language),執行成效並不是很好,於是 Ritchie 又將它 -- Compiler 發展成可產生機器碼、允許定義資料形態及結構, Ritchie 稱它為 C 語言。1973 年並以 C 語言改寫全部 UNIX 原始程式,UNIX 於是首度出現正式版本--第五版。

Unix 本來是以組譯語言寫成的,後來因為系統移植與效能的需求, 該系統被 B 語言所改寫。不過,效能依舊不是很好。後來, Dennis Ritchie 將 B 語言重新改寫成 C 語言,C 語言算是比較高階的程式語言,可以在不同的機器上面運作, 而 Ritchie 等人也同時將原本 Thompson 的那個作業系統重新以 C 語言改寫, 最後發行出 Unix 的正式版本!

在這個時候需要特別注意的是,貝爾實驗室是隸屬於 AT&T 的,只是 AT&T 當時忙於其他商業活動, 所以對於 Unix 是採取比較開放的態度,此外, Unix 在這個時期的發展者都是貝爾實驗室的工程師, 這些工程師對於程式當然相當有研究,所以, Unix 在此時當然是不容易被一般人所接受的! 此外,也需要特別強調,由於 Unix 是以較高階的 C 語言寫的,相對於組譯語言需要與硬體有密切的配合, 高階的 C 語言與硬體的相關性就沒有這麼大了!


此 時的 UNIX 慢慢地在貝爾實驗室內部蔓延開來,裝機數也變成了 25 部之多。由於當時的貝爾實驗室實際上是掌控在美國電信電話公司(AT&T)及其子公司西方電器公司的手上,實驗室主要是負責研究改進西方電器公司 製造的和美國電信電話公司在貝爾系統中使用的電信設備。同時根據軍方合同,從事與國防有關的研究與改進的工作。而 AT&T 本身由於有反托拉斯法的限制並不能從事於任何有關電腦方面的銷售,所以 AT&T 的主管階層們對於當時 UNIX 的發展並沒有太多的支持,因而當時貝爾實驗室內部對於 UNIX 的發展並不是相當在意也無意於將之推廣。不過為了應付實驗室內各部門日益增加的 UNIX 使用以及 UNIX 的技術支援需求,還是成立了 UNIX System Group(簡稱 USG)。不過該組織也僅只是提供技術上的支援,並未賦予繼續發展的任務。所以當時的 UNIX 發展,全靠 AT&T 的工程師們的努力。這段期間 UNIX 的發展完全沒有組織及系統性可言,而玩家盡是一些工程師們,於是乎種下了 UNIX 日後較難以被一般人所接受的命運。


出貝爾實驗室

1977 年: 重要的 Unix 分支: BSD 的誕生
1974 年 Thompson 與 Ritchie 共同在
Communications of the ACM 發表了一篇 UNIX 論文 "UNIX Time-Sharing System" 得到相當大的迴響。 1975 年 UNIX 發表第六版(V6)﹐其提供的強大功能更勝過當時昂貴大電腦的作業系統,其最大特點是以高階語言寫成,僅需要做少部份程式的修改便可移植到不同的電腦平台上。 UNIX V6 版本並附有完整的程式原始碼在 1976 年正式從貝爾實驗室內部傳播到各大學及研究機構,UC Berkeley 也就是依據這個版本開始研究並加以發展,並在 1977 年發表 1 BSD(1st Berkeley Software Distribution)版本的 UNIX OS,其後續的發展更為 UNIX OS 貢獻良多且影響深遠,此點稍後再為你說明。同年 UNIX 因它提供良好程式發展環境、網路傳輸服務與及時服務 (Real-Time Services),而廣得各電話公司採用。Interactive System Corporation 更因 Value Added Reseller (VAR) 運用 UNIX 來強化辦公室自動化環境,成為第一家應用 UNIX 作業系統的公司。此年 UNIX 亦被修改並第一次裝到 Interdata 8/32 型電腦上。這也是 UNIX 作業系統首次安裝在非 PDP 型的電腦上。自此 UNIX 系統開始被移植改裝到各型微處理機及新電腦上。

雖然貝爾屬於 AT&T ,但是 AT&T 此時對於 Unix 是採取開放的態度, 此外, Unix 是以高階的 C 語言寫成的,理論上是具有可移植性的! 所以,只要取得 Unix 的原始碼,並且針對大型主機的特性加以修訂原有的原始碼( Source Code ), 就可能將 Unix 移植到另一部不同的主機上頭了。所以在 1973 年以後, Unix 便得以與學術界合作開發!最重要的接觸就是與加州柏克萊 ( Berkeley ) 大學的合作了。 柏克萊大學的 Bill Joy 在取得了 Unix 的核心原始碼後,著手修改成適合自己機器的版本, 並且同時增加了很多工具軟體與編譯程式,最終將他命名為 Berkeley Software Distribution (BSD) 。這個 BSD 是 Unix 很重要的一個分支, Bill Joy 也是 Unix 業者『 Sun 』這家公司的創辦者! Sun 公司即是以 BSD 發展的核心進行自己的商業 Unix 版本的發展的。 (後來可以安裝在 x86 硬體架構上面 FreeBSD 即是 BSD 改版而來!)


一個穩定的基石

1978 年 UNIX 發表對今日影響最重大的 UNIX 第七版(UNIX Time-Sharing System,Seventh Edition)也就是 V7。此版本包含 Fortran 77 compiler、Shell(只有Bourne Shell)、文件處理工具(nroff/troff、roff、MS mocro等)、UNIX-to-UNIX-file-Copy(用來支援兩台UNIX機器間的檔案傳輸)、資料處理工具(AWK、SED 等強悍的工具)、除錯工具(ADB)、程式發展工具(MAKE)、Lexical analyzer generator(LEX、YACC 等)、簡單的繪圖工具、並支援 C 語言及 LINT verifier,主要執行於 PDP-11 及 Interdata 8/32 型電腦上。在當時那個年代來說其系統的架構與功能已經是相當的完備的了。Bourne Shell 的原作者稱她為 "improvement over all preceding and following Unices",在今日也有人稱這個版本是 "last true Unix"。由此可見 V7 在 UNIX 發展里程上的扮演了相當重要的磐石角色。

當農夫我還在聯華電子工作時,王林正同事是我工作上的導師兼撞球球友。在他出國留學前送我一本V7的使用手冊。這本書對我的幫助很大。雖已事隔多年,但指導之恩永生難忘。在此表示對王林正前輩的由衷感謝。

事實上,V7 的使用手冊分成兩個部分,Volume 1 中有一篇簡短的系統簡介以及所有指令的使用說明。Volume 2 則是比較深入的單元介紹,此部份原本分為 2a, 2b 兩部份,儒林出版社發行時則將之合併為一冊。我手上有的便是這一本手冊。

前些日子,我在網路上閒逛,意外地在 Bell Laboratories 發現了 V7 的使用手冊。總算宿願得償,看到了 Volume 1。我個人認為,V7 的使用手冊,事實上寫得相當好,比起市面上某些書籍介紹的還要完整。有心學好 UNIX 的人,最好能花點時間看看 Volume 2 的部份,該份文件您可以在到以下的網址找到。

http://plan9.bell-labs.com/7thEdMan/bswv7.html

在當時 DEC 公司推出了一款 32-bit supermini主機 -- VAX,搭配的 VAX 的作業系統叫做 VMS。這款迷你級電腦的硬體無可挑剔〈直到今日她的穩定度仍是被諸多老一輩的系統管理者所讚許的〉,但 DEC 對 VMS 作業系統的支援性卻讓貝爾實驗室的工程師們寧願使用 UNIX OS 。而這項工作則是由 John Reiser 和 Tom London 所共同完成。他們以 V7 為基礎轉移 UNIX OS 到 VAX 電腦上使用。這個版本被稱為 UNIX V32。同時為了轉移的方便性,他們把 32-bit 的 VAX 當成是大一點的 PDP-11(因為 DEC 的 PDF-11 型電腦是 16-bit),同時為了執行的效率,V32 放棄使用 VAX 硬體提供的一項 paging 功能(DEC 的 VMS OS 有支援 paging 功能,也由於 V32 捨棄這項功能,所以 V32 沒有虛擬記憶體的功能)。即使是如此,V32 支援的位址已高達 4Gb。就這樣沒有支援 paging 功能的 V32 開始被廣泛的安裝在 VAX 的機器上運作。

DEC 則是在 1984 年左右推出來自己的 UNIX OS,叫做 ULTRIX。


一個重要的延續及發展 -- BSD UNIX

時間回到 1973 年 11 月, Ken Thompson 和 Dennis Ritchie 在印第安那 Purdue 大學的一場作業系統原理的座談會。會場上、坐著一位柏克萊大學(U.C. Berkeley)教授,名字叫 Bob Fabry。當天的 K&R 所發表的 UNIX 立刻引發 Bob Fabry 的極度興趣。當時的柏克萊還是處在使用大型電腦主機、批次執行程式的階段,並沒有像UNIX這樣的交談式作業環境。會後,他便決定將 UNIX 帶回柏克萊。

於是柏克萊的計算機科學、數學與統計三個系所合買的一台 PDP-11/45,準備用來迎接UNIX。1974年1月,Bell Labs寄來了一捲V4的磁帶,學生 Keith Standiford 便開始進行安裝 V4 的工作。安裝時 Standiford 碰到了問題,便轉向 Bell Labs 求援。人在新澤西州的 Thompson 便透過柏克萊這端速度只有 300-baud 的數據機在線上進行偵錯。

在 UNIX 的發展史上,這是 Bell Labs 與 柏克萊的第一次接觸。

完成除錯後,V4便順利地在柏克萊這台新買的 PDP-11/45 電腦上工作了。當時這台是三個系所合買的,計算機科學好不容易裝上了UNIX,卻碰到數學與統計系所要使用 DEC's RSTS system,所以在一陣協調後,UNIX 與 DEC's RSTS system 以 8:16 小時的比例分配,供三個系所輪流使用。一段時日後,具交談式功能的 UNIX 在效能上的表現得到絕多數學生們喜愛,紛紛將自己的計畫轉向 UNIX 的時段。而一天佔了 16 個小時的批次處理時段卻乏人問津。

當時 Eugene Wong 與 Michael Stonebraker 教授,看上了 UNIX 提供的便利性,便打算將他們的 INGRES 資料庫計畫重原先批次處理的電腦環境轉移到 UNIX 系統上面。在 1974 年,他們為這執行計畫添購了一台新的 PDP-11/40 電腦,上面安裝了 V5。這個計畫也就是柏克萊的第一個將作業環境轉移到 UNIX 的案子。UNIX 作業環境的需求,在柏克萊迅速地成長。為了應付需求,Michael Stonebraker 與 Bob Fabry 教授決定再申請購買兩台 PDP-11/45。1975年初,DEC 推出 PDP--11/70,價格差不多等於兩台 PDP-11/45,但功能強過 PDP-11/45,所以他們便決定改購買一台 PDP-11/70。

這台機器引來了 Ken Thompson、碰上 Bill Joy 以及日後產生了 1BSD。她就宛如是一塊UNIX史上的地標,沿襲自Bell Labs,豎立在伯克萊,承先啟後並開創新局。農夫個人認為,她應該被供在博物館。

當這台機器在 1975 年終運達伯克萊時;同一時間,Thompson 受邀回母校(柏克萊)當客座教授,科目就是 UNIX。Thompson 在校期間與 Jeff Schriebman 和 Bob Kridle 一起動手將新版的 V6 安裝在 PDP--11/70。

Bill Joy1975年,一位密西根州大學的畢業生來到了伯克萊,他的名字就是 Bill Joy。當時 Joy 和同學 Chuck Haley (tar 就是他寫的)喜歡一起泡在電腦房裡面,Thompson 也時常插上一腳。他們不但改善了 Pascal 的解譯能力,也提高了 Pascal 的偵錯能力加快解譯與執行的速度。另外換裝上 ADM-3 的螢幕後,他們覺得 ed 文字編輯指令並不合用;於是根據另外一個相似的 em 指令,發展了自己的覺得滿意的文字編輯工具,也就是指令 ex。

1976 年夏天,Thompson 結束了他的休假回到 Bell Labs。此時的 Joy 和 Haley 已經開始著手探索 UNIX kernal,甚至還做了一些修改。1977年初,Joy 製作了一捲磁帶,上頭寫著 "Berkeley Software Distribution.",這就是 1BSD。其中包含新的 Pascal compiler 與 ex 編輯器。

次年,來了幾台新螢幕 -- ADM-3a,這種螢幕支援游標位址顯示,Joy 在這種螢幕上完成了有人愛不釋手;有人恨之入骨的文字編輯器 -- vi。接著不久,Joy 便發現一個問題,老舊的螢幕裝備,還是會被用在其他的電腦上。為了支援上的方便,Joy 針對此現象設計了一個介面,用來管理、支援不同的螢幕裝備。這個介面就是現在的 termcap。1978年中,包含了功能加強的 Pascal 與 vi 及 termcap 的 "Second Berkeley Software Distribution," 也就是 2BSD,迅速地取代了原先的版本。1979 年,至少有 75 部 PDP-11 的機器上安裝 2BSD 在運作著。自此在 DEC PDP-11 系列上執行的 BSD 版本便一直以 2.xBSD 作為識別。由於 PDP-11 電腦實在相當長壽,持續到今日農夫我仍然在網路上發現過關於 PDP 電腦的網站。似乎到今日它們仍舊在某些地方默默地工作著。2.xBSD 最近的一次改版是在 1987 年,使用 4.3 BSD 為主架構改寫,版本定為 2.10 BSD。

在 BSD UNIX 中登場的重要功能當中,有一個直到今日仍然叫人又愛又恨的指令 – vi。我接觸過不少學習 UNIX OS 的人,大部分的人對 vi 的使用與掌握都不算順手,其中恨死這個指令的也大有人在,前些日子農夫我還看到某個網站公開討論起 vi 是否阻礙了 UNIX 的發展?實在誇張了一點!

Bill Joy 多次公開地說,他要是知道 vi 會如此受"歡迎"的話,他寧願當初沒有寫 vi 這隻程式。不過 Bill Joy 也說過,當時他原本還想加入一項 Multiple Windows in vi 的功能,不過當他在寫這部分程式的時候,磁帶機壞了,所以 Bill 只好在沒有備份的情況下繼續工作,想不到"屋漏偏逢連夜雨",程式寫到一半,他使用的硬碟也跟著掛了。在無可挽救又沒有備份磁帶的情況下,Bill 宣告放棄為 vi 增加 Multiple Windows 這項功能。事後 Bill 為前一版的 vi 寫好使用說明後就繼續作其他的事。所以 vi 就長成今天那付德性。農夫我認為這或許是福不是禍!搞不好當初要是連 Multiple Windows 這項功能一起發表的話,上頭的圖可能就是遺照了。

當時有位 Richard Fateman 教授,原先使用一台 PDP-10 上進行著他的 Macsyma 研究計劃。但他需要更大的記憶體位址來執行程式,所以在 1978 年初,他看上了當時迪吉多新發表的 VAX-11/780。好不容易,他聯合了其他的部門才湊足購買 VAX 的經費。剛開始時,機器原本安裝的是 VMS 作業系統。不過別的成員要執行 UNIX 作業系統,於是 Fateman 安裝上了 V32。但問題來了,V32 並不支援虛擬記憶體,Fateman 便找上了Domenico Ferrari 教授,希望他與他的研究小組能為 UNIX 加上這項功能。當時一位學生叫 Ozalp Babaoglu,他想到了一些解決的方法似乎可行,但因為牽涉到 VAX 硬體與 UNIX kernal 的問題,於是他找上了 Joy 幫忙。就在只有一台 VAX 的狀況下,他們努力奮戰著。1979 年 1 月,在 VAX 上支援虛擬記憶體的 UNIX 版本終於誕生,V32 從此走入歷史。緊接著 Peter Kessler 與 Marshall Kirk McKusick 為他加上了 Pascal;Joy 也將 2BSD 移轉了ex、vi 編輯器以及 C shell。這個版本就是 3BSD。一個首次支援虛擬記憶體、demand paging 和 page replacement 的 UNIX OS。


UNIX DARPA 交會

1970年代末,美國國防部先進研究計劃機構(Defense Advanced Research Projects Agency -- 簡稱 DARPA)正在為 AI(Artificial Intelligence), VLSI 及計算機視覺等研究(vision research)找尋一個可共通作業的電腦環境。硬體方面的首選是迪吉多的 VAX 主機。配合的作業系統是 VMS。這樣的組合因擁有相當接近 DARPA 需求的功能被列入優先的考量,但在 DARPA 與 DEC 商談對於 VMS 的支援事宜之後,DARPA 並沒有得到滿意的答案。這迫使他們考慮朝向 UNIX 發展。但當時 UNIX OS(指的就是32V) 搭配 VAX,最大的缺憾就是沒有支援虛擬記憶體;但此時已經有人克服了

在 1979 年末,Bob Fabry 教授寫了一份建議書給 DARPA,建議他們以伯克萊支援虛擬記憶體的 3BSD 為基礎,發展成為計畫所需。這份企劃書引發了 DARPA 的高度興趣。之後 3BSD 也實際獲得了 DARPA 相關計畫的成員們的良好風評,也因此最後柏克萊大學打敗了卡奈基梅隆大學與 BBN(Bolt Baranek & Newman, Inc.),讓 Bob Fabry 成功地獲得了 DARPA 的資助合約。這份合約開始於 1980 年 4 月,為期 18 月。此後的 DARPA 便以 UNIX OS 為標準作業系統。Bob Fabry 教授在取得 DARPA 合約後,依約成立了一個支援機構,也就是 Computer Systems Research Group 簡稱 CSRG。Bob Fabry 找上了 Bill Joy 來負責軟體發展。Joy 迅速地以先前的 3BSD 為基礎,整合新的功能。如 Job Control(作者是 Jim Kulp)、auto reboot、1K block file system。同時也整合入 Pascal compiler、Franz Lisp system、enhanced mail handling system。這就是在 1980 年所發表的 4BSD。沒多久她便被安裝在將近 500 台 VAX 上。

DARPA 採用了這個版本作為當時 DARPA 的標準 UNIX 作業系統。

樹大招風,當時,有位在 Stanford Research Institute 的仁兄叫 David Kashtan,寫了一份關於 VMS 與 BSD UNIX 在 VAX 上的執行效率評估。該份報告指出 BSD UNIX 在效率上不如 VMS 來的好。Joy 知道這件事之後,花了不到一個星期的時間,重新調整 UNIX kernal。然後也寫了一份報告,證明他們的 BSD 在 VAX 上要比 VMS 優越多多。1981年 6月,這個 Joy 調整過的系統,加上了 Robert Elz 寫的 auto configuration,以 4.1BSD 的版本發表了。

當時的 DARPA 對伯克萊 4.1BSD 的表現相當滿意,於是續簽了兩年的新約,金額更是先前合約的 5 倍。其中有一半的金額用在資助伯克萊繼續發展 BSD UNIX 。錢多的相對代價就是要求高。當時,DARPA 對 UNIX 的期望開出了明確的目標;更迅速、更有效率的檔案系統、支援程序可執行位址達 multi-gigabyte、提供彈性的解譯溝通能力、具整合支援網路能力。在此同時,為了達到計畫的目標,DARPA 成立的一個指導委員會;主要的成員有伯克萊的 Bob Fabry, Bill Joy, Sam Leffler、BBN 公司的 Alan Nemeth and Rob Gurwitz、貝爾實驗室的 Dennis Ritchie、史丹佛大學的 Keith Lantz、卡內基.梅倫大學 Rick Rashid、麻省理工學院 Bert Halstead、資訊科學協會 Dan Lynch、DARPA 的 Duane Adams and Bob Baker 以及加州.洛杉磯大學的 Jerry Popek。

不久,Joy 便開始整合早先 BBN 的 Rob Gurwitz 所發表的 TCP/IP protocols,不過他對 BBN 這些程式的執行效率並不滿意,於是 Joy 與 Sam Leffler 重新寫的一版自己的程式。另外,並加入了一些支援網路的工具 rcp, rsh, rlogin, rwho。他們稱她為 4.1aBSD,這個版本並沒有正式發表,在 1982年 4 月開始供內部使用。雖是如此,在 4.2BSD 未正式發表之前,她還是繁殖的到處都是。6 月,4.1aBSD kernal 加上了新完成的檔案系統,版本更新為 4.1bBSD。

rcp, rsh, rlogin, rwho 這群指令。因安全機制上的理由,逐漸被另一群新的指令群所取代,新的指令群叫 SSH (Secure Shell)。如果你想知道更多關於SSH的相關訊息,請按這裡

1982 年的春季末,早就厭倦了在柏克萊環境的 Bill Joy ,受邀加入當年剛創辦的 Sun Microsystems, Inc.,成為 SUN 的第四號創辦人。那年的整個夏季他就在兩地奔走。之後他對修改中的彈性解譯溝通機制及改寫 UNIX kernal 到一個段落之後,由 Leffler 接手了他的工作。由於合約期限的因素,Leffler 在 1983 年 4 月發表了 4.1cBSD ,提供給參予 DARPA 各項相關計畫的成員試用。6月,DARPA 的指導委員會第二次會議招開,驗收與檢討最新版的 BSD 成果。繼續整合 UNIX 系統的 Leffler,在 1983 年 8 月,發表了 4.2BSD。她達到了 DARPA 的預定的需求;足以應付 CAD/CAM 影像處理與 AI 研究的高速的檔案系統及擴展強化的虛擬記憶體功能;提供能分散處理的解譯溝通機制;支援 56-Kbit 速度的 ARPA Internet 網路連結,以及 10-Mbit/s Ethernet 的區域網路;還有經過重組架構已模組化的 kernal code ,提供更有效率的電腦平台移植。

SUN 以生產 RISC 架構的工作站電腦為主,使用的正是以 BSD 為基礎所的 UNIX OS。在當時以不遜色於大型電腦的多人多工、具網路溝通功能的 UNIX OS、加上價格低廉的硬體(相對於 mini 級電腦而言),廣獲得工程界的青睞,而 mini 級大電腦的命運自此註定開始逐漸式微。電腦軟體的應用因為有了網路於是也開始朝向 Client-Server 的架構發展。

1982 年,SUN 有了自己的作業系統 -- SUN OS 1.0 -- 承襲自 4.1BSD。一直到 1982 年,SUN 才向 System V 靠攏,並將作業系統的名稱改為 Solaris 發表在商業有所成就的 SUN Microsystems 對 UNIX 的發展倒也做出了一項重大的貢獻;如 1984 年發表的 NFS(Network File System)與其後在 1986 年發表的 PC-NFS。


商業化的不平坦歷程 -- UNIX 版本的戰爭

1979 年: 一個措手不及的版權宣告!
UNIX 商業化實質上即意味著將產生各種獨立化的 UNIX 版本,這點大概是最顯而易見的事實。如果以商品要具備獨特性與獨佔性的利益來做考量的話,其實一點也不意外。因此 UNIX 開始衍生的相當多的版本。這種現象,對使用者以開發應用程式的廠商而言,已經造成了某成程度上困惑,一種無所適從的無力感才該開始。

由於 Unix 的高度可移植性與強大的效能,加上當時並沒有版權的糾紛, 所以讓很多商業公司開始了 Unix 作業系統的發展,例如 AT&T 自家的 System V、IBM 的 AIX 以及 HP 與 DEC 等公司,都有推出自家的主機搭配自己的 Unix 作業系統。

但是,如同我們前面提到的,
作業系統的核心 ( Kernel ) 必須要跟硬體配合, 以提供及控制硬體的資源進行良好的工作!
 而在早期每一家生產電腦硬體的公司還沒有所謂的『協定』的概念, 所以每一個電腦公司出產的硬體自然就不相同囉!因此他們必須要為自己的電腦硬體開發合適的 Unix 系統。 例如在學術機構相當有名的 Sun 、 Cray 與 HP 就是這一種情況。 他們開發出來的 Unix 作業系統以及內含的相關軟體並沒有辦法在其他的硬體架構下工作的! 且由於沒有廠商針對個人電腦設計 Unix 系統,因此,在早期並沒有支援個人電腦的 Unix 作業系統的出現 (由於 Unix 強調的是多人多工的環境,但早期的 x86 個人電腦架構下的 CPU 是沒有能力達到多工的作業,因此,並沒有人對移植 Unix 到 x86 的電腦上有興趣 )。


    每一家公司自己出的 Unix 雖然在架構上面大同小異,但是卻真的僅能支援自身的硬體, 所以囉,早先的 Unix 只能與伺服器 ( Server ) 或者是大型工作站 ( Workstation ) 劃上等號

但是這個高度開放的 Unix 系統在 1979 年有了重大的轉折~ 因為 AT&T 由於商業的考量,以及在當時現實環境下的思考,於是將想 Unix 的版權收回去, 因此,在 AT&T 在 1979 年發行的第七版 Unix 中,特別提到了 『不可對學生提供原始碼』的嚴格限制! 同時,也造成 Unix 業界之間的緊張氣氛,並且也引爆了很多的商業糾紛~

1984 年 1 月 1 日, AT&T 這個擁有 1495 億美元資產、1,009,000 位員工的龐大巨獸,終於被格林 (Harold H. Greene) 法官以反扥拉斯法 (antitrust) 強制拆解成七家 RBOCs (Regional Bell Operating Companies) 。 AT&T 也因而在一夕間解體成為區域性網路公司,從此失去了長途電話的壟斷性地位。這種時空的轉變讓 AT&T 對 UNIX 的態度有了 180 度的轉變(其實,農夫我指的是收費的態度)。

關於 1979 年的版權聲明中,影響最大的當然就是學校教 Unix 相關學問的教授了! 想一想,如果沒有核心原始碼,那麼如何教導學生認識 Unix 呢? 這問題對於 Andrew Tanenbaum (譚邦寧)教授來說,實在是很傷腦筋的! 不過,學校的課程還是得繼續啊!那怎麼辦?? 既然 1979 年的 Unix 第七版可以在 Intel 的 x86 架構上面進行移植, 那麼是否意味著可以將 Unix 改寫並移植到 x86 上面了呢?在這個想法上, 譚邦寧教授於是乎自己動手寫了 Minix 這個 Unix Like 的核心程式! 在撰寫的過程中,為了避免版權糾紛,譚邦寧完全不看 Unix 核心原始碼! 並且強調他的 Minix 必須能夠與 Unix 相容才行!譚邦寧在 1984 年開始撰寫核心程式, 到了 1986 年終於完成,並於次年出版 Minix 相關書籍,同時與新聞群組相結合~

這個 Minix 版本比較有趣的地方是,他並不是完全免費的,無法在網路上提供下載! 必須要透過磁片/磁帶購買才行!雖然真的很便宜~不過,畢竟因為沒有在網路上流傳, 所以 Minix 的傳遞速度並沒有很快速!此外,購買時,隨磁片還會附上 Minix 的原始碼!
不過,如今情況已有所改變,在 Andrew 撰寫的教科書第三版 Operating Systems Design and Implementation, 3/E
中提到了 Minix 3。



Minix 3 是一個新的開放原始碼的作業系統,設計的精神則基於穩定、彈性、安全。整個核心相當地小,實際載入執行的程式碼不過4000條。Minix 3 和之前的 Minix 1,2 二版有許多關鍵點不同,Minix 1 和 2 主要做為教學用的工具,而 Minix 3 則加入了一個新的發展目標,它意欲成為開發手持行動設備及家用設備嵌入式運作環境下的一個穩定嚴謹的作業系統。


先前已經提過 70 年代初期的 AT&T,已經在長途電話市場上佔有絕對壟斷的優勢,因而被美國政府的限制不得涉足與從事電腦與其他行業,也正因而造就了 UNIX 發展初期的自由開放。直到 1979 年,AT&T 才宣佈要將 UNIX 商業化的計劃。1981 年 11 月,AT&T 屬下的 USG 發表了 System III。次年又更新為 System IV。稍後於 1983 年,AT&T 將 CRG, USG 合併成立了 UNIX System Development Lab. 一般簡稱為 USL,從其名稱就不難清楚她將要扮演的角色。該年 System V 上市了。此時 AT&T 發覺每次版本更新都得花不少宣傳費,實在不划算,所以決定在 System V 以後,名字就不再做變動了。1984 年,System V Release 2 發表,簡稱為 SVR2。在這個版本中,才終於看到來自 BSD 版本的 Virtual memory 功能,農夫我不得不驚嘆 AT&T 的穩健作風。SVR3 則是到了 1986 年才發表,隨後 1987 年又發表了 SVR3.2。

1987年,在工作站市場上已佔有一席之地的 SUN,找上了 AT&T,打算將 System V 與 BSD 這兩大版本歸為一統。1988 年初,雙方更簽訂了合作合約,AT&T 取得 SUN 的一席董事,同時亦有權買下 SUN 百分之二十的股份。這項合作計劃,原本有機會整合當時版本紛亂的 UNIX OS。但那是理想。實際上這個計劃反而讓 UNIX 族群裡的其他成員恐慌萬分,特別是 IBM、DEC、HP 這幾個產業龍頭。為了抵制這項行動,他們組織了一個反對聯盟。因此「開放軟體基金會」也就是 Open Software Foundation 簡稱 OSF 在 1988 年正式誕生;成員除了前面的三巨頭外,尚有多達三十幾家電腦硬體製造廠商與系統諮詢顧問公司,也相繼以行動投入到此反對的行列中。然而 AT&T 與 SUN 也不示弱地組織了 UNIX International,也就是 UNIX 國際公司,成員數量雖然不比 OSF 陣營來的多,但 Intel、Toshiba、Unisys、Motolora、Fujitsu,這幾個大塊頭也很夠看頭。

企業自身的利益在現實世界裡始終是以個體的考量為優先,所以這兩大陣營始終沒能再達成任何共識,就連當時所制定的 UNIX 統一標準規格,嚴格來說也從不曾被實現過。這種企業利益上的衝突與矛盾其實也存在於同一個陣營中不同的成員之間。兩大陣營對峙,可以說是 UNIX 有史以來最重大的產業衝突事件。由於商業利益的政治考量大過技術問題的考量,也因此奠定了 UNIX 將繼續分裂下去的命運。AT&T 在 1989年發表了 SVR4,SUN 在日後也將她的 SUN OS 4.1.3 開始冠上 Sorlair 的字眼,OSF 則是在 1990年發表了 OSF/1。UNIX 版本的問題因而更加混亂了。但有趣且可笑的是,開放系統 -- Open System,這個雙方都標榜的理念與觀念卻因此在電腦產業界引起了迴響,這點倒是原先所始料未及的。

不久 AT&T 撤銷了對 SUN 的投資,同一個陣營的成員彼此也因此而勞燕分飛。USL 在 1991 年正式轉變了一家獨立的商業公司。但 UNIX 在商業市場上的價值卻出現了變化...


UNIX 自由 -- Networking Release 2

自從 UNIX 走出貝爾實驗室後,研究機構與學術界就扮演了繼承與發展的雙重角色。在 1979 到 1984 年這段期間,UNIX 的擁有者 AT&T,對於學術界的授權政策尚可用『大方』來形容;同時也對學術界做某種程度的資助與合作。當時的學術界,得助於 AT&T 的大方授權與分享程式原始碼,研習 UNIX 這個分時作業系統開始在學術界蔚為一股風氣,甚至可以說是一種潮流,一種流行。其中,像柏克萊 BSD 對 UNIX 的貢獻,就是一個公開的事實。但早期的 BSD 使用者,是必需向 AT&T 支付授權金的。這點,從產業界資助學術界的角度來看是一點也不值得驚訝的。因為資金的援助為了就是取得其成果。所以當時基於 AT&T 原始碼所發展的成果,均歸屬 AT&T 所有。也因而 AT&T 掌控了 UNIX 的所有權。到了 1984 年以後,AT&T 開始更積極地保護 UNIX 的原始碼;AT&T 甚至還要求各大學的使用人員簽訂保密條約,想藉此防堵 UNIX 的原始碼從學術單位流出,以影響到商業利益。

在 DARPA 資助柏克萊從事 BSD OS 發展的過程中,誕生了 TCP/IP 這項廣泛影響現今電腦與網際網路的通訊協定。由於 DARPA 對於資助開發的軟體專案有明文規定接受資助者必須無條件地釋出程式的原始碼,所以 TCP/IP 的原始碼與程式的版權並不屬於 AT&T 所有。這點在現今看來其意義是不凡的。也正因為有此一條件,柏克萊的 CSRG(Computer System Research Group)因應 BSD Vendors 需求,在 1989 年 6 月發表了 Networking Release 1,她包含了 TCP/IP source code 以及一些工具,提供給當時正開始起步發展的個人電腦製造業者使用。Networking Release 1 授權收費僅 1000 美元,而且不需要 AT&T 的商業授權,取而代之的是柏克萊大學的開放式授權。

農 夫我看柏克萊授權方式,幾乎可以說是一種良心式授權方式,在實質的運用上她完全沒有限制。她允許原始碼或執行檔在任何情況下修改並且允許將修改後的程式從 事商業行為而無須任何回饋,當然也沒有絕對要求開發者必須要釋出原始碼。如果你改都不改地加以販售,她也沒有意見。但有一點不可違反的限制,就是必須在衍 生物的版權聲明上提到柏克萊的貢獻。這種做法在日後,也沒有多少改變,而這樣的授權方式也成為了柏克萊的授權精神。

Keith Bostic 由於 Networking Release 1 所得到的回應實在遠超過 CSRG 成員的預估,這個不算差的成果,讓柏克萊的 CSRG 覺得有必要釋出更多屬於BSD的程式原始碼。於是激發 CSRG 的成員 Keith Bostic 開始組織志願工作者從事一項就算不能夠驚天也足以動地的程式寫作計劃,計劃的主要目的在當時還真讓人感到有點烏扥邦,農夫我個人喜歡戲稱她為『解放 UNIX 計劃』。

Marshall Kirk McKusick這項計劃大體上分成兩個部分,作業系統工具(Utility)與核心(kernal)。而且參與人員必須在完全沒有參考 AT&T UNIX source code 的情況下進行撰寫程式的工作。因為只有在這種條件下,寫出來的程式碼,才能擺脫 AT&T 的著作權束縛。當然這也絕對不是一件容易的事。Keith Bostic 四處奔走,組織了超過四百名熱心的軟體工程師,經過了長達十八個月的奮戰之後,作業系統主要的工具與程式庫才算改寫完成。Marshall Kirk McKusick 負責改寫當時的核心程式。但系統核心的部分,由於長期以來柏克萊與 AT&T 一直就彼此分享 UNIX 原始碼,所以各自所加上去的程式碼早已混雜難分了。為了徹底的釐清雙方各自撰寫的部分,他們下決心進行逐行比對。首先花了好幾個月的時間,將核心程式每一行每一個檔案都建立轉換比對的資料庫。然後接著進行移除來自 AT&T 32V 的程式碼並改寫她們。即使是如此,仍舊有 6 個核心程式讓他們束手無策,因而無法將核心程式徹底完整地改寫。最後,他們還是決定將他們所做的所有成果發表。授權的方式沿用 Networking Release 1 的授權方式,授權的磁帶依舊是 1000 美金。這個版本就是 Networking Release 2,也有人稱她為 4.3BSD NET/2。發表的時間在 1991 年 6 月。雖然這是個不完整的作業系統。但,在今日看來,卻有著劃時代的意義 -- UNIX OS 自由了。


是"老大哥" -- 版權訴訟

AT&T 的 USL 在 1991 年正式轉變了一家公司。當然,這意味著她將更重視 UNIX 在商業上的利益。當時的 UNIX OS 早以稱霸高階的電腦市場;從 Cray 超級電腦、IBM 的大型電腦主機、迷你級電腦到工作站,均是 UNIX 的天下(這一點,直到現在21世紀,仍舊沒有多大的改變)。即使在80年代中期後開始迅速發展的個人電腦,雖然當時被戲稱為是玩具電腦,但也仍舊有像 XENIX*1, Interactive UNIX*2 等幾種向 AT&T 繳過稅的商業化版本。UNIX 簡直就是 AT&T 的一棵搖錢樹。

但這一切在 Networking Release 2(以後簡寫為 Net/2)出現之後,起了變化!

首先,一位 i386 處理器的玩家名叫 Bill Jolitz,在拿到 Net/2 之後,很快地就將 Net/2 kernal 缺少的程式補齊了。BSD kernal 這時可算是大功告成了。當時 Bill Jolitz 將他們放在網際網路與其他人共享他的原始碼,並且得到了不少正面的回應。由於這個版本是使用在 i386 微處理器的個人電腦上,所以就命名為 386BSD,在 1992 年 2 月正式發表。這該算是 BSD 首度功能完整且版權獨立的版本。Bill Jolitz 是當時唯一的 kernal 維護者。在他離開這個計劃之後,繼起的 BSD 玩家們延續了這個版本,日後衍生了 FreeBSD,然後又從其中分支出裂 NetBSD 版本。

另一個將 Net/2 完整化的是一家叫 Berkeley Software Design, Incorporated 的公司,簡稱 BSDI*3 。由於 Net/2 的版權聲明中,宣稱其原始檔案的合法性,並且允許使用者,從事衍生物的商業行為,所以 BSDI 將他們修改後的系統命名為 BSD/386。他們並將成果打包,刊登廣告以 995 美金的售價販售 BSD/386,而且含原始碼,而且還提供免費服務電話的諮詢,電號號碼是"1-800-ITS-Unix"。時間大約是在 1992 年 1 月。當時,USL 的 System V 含 source code 的價格大約是 BSD/386 價格的一百倍左右。這可驚動了老大哥 AT&T。並且正式地書面嚴重警告 BSDI 違反的註冊商標法(電話號碼裡有 Unix 的字眼),並公開宣稱 AT&T 擁有 UNIX 的註冊商標。BSDI 再次刊登廣告公開反擊 AT&T,聲明她的商業行為完全合法。果不期然, BSDI 的博命演出讓雙方手牽手走上法庭。

AT&T 的 USL 控告 BSDI 剽竊他的 UNIX 原始碼,要求法官還他公道。在聽證會上,BSDI 祭出早已準備好的法寶;自己在無任何 AT&T source code 的條件下寫出的合法檔案,以及來自於 BSD 授權的 Net/2 source code。前面的證據足以讓 BSDI 立於不敗之地,後者讓 BSDI 置身在暴風圈外。BSDI 的辨證獲得了法官的採信。但 At&T 豈會就此罷手,他們將焦點轉移到 Net/2 的 BSD 授權上面,並且重新提出控訴,被告的對象變成了 BSDI 與柏克萊大學;同時 AT&T 還申請法庭禁止 BSDI 一切的 BSD/386 銷售行為。就這樣,柏克萊大學也對號入坐了。

農 夫我認為,畢竟 AT&T 是營利企業,她得維護她的商業利益,這點是天經地義的事。雖然柏克萊大學與 AT&T 在 UNIX 發展上有著非比尋常的關係,但商業利益是現實的。企業資助學術界的研究計劃,多半是基於商業上的考量;我相信,學術界的少數高層在尋求奧援時不會不明白這 一點,即使這有可能讓大部分的學術人士無法接受或不願接受。不管如何,這一記醒棍倒再次挑起了這一點事實。

成為被告的柏克萊大學,只好無奈地面對這場無情的商業訴訟。但他們也同樣不甘示弱地對 AT&T 的 Systerm V 著作權提出質疑,因為在 AT&T 的 UNIX 授權聲明中完全沒有提及柏克萊的貢獻。所以柏克萊反控 AT&T 違反的 BSD 的授權條款。柏克萊的反擊讓戰況越演越烈,訴訟案一路從 AT&T 的老家新澤西州的聯邦法庭打到柏克萊大學的所在地加州法院,但依舊沒有結果。

到了 1993 年,官司還在進行中,但 AT&T 卻已經打包 USL 準備以一億美元的價格找尋買主了。最後 AT&T 將 USL 以八千萬美元代價的賣給了 Novell。而新買主也當仁不讓地加入了這場混戰。但卻也因此,戰況露出了一線平息的曙光。訴訟案在 1994 年 1 月宣告終結,以庭外和解收場。實際的協議內容僅有當事人知情。

如果從勝負的角度來看這場訴訟,或許柏克萊與 BSDI 是勝利的一方。但如果從 UNIX 發展的腳步來看這場訴訟,就可能根本沒有任何一方是勝利者了。

事件平息後的 1994 年 6 月,柏克萊的 CSRG 風光地發表了 BSD 4.4 Lite。在這個版本中,有 70 個檔案引用的一份新修改的版權聲明,闡述的 AT&T 與 BSD 雙方的貢獻,並明確地給予檔案自由散播的權利。但不知為何,應該有能力完整發表的 BSD 4.4 Lite 還是缺少了三的檔案。當時,農夫我也很高興地買了一本 BSD4.4-Lite CD-ROM Companion,含一張光碟,現在拿在手上,看來總覺得有點呆

掌握 UNIX source code 以及 UNIX 商標的 Novell,將 UNIX 商標交給 X/open 管理,自己則發展了一套命名為 UNIXWave 的作業系統。推出後市場的反應並不熱絡。不久,Novell 與 SCO 接頭,在 SCO 保證繼續支援 UNIXWare 的條件下,UNIX 在1995年二次易主,新主人是 SCO


備註:

*1 Intel 在 1978 年發表 4.77 MHz 的 8086 微處理器。1980 年,Microsfot 便以 V7 為基礎,發表了在微處理器(microprocessor-based computers)上執行的版本也就是 XENIX。到了 1982年,一家成立於 1979 年的軟體公司 Santa Cruz Operation,成為微軟的合作開發廠商。之後她這家公司便一直致力於這個領域裡延續到今日,縮寫就是今日的 SCO。

*2 Interactive IS/1 (以 V6 為主體)。這個版本後來演化為比較讓人熟之的名字 -- Interactive UNIX。後來因為 Sun Microsystems 致力發展 Solaris for X86,被財力雄厚的 Sun Microsystems 合併了,如今已經不見蹤跡了。

*3 就在我反覆修改的時候,BSDI 這家公司已經被 Wind River 合併了,改名為 iXsystems。2001/05/03


 

GNU 計劃 -- 開啟了新大道

在 1983 年 9 月 27 日,麻省理工學院人工智慧實驗室(MIT Artificial Intelligence Lab)的 Richard M. Stallman (以下簡稱為 RMS),在 net.unix-wizards 以及 net.usoft 的 newsgroups 貼上了一份標題為 "new UNIX implementation" 的訊息。這就是如今廣為人知的 GNU 計劃的開始。在那則被視為「GNU 宣言」草稿的信息中,RMS 闡述個人的理念與計劃的目的 -- 完成一個命名為 GNU 的 "Free UNIX" 作業系統,希望藉此尋喚理念想同者共襄盛舉。

『如果我喜歡一個程式的話,那我就應該分享給其他喜歡這個程式的人』,這是 RMS 的座右銘。此點也似乎正是促使其決心運作 GNU 計劃的原動力。當時的 RMS 是想寫出一套免費的作業系統。能夠讓每個人如空氣般地自由的取得與使用。選擇「UNIX 相容」的來設計的主要原因是;RMS 表明,UNIX 並非他個人理想中的作業系統;他僅閱讀一些相關資料,但未曾使用過 (MIT 使用作業系統是"ITS--Incompatible Timesharing System");但他認為 UNIX 作業系統具有優良的本質特性。他相信如果 GUN 與 UNIX 相容將更容易令人接受。所以 RMS 承襲 MIT 用遞迴縮寫字命名的傳統為 GNU 釋譯界定 Gnu is Not Unix。

1984 年 1 月,RMS 為了展開他的理想而決心離開已經待了十幾年的 MIT AI Lab.。當他向他老闆 Patrick Winston 辭職時,Winston 試圖挽留地說:「你還是要辭職?」。RMS 不為所動的回答:「是」。Winston 顯然得到預料中的答案,於是接著說出了思緒裡關懷:「你想要保留你的鑰匙嗎?」。於是 RMS 就從此開始專心地"失業"在他的老東家。一個人窩在他原來的舊辦公室中,規劃著如何開始他的 GNU 計劃。但想開發一套新的 UNIX 相容的作業系統,即使是財力、人力資源雄厚的頂級電腦公司,也絕對不是一件說想做就能夠做到的事。當擬妥他的「GNU 宣言」之後,他正式向全世界呼喚、表明其將所為。種子落地了。

GNU 計劃的第一隻程式要算是孤軍奮戰的 RMS 在 1984 年 9 月開始撰寫的 Emacs 編輯器。1985 年初,Emacs 已進入可用的階段。於是 RMS 將她放在 pre.ai.mit.edu 這台機器的 FTP server 上,免費地讓 amonymous 的到訪者自由下載使用。不久後,Emacs 強捍的功能引發了一些玩家們的注意,由於附上了 source code,玩家們能自己動手為它添加新的功能或除錯,很快地,Emacs 獲得了相當熱烈的迴響。隨著名聲漸播,開始有人相繼地加入 GNU 計劃的程式寫作陣營。"此道不孤"讓 RMS 備感振奮與喜悅。

當時的網際網路並未十分普及。所以有不少人雖然對 Emacs 程式有興趣,卻沒辦法經由 FTP 的管道取得,因而有人透過其他管道向 RMS 詢問能如何取得時,這可讓當時處在失業狀態的 RMS 看到能夠支持他繼續奮戰下去的資金來源--販售"自由軟體"。

一個人、一個獨立的個人,要想在現實中實行自己的理念,最先得接受"現實"。唯有接收它是事實,實行理念的道路,才獲得比較穩固的起點與開始。  -- 網路農夫如是說。

想著、寫著,腦中突然掠過一絲感受(所以順便記錄在這個地方)。不管如何,RMS 真的開始以一捲磁帶 150 塊美金的代價,開始服務有需要的人。也因為基於這個開始與基礎,RMS 當年便創立了自由軟體基金會 -- Free Software Foundation (以後簡稱為FSF)。這對 GNU 計劃而言,意味著它已跨越個人化理念的構思階段,並進入了有群體組織化的運作階段。同時,RMS 也制定出了屬於 GNU 計劃的軟體版權。RMS 使用 "copyleft" 用來形容她,其實就是與著作版權(copyright) "對立"之意。這也就是 GPL -- General Purpose License (通用公共授權)。GNU 計劃的種子,就這樣生根發芽了。

從販賣 GNU 自由軟體擴展到其他的相關軟體與參考手冊,提供軟體技術支援,並接受電腦器材與資金的捐助(捐助者依法享有一定額度的減稅),為企業代訓軟體人才。FSF 努力地開闢財源卻仍舊是運作資金捉襟見肘。RMS 本人不支薪,FSF 聘請軟體工程師的待遇,也僅是軟體業界薪資水平的一半。但這絕不表示 GNU 計劃的軟體水準是半桶水。GCC 編譯器是 GNU 計劃在 1987 年 3 月開始發表的免費編輯器,當時的版本是 0.9 測試版。如今最新的版本則是 3.0。這個編譯器可以說是今日自由軟體寫作的基石。GCC 所解譯的機器碼,其可靠度絕對不遜於商業化的編譯器產品,甚至可以說是優越過商業編輯器。

90 年代初,GNU 計劃暨已完成了質量與數量均十分可觀的系統工具。這些工具被廣泛的使用在當時各種工作站的 UNIX 系統上。雖然已有如此的成就,但這畢竟還不是 "Free UNIX",他們知道缺少的是什麼--一支"核心程式(kernal)"。

UNIX 在 4.2BSD 之後,越寫越大 kernal 開始帶來一些不便與問題。因而當時便開始有另一個寫作理念逐漸在發展--微核心(microkernal)理念。1985 年,卡內基大學(Carnegie Mellon University 簡稱 CMU)暨以 4.3BSD 為發展基礎,並將之一拆為二,分成 micro kernal 與 single server 兩的部分,該計劃也就是"Mach"。該計劃也成了這方面的先河。GNU 原本有打算直接採用"Mach"計劃。但無奈,這一等,從80年代中等到了90年代初,在幾經商量之後,他們打算採用微核心的寫法,成立自己的計劃,名稱叫 "Hurd"。這項計劃,如今仍在奮戰中,雖然 microkernal 的做法讓他們吃了不少苦頭;但可喜的是,0.2, 0.3 測試版本已經發表。

直到 21世紀的今日,RMS 依舊努力不懈地耕耘著他的夢土。儘管他本人認為還未真正地、完全地實現他的「GNU 宣言」;但他的理念與自由軟體寫作族群們的努力下,一條新的大道通往新的世界。大道旁,枝葉已然繁茂的樹蔭下,可口果實一如禮物般地為所有的人成熟。人們稱她--Linux。

arrow
arrow
    全站熱搜

    Bluelove1968 發表在 痞客邦 留言(0) 人氣()