UNIX 系統自 1969 年 Ken Thompson 與 Dennis Ritchie 在美國貝爾電話實驗室(Bell Telephone Laboratories)發展出雛形至今,已歷經近 30 來年。而 "UNIX" 這個字典上查不到其原意的怪字,其實是戲謔 MULTICS(MULTiplexed Information and Computing System)作業系統的大而無當所產生的諧音字。
在 1957 年 10 月,前蘇聯發射了第一枚人造衛星,此舉讓當時的美國總統艾森豪決定投下巨額的經費用以支援及發展科學,美國高等研究計劃署(ARPA, Advanced Research Projects Agency)便是在這個時空下設立了,該單位負責推動系統發展等相關計畫,成為當時美國電子計算機發展的重要推手。
1960 年代是大型電腦的發展年代,當時的麻省理工學院因最先實現了相容分時系統(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。
1969 年貝爾實驗室的計算機科學研究中心(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 顯示器,具有不錯的圖形處理能力。於是 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",沒想到這個開玩笑的名字會被人叫到今天。
這台機器引來了 Ken Thompson、碰上 Bill Joy 以及日後產生了 1BSD。她就宛如是一塊 UNIX 史上的地標,沿襲自 Bell Labs,豎立在柏克萊,承先啟後並開創新局。農夫個人認為,她應該被供在博物館。
當這台機器在 1975 年終運達柏克萊時;同一時間,Thompson 受邀回母校(柏克萊)當客座教授,科目就是 UNIX。Thompson 在校期間與 Jeff Schriebman 和 Bob Kridle 一起動手將新版的 V6 安裝在 PDP-11/70。
1975 年,一位密西根州大學的畢業生來到了柏克萊,他的名字就是 Bill Joy。當時 Joy 和同學 Chuck Haley (tar 就是他寫的)喜歡一起泡在電腦房裡面,Thompson 也時常插上一腳。他們成功地改善了 Pascal 的解譯與偵錯的能力,同時還提昇了解譯與執行的速度。另外換裝上 ADM-3 的螢幕後,他們覺得 ed 文字編輯指令並不合用;於是根據另外一個相似的 em 指令,發展了自己的覺得滿意的文字編輯工具,也就是指令 ex。
1976 年夏天,Thompson 結束了他的休假回到 Bell Labs。此時的 Joy 和 Haley 已經開始著手探索 UNIX kernal,甚至還做了一些修改。1977 年初,Joy 製作了一捲磁帶,上頭寫著 "Berkeley Software Distribution.",這就是 1BSD。其中包含新的 Pascal compiler 與 ex 編輯器。
在 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 這項功能一起發表的話,上頭的圖可能就是遺照了。
當時,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。
1990 年代中期,網際網路因出現 World Wide Web, HTML 這種新型態的應用,而開始迅速的延燒全世界。一夕間,架設網際網路主機的需求激增。這時有一套可以免費取得,並且能讓 x86 電腦升格成 UNIX 級主機的免費作業系統,開始了吸引全世界目光。在傳媒與電腦工程師們的競相走告下成為了這個新世代的焦點,這個新的名字就是 Linux。
然而,一般電腦使用者,需要的是可安裝運作的作業系統(農夫我習慣以"安裝套件"稱之),而非單一的作業系統核心。當時英國的曼徹斯特電算中心(Manchester Computer Center, 簡稱 MCC)便根據 0.12 版核心程式製作了一套名為 MCC Imterin 的安裝套件。隨後各地的安裝套件有如雨後春筍般地出現;如美國德州 Dave Safford 的 TAMU(Texas A&M University)版、Martin Junius 的 MJ 版、Peter McDonald 的 SLS(Softlanding Linux Sustem)版等非商業安裝套件的出現。在安裝需求日增的情況下,Linux 安裝套件創造出了一塊新的需求市場。這一線商機,讓非商業安裝套件的也開始出現在商業市場上。Slackware 大概可算是最早出現的商業安裝套件了。到如今,商業與非商業的安裝套件則已多得數不清了。
隨著使用人數激增,核心程式的版本與功能也開始加速演化,但仍不失於穩健。1994 年 3 月 13 日,核心程式 1.0 正式發表。其安裝套件在功能上的整合已急起直追當時商業版的 UNIX OS。此時的 Linux OS 已擁有數十萬名使用者。當時赫爾辛基大學還以此為由舉辦了一場名為"Linux 首度正式發表會"。就在芬蘭電視台與眾多傳媒的鄭重其事的報導下,Torvalds 成了芬蘭人的自豪,Linux OS 宛如剛誕生的"超新星",閃閃發亮地展現在眾人眼前。
早期的 Linux 核心程式曾被 Andrew Tanenbaum 指出,過度緊密地與 x86 處理器結合,所以他認為 Linux 核心程式將無法移植到別的處理器上。這點顯然與 UNIX OS 的可移植性大不相同。當時的情況的確是如此,這或多或少與 Torvalds 本人受限於擁有的硬體資源有關。但當 Linux 的使用族群拓展開來之後,便開始有人主動地將她移植到不同的平台上。像 Dave Miller 即以不下於 Torvalds 狂熱與學習精神將 Linux 成功地移植到 SUN 的 SPARC 工作站上。此外如 Amiga、Atari、PowerPc、MIPS R4000 也陸續見到 Linux 的身影。這些移植嚴格地從技術的角度來看,僅能說是"個案"。但這已激發 Torvalds 的興趣。真正撼動 Linux 核心的移植是對 Alpha 處理器。
1994 年 5 月,在 DEC 使用者協會上,Digital 的工程師 John Hall(外號 Maddog)碰上了 Torvalds,雙方一見如故。Maddog 力勸 Torvalds 將 Linux 移植到 Alpha 晶片上,並主動提供了一台 Alpha 電腦供 Torvalds 研究使用。當年可說是全世界最快的 64-bits Alpha 晶片是 DEC 引以為豪的一項成就,其架構與功能均優越過同一時期的 Intel 32-bits 處理器。這種技術性的挑戰吸引了 Torvalds 的投入。這項移植,但這對原先以 x86 微處理器為寫作基礎的 Linux 核心程式而言,實在不是一件小工程。在 Torvalds 與 DEC 相關人員的將近一年奮戰後,Linux 核心程式脫胎換骨,成功地移植到 Alpha 處理器上(與 x86 處理器使用同一套程式碼)。1995 年 3 月,被戲謔是 Linux'95 的 1.2 版核心程式正式發表,支援 Intel x86、DEC Alpha、SUN SPARC、MIPS 等處理器。
--------------------------------------------------------------------------------
參考文獻:
20 Years of Berkeley Unix : From AT&T-Owned to Freely Redistributable
Computer : A History of the Information Machine
by Martin Campbell-Kelly, William Aspray
Free for All: How LINUX and the Free Software Movement Undercut the High-Tech Titans
by Peter Wayner
Just for Fun: The Story of an Accidental Revolutionary
by Linus Torvalds, David Diamond
Life With Unix : A Guide for Everyone
by Don Libes, Sandy Ressler
The Creation of the UNIX Operating System
Rebel Code: Linux and the Open Source Revolution
by Glyn Moody
Where Wizards Stay Up Late : The Origins of the Internet
by Katie Hafner, Matthew Lyon