Linux 核心是由芬蘭人林納斯托瓦爾茲(Linus Torvalds)在赫爾辛基大學上學時出於個人愛好而編寫的(因為當時Unix太貴了),免費使用和自由傳播,類 Unix 作業系統,多使用者、多工、支援多執行緒和多 CPU,能執行主要的 UNIX 工具軟體、應用程式和網路協議,繼承了 Unix 以網路為核心的設計思想,是一個性能穩定的多使用者網路作業系統。目前工作中主要使用的版本是RedHat、Ubuntu、Centos,延伸閱讀請搜尋 Linux發行版、GNU軟體、GPL協議、Linus Torvalds、開源協議。
文字版如下:
大家都知道計算機的發明和二戰歷史密碼破譯有關,盟軍的勝利離不開科學家艾倫圖靈的研究,我們都聽過圖靈測試和圖靈獎,圖靈的人生傳奇而神秘,被稱為計算機和人工智慧之父,他對計算機的主要貢獻通俗的理解就是,圖靈從數學理論上證明計算機這個高科技是可行的,所以圖靈也叫計算機科學之父。
現代計算機都是馮諾依曼結構,但是在馮諾依曼之前,計算機就已經被髮明出來了,那就是阿塔納索夫-貝瑞計算機,這是第一臺自動電子計算機,這個計算機引入了二進位制和布林邏輯的實現,但是這個計算機沒有cpu,使用真空管進行數字計算。所以阿塔納索夫最大的貢獻就是他以實際行動證明,計算機這個高科技真的可以搞出來。
馮諾依曼團隊主要貢獻是發表了著名的101報告,明確規定二進位制替代十進位制運算,把計算機分為5大元件,奠定了電子計算機邏輯結構設計的基礎,導致了EDVAC計算機的面世,這是一臺被證明是可靠和可生產的計算機,所以通俗的說馮諾依曼對計算機的貢獻主要是,你看計算機這樣設計實現出來更好,他被稱為現代計算機之父。
所以這三個傢伙其實都是計算機之父。
但是最初的計算機不但昂貴,而且笨拙,只能處理單個任務,他們準備給計算機弄個os作業系統來排程一下,讓計算機可以為多工,多使用者來服務。MIT、貝爾實驗室、美國通用一起弄了個叫Multics的專案,這個專案的願景很大,也做出了一些成就,但是最終還是因為步子邁的太大,扯到蛋了,以失敗告終。
有個牛人叫肯湯普森,因為Multics的專案失敗以後,他一下沒事可幹了,但是他之前在Multics上寫了個star trap的遊戲,他想把他移植到一個叫PDP-7的小型機上玩,經過幾天996後他就成功的在PDP-7上給他的遊戲弄個執行環境,其實就是個os了,他把遊戲給他的同事們玩,大家都對他的遊戲不感興趣,對他運行遊戲的這個os很感興趣,不斷完善修改以後,他們給這個os取了個名字叫Unics,意思是反Multics,其實是一種對Multics的自嘲。
最早的os都是組合語言編寫的,但當時有人用bcpl這種高階語言也能寫作業系統,肯湯普森和他的小夥伴意識到高階語言寫作業系統是可行的,但是湯普森不滿意bcpl,於是創造了b語言來寫新的os,但是b語言還不夠好,他的好朋友丹尼斯里奇改進了b語言,就是NEW-B語言(牛X語言),後來發展成了著名的c語言,你猜的沒錯,這兩哥們就是c語言之父,他們也是1983年的圖靈獎得主。BTW 谷歌的go語言也是肯湯普森帶隊。
這期間在1974年,用c語言重寫的unix已經可以見人了,因為unix的優點很多教育機構、企業都在研究和改造unix系統,貝爾實驗室的母公司AT&T看到unix發展的這麼好,把母公司拆成了分公司規避了當時限制它的反壟斷法,想賺點大錢。同時其他的組織比如伯克利大學開始基於unix研發免費的類unix系統,就是後來有名的BSD。這期間還經常和貝爾實驗室打官司,一個說用了他們的原始碼,一個根本沒用都自己寫的。後來重寫的類unix系統叫FreeBSD、NetBSD、OpenBSD等等,BSD也是喬布斯NeXTSTEP系統的前身(以Mach和BSD為基礎),而NeXTSTEP系統演化成今天的MacOS和iOS。
當時有個駭客斯托曼,非常不滿那種軟體商用的行為,他建立了自由軟體基金會、Emacs、GNU軟體,繼續倡導軟體開源免費的理念,也搞出了很多有用的軟體,但是這個過程中他發現還是受到系統核心的諸多限制,搞的Hurd核心又非常的不科學,很尷尬。
當時有個教授特南鮑姆編寫了不含AT&T原始碼的類Unix系統Minix系統,在學校大家都在用來科研和教學,在芬蘭上學的學生林納斯托瓦爾茲,他覺得Minix系統不滿足他的要求,他開始按自己的想法修改,隨著不斷改造,他發現自己都已經重寫了一個作業系統核心了,他把這個系統發了個郵件,這個核心簡潔清晰,很多大牛都在上面新增程式碼,斯托曼正在因為GNU軟體沒有核心支援而發愁,於是邀請他加入,1994年linux 1.0 誕生了,成為GNU/Linux,為了突出他的貢獻,改名為linux,關於linux的發聲,有的人讀liuliukesi,有的人linakesi,高興就好。
今天已經有很多linux的發行版了。工作中常用的是 redhat、ubuntu、centos 發行版。
關於linux的故事就是這樣,一個遊戲、一些牛人、一堆利益造就了科技技術的進步,希望你喜歡這個不夠嚴謹的敘述,為什麼要講這個故事? 因為這些故事可以充值信仰,我們要面向信仰學習程式設計。
主要的linux發行版:
1.1 REHL - Red Hat Enterprise Linux 是紅帽公司的商業版本
1.2 CentOS - Community Enterprise Operating System 社群作業系統,基於 RHEL 重新編譯的開源免費版
1.3 Ubuntu - 基於 Debian GNU/Linux 由 Canonical Ltd 打造
1.4 SUSE - 德國 SuSE Linux AG 公司的發行版
1.5 Debian - 致力於建立自由操作的合作組織及其作品
1.6 OEL - Oracle Enterprise Linux 對 Oracle 的軟體支援較好
學習的時候推薦使用的系統是 Ubuntu (https://ubuntu.com/download) 或者 Centos (https://www.centos.org/download/),可以下載對應的 ISO 檔案安裝到虛擬機器中,學過 Docker 的可以直接使用 docker-machine 命令。