1. 程式人生 > >Linux簡介及Linux學習路線圖

Linux簡介及Linux學習路線圖

一、Linux 為何物

Linux 就是一個作業系統,就像你多少已經瞭解的 Windows(xp,7,8)和 Max OS ,至於作業系統是什麼,就不用過多解釋了,如果你學習過前面的入門課程,應該會有個基本概念了,這裡簡單介紹下作業系統在整個計算機系統中的角色。

我們的 Linux 也就是系統呼叫和核心那兩層,當然直觀的來看,我們使用的作業系統還包含一些在其上執行的應用程式,比如文字編輯器,瀏覽器,電子郵件。

二、Linux 歷史簡介

作業系統始於二十世紀 50 年代,當時的作業系統能執行批處理程式。批處理程式不需要使用者的互動,它從檔案或者穿孔卡片讀取資料,然後輸出到另外一個檔案或者印表機。

二十世紀六十年代初,互動式作業系統開始流行。它不僅僅可以互動,還能使多個使用者從不同的終端同時操作主機。這樣的作業系統被稱作分時作業系統,它的出現對批處理作業系統是個極大的挑戰。許多人嘗試開發分時作業系統, 其中包括一些大學的研究專案和商業專案。當時有一個專案叫做” Multics “,它的技術在當時很創新。” Multics “專案的開發並不順利。它花費了遠超過預計的時間來完成,卻沒有在作業系統市場上佔到多少份額。而參加該專案的一個開發團體-貝爾實驗室退出了這個專案。他們在退出後開發了他們自己的一個作業系統—— UNIX。

UNIX 最初免費釋出並因此在大學裡受到歡迎。後來,UNIX 實現了 TCP/IP 協議棧,成為了早期工作站的作業系統的一個流行選擇。

1990年,UNIX 在伺服器市場尤其是大學校園成為主流作業系統,許多校園都有 UNIX 主機,當然還包括一些研究它的計算機系的學生。這些學生都渴望能在自己的電腦上執行 UNIX 。不幸的是,從那時候開始,UNIX 開始變得商業化,它的價格也變得非常昂貴。而唯一低廉的選擇就是 MINIX ,這是一個功能有限的類似 UNIX 的作業系統,作者 Andrew Tanebaum 開發它的目的是用於教學。

1991 年 10 月,Linus Torvalds(Linux 之父)在赫爾辛基大學接觸 UNIX ,他希望能在自己的電腦上執行一個類似的作業系統。可是 UNIX 的商業版本非常昂貴,於是他從 MINIX 開始入手,計劃開發一個比 MINIX 效能更好的作業系統。很快他就開始了自己的開發工作。他第一次發行的版本很快吸引了一些黑客。儘管最初的 Linux 並沒有多少用處,但由於一些黑客的加入使它很快就具有了許多吸引人的特性,甚至一些對作業系統開發不感興趣的人也開始關注它。

Linux 本身只是作業系統的核心。核心是使其他程式能夠執行的基礎。它實現了多工和硬體管理,使用者或者系統管理員互動執行的所有程式實際上都執行在核心之上。其中有些程式是必需的,比如說,命令列直譯器(shell),它用於使用者互動和編寫 shell 指令碼(.bat檔案)。 Linus沒有自己去開發這些應用程式,而是使用已有的自由軟體。這減少了搭建開發環境而所需花費的工作量。實際上,他經常改寫核心,使得那些程式能更容易在 Linux 上執行。許多重要的軟體,包括 C 編譯器,都來自於自由軟體基金 GNU 專案。GNU 專案開始於 1984 年,目的是為了開發一個完全類似於 UNIX 的免費作業系統。為了表揚 GNU 對 Linux 的貢獻,許多人把 Linux 稱為GNU/Linux(GNU 有自己的核心)。

1992-1993 年,Linux 核心具備了挑戰 UNIX 的所有本質特性,包括 TCP/IP 網路,圖形介面系統(X window),Linux 同樣也吸引了許多行業的關注。一些小的公司開發和發行Linux,有幾十個 Linux 使用者社群成立。1994 年,Linux 雜誌也開始發行。

Linux 核心 1.0 在 1994 年三月釋出,核心的釋出要經歷許多開發週期,直至到達一個穩定的版本。

下面列舉一下 Linux 誕生大事件:

  • 1965 年,Bell 實驗室、MIT、GE(通用電氣公司)準備開發 Multics 系統,為了同時支援 300 個終端訪問主機,但是 1969 年失敗了;

 剛開始並沒有滑鼠、鍵盤,輸入裝置只有卡片機,因此如果要測試某個程式,則需要將讀卡紙插入卡片機,如果有錯誤,還需要重新來過; Multics:Multiplexed Information and Computing Service

  •  1969 年,Ken Thompson(C語言之父)利用匯編語言開發了 FIle Server System(Unics,即 UNIX 的原型)

因為組合語言對於硬體的依賴性,因此只能針對特定硬體; 只是為了移植一款“太空旅遊”的遊戲;

  •  1973 年,Dennis Ritchie 和 Ken Thompson 發明了 C 語言,而後寫出了 UNIX 的核心

將 B 語言改成 C 語言,由此產生了 C 語言之父; 90% 的程式碼是 C 語言寫的,10% 的程式碼用匯編寫的,因此移植時只要修改那 10% 的程式碼即可;

  •  1977 年,Berkeley 大學的 Bill Joy 針對他的機器修改 UNIX 原始碼,稱為BSD(Berkeley Software Distribution)

Bill Joy 是 Sun 公司的創始人;

  •  1979 年,UNIX 釋出 System V,用於個人計算機;
  •  1984 年,因為 UNIX 規定:“不能對學生提供原始碼”,Tanenbaum 老師自己編寫兼容於 UNIX 的Minix,用於教學;
  •  1984 年,Stallman 開始 GNU(GNU’s Not Unix)專案,創辦 FSF(Free Software Foundation)基金會;

產品:GCC、Emacs、Bash Shell、GLIBC; 倡導“自由軟體”; GNU 的軟體缺乏一個開放的平臺執行,只能在 UNIX 上執行; 自由軟體指使用者可以對軟體做任何修改,甚至再發行,但是始終要掛著 GPL 的版權; 自由軟體是可以賣的,但是不能只賣軟體,而是賣服務、手冊等;

  •  
  •  1988 年,MIT 為了開發 GUI,成立了 XFree86 的組織;
  •  1991 年,芬蘭赫爾辛基大學的研究生 Linus Torvalds 基於 gcc、bash 開發了針對 386 機器的 Linux 核心;
  •  1994 年,Torvalds 釋出 Linux-v1.0;
  • 1996 年,Torvalds 釋出 Linux-v2.0,確定了 Linux 的吉祥物:企鵝;

UNIX進化史(UNIX大家族族譜1969-2013)

三、Linux 重要人物

1.Ken Thompson:C 語言之父和 UNIX 之父

2.Dennis Ritchie:C 語言之父和 UNIX 之父

3.Stallman:著名黑客,GNU 創始人,開發了 Emacs、gcc、bash shell

4.Bill Joy:BSD 開發者

5.Tanenbaum:Minix 開發者

6.Linus Torvalds:Linux 之父,芬蘭赫爾辛基大學

四、Linux 與 Windows 到底有哪些不同

1.免費與收費

  • 最新正版 Windows8.1 官方售價 ¥888;
  • Linux 免費或少許費用。

2.軟體與支援

  • Windows 平臺:數量和質量的優勢,不過大部分為收費軟體;由微軟官方提供重要支援和服務;
  • Linux 平臺:大都為開源自由軟體,使用者可以修改定製和再發布,由於基本免費沒有資金支援,部分軟體質量和體驗欠缺;有全球所有的 Linux 開發者和自由軟體社群提供支援。

3.安全性

  • Windows 平臺:三天兩頭打補丁安裝系統安全更新,還是會中病毒木馬;
  • Linux 平臺:要說 Linux 沒有安全問題,那當然是不可能的,這一點仁者見仁智者見智,相對來說肯定比 Windows 平臺要更加安全,使用 Linux 你也不用裝某防毒,某毒霸。

4.使用習慣

  • Windows:普通使用者基本都是純圖形介面下操作使用,依靠滑鼠和鍵盤完成一切操作,使用者上手容易入門簡單;
  • Linux:兼具圖形介面操作(需要使用帶有桌面環境的發行版)和完全的命令列操作,可以只用鍵盤完成一切操作,新手入門較困難,需要一些學習和指導(這正是我們要做的事情),一旦熟練之後效率極高。

5.可定製性

  • Windows:這些年之前算是全封閉的,系統可定製性很差;
  • Linux:你想怎麼做就怎麼做,Windows 能做到得它都能,Windows 做不到的,它也能。

6.應用範疇

或許你之前不知道 Linux ,要知道,你之前在 Windows 使用百度,谷歌,上淘寶,聊 QQ 時,支撐這些軟體和服務的,是後臺成千上萬的 Linux 伺服器主機,它們時時刻刻都在進行著忙碌的資料處理和運算,可以說世界上大部分軟體和服務都是執行在 Linux 之上的。

7.Windows 沒有的

  • 穩定的系統
  • 安全性和漏洞的快速修補
  • 多使用者
  • 使用者和使用者組的規劃
  • 相對較少的系統資源佔用
  • 可定製裁剪,移植到嵌入式平臺(如安卓裝置)
  • 可選擇的多種圖形使用者介面(如 GNOME,KDE)

8.Linux 沒有的

  • 沒有特定的支援廠商
  • 遊戲娛樂支援度不足
  • 專業軟體支援度不足

五、如何學習 Linux

1.學習心態

  • 明確目的:你是要用 Linux 來幹什麼,搭建伺服器,做程式開發,還是日常辦公,還是娛樂遊戲;

  • 面對現實:Linux 大都在命令列下操作,能否接受不用或少用圖形介面;

  • 是學習 Linux 作業系統本身還是某一個Linux發行版(Ubuntu,CentOS,Fedora,OpenSUSE,Debian,Mint等等),如果你對發行版的概念或者它們之間的關係不明確的話可以參看Linux 發行版

2.注重基礎,從頭開始

大致的學習路徑如下: