Lunix歷史及如何學習

1. Lunix是什麼

1.1 Lunix是操作系統還是應用程序

       Lunix是一套操作系統,它提供了一個完整的操作系統當中最底層的硬件控制與資源管理的完整架構, 這個架構是沿襲Unix 良好的傳統來的,所以相當的穩定而功能強大!Lunix具有核心和系統呼叫兩層。Torvalds 先生在 1991 年寫出 Linux 核心的時候,其實該核心僅能『驅動 386 所有的硬件』而已, 所謂的『讓 386 計算機開始運作,並且等待用戶指令輸入』。

1.2 Lunix之前,Unix歷史

1969 年以前:一個偉大的夢想--Bell,MIT 與 GE 的『Multics』系統

早期的計算機架構很難使用,除了指令週期並不快之外,操作接口也很麻煩! 因爲那個時候的輸入設備只有卡片
閱讀機、輸出設備只有打印機, 用戶也無法與操作系統互動(批次型操作系統)。

後來可以使用鍵盤來進行信息的輸入。不過,在一間學校裏面,主機畢竟可能只有一部,如果多人等待使用,那怎麼辦?於是1960年代初期麻省理工學院(MIT)發展了所謂的: 『兼容分時系統(Compatible Time-Sharing System, CTSS)』, 它可以讓大型主機透過提供數個終端機(terminal)以聯機方式進入主機,同時利用主機的資源進行運算工作。兼容分時系統可以說是近代操作系統的始祖!它可以讓多個使用者在某一段時間內分別使用 CPU 的資源, 感覺上你會覺得大家是同時使用該主機的資源!

爲了更加強化大型主機的功能,以讓主機的資源可以提供更多使用者來利用,在 1965 年前後,由貝爾實驗室(Bell)、麻省理工學院(MIT)及奇異公司(GE, 或稱爲通用電器)共同發起了 Multics 的計劃,Multics 計劃的目的是想要讓大型主機可達成提供 300 個以上的終端機聯機使用的目標。不過,到了 1969 年前後,計劃進度落後,資金也短缺,所以該計劃雖然繼續在研究,但貝爾實驗室還是退出了該計劃的研究工作。

1969 年:Ken Thompson 的小型 file server system

但是,貝爾研究室原本參與 Multics 計劃的人員Ken Thompson (肯·湯普森),由於個人需要(想要移植一套名爲『太空旅遊』的遊戲),希望開發一個小小的操作系統以提供自己的需求。在開發時,有一部DEC (Digital Equipment Corporation)公司推出的 PDP-7 剛好沒人使用,於是他就準備針對這部主機進行操作系統核心程序的撰寫。經過四個星期的奮鬥,他終於以彙編語言(Assembler)寫出了一組核心程序,同時包括一些核心工具程序, 以及一個小小的文件系統。那個系統就是 Unix 的原型! 當時 Thompson 將 Multics 龐大的複雜系統簡化了不少,於是同實驗室的朋友都戲稱這個系統爲:Unics。

Thompson 的這個文件系統有兩個重要的概念,些概念在後來對於 Linux 的發展有相當重要的影響。分別是:

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

1973 年:Unix 的正式誕生,Ritchie 等人以 C 語言寫出第一個正式 Unix 核心

Unics 本來是以彙編語言寫成的,彙編語言具有專一性,加上當時的計算機機器架構都不太相同,因此每次要安裝到不同的機器都得要重新編寫彙編語言。後來 Thompson 與 Ritchie 合作想將 Unics 改以高階程序語言來撰寫。當時現成的高階程序語言有 B語言。 但是由 B 語言所編譯出來的核心效能不是很好。後來 Dennis Ritchie 將 B 語言重新改寫成 C 語言,再以 C 語言重新改寫與編譯 Unics 的核心, 最後正名與發行出 Unix 的正式版本!

貝爾實驗室是隸屬於美國電信大廠 AT&T 公司的, AT&T 當時忙於其他商業活動,對於Unix 並不支持也不排斥。

1977 年:重要的 Unix 分支--BSD 的誕生

1977 年,Berkeley 大學的 Bill Joy 針對他的機器修改了 UNIX 源碼,稱爲BSD(Berkeley Software Distribution)。這個BSD 是 Unix 很重要的一個分支,Bill Joy 也是 Sun這家公司的創辦者! Sun 公司即是以 BSD 發展的核心進行自己的商業 Unix 版本的發展的。 

1979 年:重要的 System V 架構與版權宣告

1979 年,AT&T推出 System V 第七版 Unix 。 這一版最重要的特色是可以支持 x86 架構的個人計算機系統。但是,在該版本中特別提到了 『不可對學生提供原始碼』的嚴格限制!不再開源。

1984 年之一:x86 架構的 Minix 操作系統開始撰寫並於兩年後誕生

沒有核心原始碼,老師如何教導學生認識 Unix 呢?Andrew Tanenbaum (譚寧邦)教授於是自己動手寫了 Minix 這個 Unix Like的核心程序!Minix 並不是完全免費的,但是購買的磁盤還會附上 Minix 的原始碼,這意味着使用者可以學習 Minix 的核心程序設計概念! 

1984 年之二:GNU 計劃與 FSF 基金會的成立

1984 年,史託曼開始 GNU 計劃,這個計劃的目的是:建立一個自由、開放的 Unix 操作系統(Free Unix)。爲提高GNU計劃知名度,史託曼開始撰寫 C 語言的編譯程序,那就是現在相當有名的GNU C Compiler(gcc)。

但這並不順利,他先轉而將他原先就已經寫過的 Emacs 編輯器寫成可以在Unix 上面跑的軟件,並公佈原始碼。 Emacs 是一種程序編輯器,他可以在用戶撰寫程序的過程中就進行程序語法的檢驗,此一功能可以減少程序設計師除錯的時間!因爲 Emacs 太優秀了,因此,很多人便直接向他購買。他也因此賺了寫錢,並且成立自由軟件基金會(FSF, Free Software Foundation),請更多工程師與志工撰寫軟件。終於還是完成了 GCC,這比 Emacs 還更有幫助! 此外,他還撰寫了更多可以被呼叫的 C函式庫(GNU C library),以及可以被使用來操作操作系統的基本接口 BASH shell!

1985 年,爲了避免 GNU 所開發的自由軟件被其他人所利用而成爲專利軟件, 史託曼與律師草擬了有名的通用公共許可證(General Public License, GPL)。這造成後來很多的軟件開發者可以藉由這些基礎的工具來進行程序開發! 進一步壯大了自由軟件團體,但是對於 GNU 的最初構想 『建立一個自由的 Unix 操作系統』來說,有這些優秀的程序是仍無法滿足, 因爲,當下並沒有『自由的 Unix 核心』存在!

1988 年:圖形接口 XFree86 計劃

有鑑於圖形用戶接口(Graphical User Interface, GUI) 的需求日益加重,在 1984 年由 MIT 與其他第三方首次發表了 X Window System ,並且更在 1988 年成立了非營利性質的 XFree86 這個組織。

1991 年:芬蘭大學生 Linus Torvalds 的一則簡訊

1991 年,芬蘭的赫爾辛基大學的 Linus Torvalds 在 BBS 上面貼了一則消息, 宣稱他以 bash, gcc等 GNU 的工具寫了一個小小的核心程序,該核心程序單純是個玩具,不像 GNU 那麼專業。 不過該核心程序可以在 Intel 的 386 機器上面運作就是了。這讓很多人很感興趣!從此開始了 Linux 不平凡的路程!

以下爲截自網絡上UNIX歷史圖譜。『UNIX進化史(UNIX大家族族譜1969-2013)』

1.3 Torvalds 的 Linux 發展

Lunix  kernel 的出現

1988 年間,託瓦茲順利的進入了赫爾辛基大學,並選讀了計算機科學系。當時整個赫爾辛基只有一部最新的 Unix系統,同時僅提供 16 個終端機(terminal)。光是等待使用 Unix 的時間,就很耗時~爲此,他不禁想到:『我何不自己搞一部 Unix 來玩?』

早期 Intel x86 架構計算機不是很受重視的原因,就是因爲 x86 的芯片對於多任務的處理不佳, CPU在不同的工作之間切換不是很順暢。但是這個情況在 386 計算機推出後,有很大的改善。託瓦茲對於個人計算機的 CPU 其實並不滿意,因爲他之前碰的計算機都是工作站型的計算機, 這類計算機的 CPU 特色就是可以進行『多任務處理』的能力。 託瓦茲在得知新的 386 芯片的相關信息後,他認爲,以性能價格比的觀點來看, Intel 的 386 相當的便宜,所以在性能上也就稍微可以將就將就 ^_^。最終他就貸款去買了一部 Intel 的 386 來玩。

購買了最新的 Intel 386 的個人計算機後,託瓦茲就立即安裝了 Minix這個操作系統。 另外,上個小節當中也談到,Minix 這個操作系統是有附上原始碼的, 所以託瓦茲也經由這個原始碼學習到了很多的核心程序設計的設計概念。Minix 雖然真的很棒,但是譚寧邦教授就是不願意進行功能的加強,導致一堆工程師在操作系統功能上面的慾求不滿!這個時候年輕的託瓦茲就想:『既然如此,那我何不自己來改寫一個我想要的操作系統?』

GNU 計劃提供的 bash 工作環境軟件以及 gcc 編譯程序等自由軟件, 讓託瓦茲得以順利的撰寫核心程序。他參考 Minix 的設計理念與書上的程序代碼,然後仔細研究出 386 個人計算機的效能優化, 然後使用 GNU 的自由軟件將核心程序代碼與 386 緊緊的結合在一起,最終寫出他所需要的核心程序。他希望這個程序可以獲得大家的一些修改建議, 於是他便將這個核心放置在網絡上提供大家下載,託瓦茲放置核心的那個 FTP 網站的目錄爲:Linux,從此,大家便稱這個核心爲 Linux 了。

Linux 的發展:虛擬團隊的產生

Linux 雖然是託瓦茲發明的,而且內容還絕不會涉及專利軟件的版權問題。不過,如果單靠託瓦茲自己一個人的話,那麼 Linux 要茁壯實在很困難~ 因爲一個人的力量是很有限的。這期間經歷了幾個階段:

單一個人維護階段

廣大黑客志工加入階段

核心功能細部分工發展階段

1994 年Linux 的核心正式版version 1.0終於完成!這一版同時還加入了 X Window System 的支持呢!且於 1996 年完成了 2.0 版、2011 年釋出 3.0 版,更於 2015 年 4 月釋出了 4.0 版! 此外,託瓦茲指明瞭企鵝爲 Linux 的吉祥物。 (託瓦茲是因爲小時候去動物園被企鵝咬了一口念念不忘, 而正式的 2.0 推出時,大家要他想一個吉祥物。他在想也想不到什麼動物的情況下, 就將這個念念不忘的企鵝當成了 Linux 的吉祥物了)

Linux 的核心版本和Linux distributions

Lunix核心版本編號命令如下:

linux distribution是Linux發行版。其實Linux是指的系統的內核,不能認爲是一個系統。有人在內核的基礎上增加一些軟件,就成了一個操作系統了。這個系統因爲以Linux爲內核,所有就叫Linux發行版。大部分人爲了簡單,所以把發行版省掉了,實際上世上沒有Linux 這個操作系統,因爲他只是個內核。現在出現Linux這一稱呼,實際上是Linux發行版。這是正規的說法,比如,我用的 Linux 是 CentOS 這個 distribution,版本爲 7.x 版。

各大 Linux Distributions 的主要異同:支持標準

上鳥哥認爲 distributions 主要分爲兩大系統,一種是使用 RPM 方式安裝軟件的系統,包括 Red Hat, Fedora, SuSE 等都是這類; 一種則是使用 Debian 的 dpkg 方式安裝軟件的系統,包括 Debian, Ubuntu, B2D 等等。若是加上商業公司或社羣單位的分類,可以簡單的用下表來做個解釋!

 

 1.4 Linux 該如何學習

  1. 計算器概論與硬件相關知識
  2. 先從 Linux 的安裝與指令學起
  3. Linux 操作系統的基礎技能
  4. 務必學會 vi 文書編輯器
  5. Shell 與 Shell Script 的學習
  6. 一定要會軟件管理員
  7. 網絡基礎的建立

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章