圖爲肯•湯普森與丹尼斯•裏奇的合影,天才都是不修邊幅的……
隨後出現了各種版本的 UNIX 系統,目前常見的有 Sun Solaris、FreeBSD、IBM AIX、HP-UX 等。
AT&T和BSD的糾紛
前面提及,1978年,學術界的老大柏克利大學 (UC Berkeley),推出了一份以第六版爲基礎,加上一些改進和新功能而成的 Unix。
1979年,AT&T推出第七版System V,支持x86架構。但同時特別聲明“不可對學生提供源碼”。
雖然 AT&T的Unix System V也是非常優秀的Unix版本,但是BSDUnix在Unix領域內的影響更大。AT&T的Unix系統實驗室一直關注著BSD的發展,在1992年,Unix系統實驗室指控BSDI──一家發行商業BSDUnix的公司,違反了AT&T的許可權,發布自己的Unix版本,並進一步指控伯克利計算機系統研究組泄漏了Unix的商業機密(此時的4.3BSD中來自AT&T Unix的代碼已經不足10%)。
這個官司影響了很多Unix廠商,使他們不得不從BSD Unix轉向UnixSystem V,以避免法律問題。以至于當今大多數商業Unix版本都是基于Unix System V的。
由于最後判決懸而未決,這樁法律訴訟將BSD後裔的開發,特別是自由軟件,延遲了兩年,這導致沒有法律問題的Linux內核獲得了極大的支持。Linux跟386BSD的開發幾乎同時起步,Linus說,當時如果有自由的基于386的Unix-like操作系統,他就可能不會創造Linux。盡管無法預料這給以後的軟件業究竟造成了什麽樣的影響,但有一點可以肯定,Linux更加豐富了這塊土壤。
這場官司一直打到 AT&T將自己的Unix系統實驗室賣掉,這個時候已經是1993年,新接手的Novell公司采取了一種比較開明的做法,允許BSDI自由發布自己的BSD,但是前提是必須將來自于AT&T的代碼完全刪除,于是誕生了4.4 BSD Lite版,由于這個版本不存在法律問題,4.4BSD Lite成爲了現代BSD系統的基礎版本。
由于BSD系統已經十分成熟,作爲對操作系統進行研究的目標已經達到,伯克利計算機系統研究組(CSRG)在發布了4.4BSD-lite2之後就解散了,小組的科研人員有些進入了Unix商業公司,有些繼續進行其他計算機領域的研究。此時,嚴格意義上的Unix System V和BSDUnix都不複存在了,存在的只是他們的各種後續版本。此後,BSD Unix走上了複興的道路。BSD的開發也走向了幾個不同的方向,並最終導致了FreeBSD、OpenBSD和NetBSD的出現。
Unix的版權曾經爲AT&T所有,之後Novell擁有了Unix,再之後Novell又將版權出售給了SCO(這一事實雙方尚存在爭議)。有很多大公司在取得了Unix的授權之後,開發了自己的Unix産品。
開源領袖–斯托曼
AT&T不再開發源碼的這種商業態度,讓當時許許多的Unix的愛好者和軟件開發者們感到相當的痛心和憂慮,他們認爲商業化的種種限制並不利于産生的發展,相反還能導制産品出現諸多的問題。隨著商業化Unix的版本的種種限制和諸多問題,引起了大衆的不滿和反對。于是,大家開始有組織地結成“反叛聯盟”以此對抗欺行罷市的AT&T等商業化行爲。
另一方面,關于“大教堂”(集權、封閉、受控、保密)和“集市”(分權、公開、精細的同僚複審)兩種開發模式的對比成爲了新思潮的中心思想。這個新思潮對IT業産生了非常深遠影響。爲整個計算機世界帶來了革命性的價值觀。
此時,一個名叫Richard Stallman的領袖出現了,他認爲Unix是一個相當好的操作系統,如果大家都能夠將自己所學貢獻出來,那麽這個系統將會更加的優異!他倡導的Open Source的概念,就是針對Unix這一事實反對實驗室裏的産品商業化私有化。
盡管Stallman既不是、也從來沒有成爲一個Unix程序員,但在後1980的大環境下,實現一個仿Unix操作系統成了他追求的明確戰略目標。Richard Stallman早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他們對代碼共享的使命感甚至比那些有更多Unix背景的人強烈。
爲了這個理想,Richard Stallman于1984年創業了GNU,計劃開發一套與Unix相互兼容的的軟件。1985 年 Richard Stallman 又創立了自由軟件基金會(Free Software Foundation)來爲 GNU 計劃提供技術、法律以及財政支持。
盡管 GNU 計劃大部分時候是由個人自願無償貢獻,但 FSF 有時還是會聘請程序員幫助編寫。當 GNU 計劃開始逐漸獲得成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是之後被 Red Hat 兼並的 Cygnus Solutions。
GNU組織的建立,延續了當年Unix剛出現時的情形,並爲這種情形建立了可靠的法律和財務保障。GNU 工程十幾年以來,已經成爲一個對軟件開發主要的影響力量, 創造了無數的重要的工具。例如:強健的編譯器,有力的文本編輯器,甚至一個全功能的操作系統。從那時開始,許多程序員聚集起來開始開發一個自由的、高質量、易理解的軟件,讓這使得Unix社區生機勃勃,一派繁榮景象。
自90年代發起這個計劃以來,GNU 開始大量的産生或收集各種系統所必備的組件,像是——函數庫(libraries)、編譯器(compilers)、調試工具(debugs)、文本編輯器(text editors)、網站服務器(web server),以及一個Unix的使用者接口(Unix shell)等等,等等。
但由于種種原因,GNU一直沒有開發操作系統的kernel。正當Richard Stallman在爲操作系統內核傷腦筋的時候,Linux出現了。正是因爲Unix的不開源路線促成了Linux的誕生,Linus Torvalids 在1991年創造了Linux –這並不是一個簡單的Unix克隆版本,只不過它長得像Unix(系統結構和功能上),該內核和GNU套件整合後形成了如今各式各樣的Linux版本。
GNU
GNU計劃,又稱革奴計劃,是由Richard Stallman在1983年9月27日公開發起的。它的目標是創建一套完全自由的操作系統。Richard Stallman最早是在net.unix-wizards新聞組上公布該消息,並附帶一份《GNU宣言》等解釋爲何發起該計劃的文章,其中一個理由就是要“重現當年軟件界合作互助的團結精神”。
爲保證GNU軟件可以自由地“使用、複制、修改和發布”,所有GNU軟件都在一份在禁止其他人添加任何限制的情況下授權所有權利給任何人的協議條款,GNU通用公共許可證(GNU General Public License,GPL)。即“反版權”(或稱Copyleft)概念。
簡介
GNU是“GNU’s Not Unix”的遞歸縮寫。Stallman宣布GNU應當發音爲Guh-NOO以避免與new這個單詞混淆(注:Gnu在英文中原意爲非洲牛羚,發音與new相同)。UNIX是一種廣泛使用的商業操作系統的名稱。由于GNU將要實現UNIX系統的接口標准,因此GNU計劃可以分別開發不同的操作系統部件。GNU計劃采用了部分當時已經可自由使用的軟件,例如TeX排版系統和X Window視窗系統等。不過GNU計劃也開發了大批其他的自由軟件。
曆史
1985年Richard Stallman又創立了自由軟件基金會(Free Software Foundation)來爲GNU計劃提供技術、法律以及財政支持。盡管GNU計劃大部分時候是由個人自願無償貢獻,但FSF有時還是會聘請程序員幫助編寫。當GNU計劃開始逐漸獲得成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是之後被Red Hat兼並的Cygnus Solutions。
到了1990年,GNU計劃已經開發出的軟件包括了一個功能強大的文字編輯器Emacs。GCC(GNU Compiler Collection,GNU編譯器集合),是一套由 GNU 開發的編程語言編譯器。以及大部分UNIX系統的程序庫和工具。唯一依然沒有完成的重要組件就是操作系統的內核(稱爲HURD)。
1991年Linus Torvalds編寫出了與UNIX兼容的Linux操作系統內核並在GPL條款下發布。Linux之後在網上廣泛流傳,許多程序員參與了開發與修改。1992年Linux與其他GNU軟件結合,完全自由的操作系統正式誕生。該操作系統往往被稱爲“GNU/Linux”或簡稱Linux。(盡管如此GNU計劃自己的內核Hurd依然在開發中,目前已經發布Beta版本。)
許多UNIX系統上也安裝了GNU軟件,因爲GNU軟件的質量比之前UNIX的軟件還要好。GNU工具還被廣泛地移植到Windows和Mac OS上。
GNU 包含3個協議條款,
GPL:GNU通用公共許可證(GNU General Public License)
LGPL:GNU較寬松公共許可證 (GNU Lesser General Public License), ) ,舊稱 GNU Library General Public License (GNU 庫通用公共許可證);
GFDL :GNU自由文檔許可證(GNU Free Documentation License )的縮寫形式。
這裏指的自由,並不是價格免費,這和價格無關而是使用軟件對所有的用戶來說是自由的。GPL 通過如下途徑實現這一目標:
1.它要求軟件以源代碼的形式發布,並規定任何用戶能夠以源代碼的形式將軟件複制或發布給別的用戶。
2.如果用戶的軟件使用了受 GPL 保護的任何軟件的一部分,那麽該軟件就繼承了 GPL 軟件,並因此而成爲 GPL 軟件,也就是說必須隨應用程序一起發布源代碼。
3.GPL 並不排斥對自由軟件進行商業性質的包裝和發行,也不限制在自由軟件的基礎上打包發行其他非自由軟件。
由于GPL很難被商業軟件所應用,它要求調用它的庫的代碼也得GPL,全部開放,並且一同發布,不能直接連接。所以後來GNU推出了LGPL許可證
在GPL與LGPL許可證保護下發布源代碼的結果很相似,對舊代碼所做的任何修改對于想知道這些代碼的人必須是公開的,唯一真正的不同之處在于私人版權代碼是否可以與開放源代碼相互連接,LGPL允許實體連接私人代碼到開放源代碼,並可以在任何形式下發布這些合成的二進制代碼。只有這些代碼是動態連接的就沒有限制。(使用動態鏈接時,即使是程序在運行中調用函數庫中的函數時,應用程序本身和函數庫也是不同的實體)
Solaris 和 FreeBSD
我們重點介紹一下 Solaris,它是 UNIX 系統的一個重要分支。Solaris 除可以運行在 SPARC CPU 平台上外,還可以運行在 x86 CPU 平台上。在服務器市場上,Sun 的硬件平台具有高可用性和高可靠性,是市場上處于支配地位的 UNIX 系統。
對于難以接觸到 Sun SPARC 架構計算機的用戶來說,可以通過使用 Solaris x86 來體驗世界知名大廠的商業 UNIX 風采。當然,Solaris x86 也可以用于實際生産應用的服務器,在遵守 Sun 的有關許可條款的情況下,Solaris x86 可以免費用于學習研究或商業應用。
FreeBSD 源于美國加利福尼亞大學伯克利分校開發的 UNIX 版本,它由來自世界各地的志願者開發和維護,爲不同架構的計算機系統提供了不同程度的支持。FreeBSD 在 BSD 許可協議下發布,允許任何人在保留版權和許可協議信息的前提下隨意使用和發行,並不限制將 FreeBSD 的代碼在另一協議下發行,因此商業公司可以自由地將 FreeBSD 代碼融入它們的産品中。蘋果公司的 OS X 就是基于 FreeBSD 的操作系統。
FreeBSD 與 Linux 的用戶群有相當一部分是重合的,二者支持的硬件環境也比較一致,所采用的軟件也比較類似。FreeBSD 的最大特點就是穩定和高效,是作爲服務器操作系統的不錯選擇;但其對硬件的支持沒有 Linux 完備,所以並不適合作爲桌面系統。
其他 UNIX 版本因應用範圍相對有限,在此不做過多介紹。
Linux 的那些往事
在Unix代碼不開源之後,有昂貴的授權費用,很多大學不得不停止對其研究,老師導致上課也不知道講什麽了。在1987年荷蘭有個大學教授安德魯寫了一個Minix,類似于Unix,專用于教學。當Minix流傳開來之後,世界各地的黑客們紛紛開始使用並改進,希望把改進的東西合並到Minix中,但是安德魯覺得他的系統是用于教學的,不能破壞純淨性,于是拒絕了。
1990年,Linus Torvalds 還是芬蘭赫爾辛基大學的一名學生,最初是用彙編語言寫了一個在80386保護模式下處理多任務切換的程序,後來從 Minix(Andy Tanenbaum教授所寫的很小的 Unix 操作系統,主要用于操作系統教學)得到靈感,進一步産生了自認爲狂妄的想法——寫一個比 Minix 更好的Minix,于是開始寫了一些硬件的設備驅動程序,一個小的文件系統。這樣0.0.1版本的 Linux 就出來了,但是它只具有操作系統內核的勉強的雛形,甚至不能運行,你必須在有Minix的機器上編譯以後才能玩。這時候Linus已經完全著迷而不想停止,決定踢開 Minix,于是在1991年10 月5號發布Linux 0.0.2版本,在這個版本中已經可以運行 bash 和 gcc。
從一開始,Linus就決定自由擴散Linux,包括原代碼,隨即Linux引起黑客們(hacker)的注意,通過計算機網絡加入了Linux的內核開發。Linux傾向于成爲一個黑客的系統——直到今天,在Linux社區裏內核的開發被認爲是真正的編程。由于一批高水平黑客的加入,使Linux 發展迅猛,幾乎一兩個禮拜就有新版或修正版的出現,到1993年底94年初,Linux 1.0 終于誕生了!Linux 1.0已經是一個功能完備的操作系統,而且內核寫得緊湊高效,可以充分發揮硬件的性能,在4M內存的80386機器上也表現得非常好,至今人們還在津津樂道。
關于 Linux Logo 的由來是一個很有意思的話題,它是一只企鵝。
爲什麽選擇企鵝,而不是選擇獅子、老虎或者小白兔?有人說因爲李納斯•托瓦茲是芬蘭人,所以選擇企鵝,有人說因爲其他動物圖案都被用光了,李納斯•托瓦茲只好選擇企鵝。還有一種說法是李納斯曾經被企鵝咬過手指。
我更願意相信以下說法,企鵝是南極洲的標志性動物,根據國際公約,南極洲爲全人類共同所有,不屬于世界上的任何國家,可國家都無權將南極洲納入其版圖。Linux 選擇企鵝圖案作爲 Logo,其含義是:開放源代碼的 Linux 爲全人類共同所有,可公司無權將其私有。
嚴格來講,Linux這個詞本身只表示Linux內核,但在實際上人們已經習慣了用Linux來形容整個基于Linux內核,並且使用GNU 工程各種工具和應用程序的操作系統(也被稱爲GNU/Linux)。基于這些組件的Linux軟件被稱爲Linux發行版。一般來講,一個Linux發行套件包含大量的軟件,比如軟件開發工具,數據庫,Web服務器(例如Apache),X Window,桌面環境(比如GNOME和KDE),辦公套件(比如OpenOffice.org),等等。
1991至1995年間,Linux從概念型的 0.1 版本內核原型,發展成爲能夠在性能和特性上均堪媲美專有Unix的操作系統,並且在連續正常工作時間等重要統計數據上打敗了這些Unix中的絕大部分。1995年,Linux找到了自己的殺手級應用——開源的web服務器Apache。就像Linux,Apache出衆地穩定和高效。很快,運行 Apache 的 Linux 機器成了全球ISP平台的首選。約60%的網站選用Apache,輕松擊敗了另兩個主要的專有型競爭對手。今天的LAMP(Linux , Apache, MySQL, PHP)已經成爲了架構 Web 服務器的主要首選。
李納斯•托瓦茲無疑是這個世界上最偉大的程序員之一,何況,他還搞出了全世界最大的程序員交友社區 GitHub (開源代碼庫及版本控制系統)。
現如今的Linux不但可以裝在幾乎所有的主流服務器上,當然也包括桌面的X86系統中。其還常常被用于嵌入式系統,機頂盒、手機、交換機、遊戲機、PDA、網絡交換機、路由器、等等,都是因爲 Linux 那精彩的內核。
Linux 的出現,不僅僅給世界帶來了一個免費的操作系統,也不僅僅是對 Unix 自由、共享的文化的延續,它的出現帶給了計算機世界自 Unix、GNU 以來更爲成熟的思想和文化。
UNIX與Linux的親密關系
二者的關系,不是大哥和小弟,”UNIX 是 Linux 的父親”這個說法更怡當。之所以要介紹它們的關系,是因爲要告訴讀者,在學習的時候,其實 Linux 與 UNIX 有很多的共通之處,簡單地說,如果你已經熟練掌握了 Linux,那麽再上手使用 UNIX 會非常容易。
二者也有兩個大的區別:
1、UNIX 系統大多是與硬件配套的,也就是說,大多數 UNIX 系統如 AIX、HP-UX 等是無法安裝在 x86 服務器和個人計算機上的,而 Linux 則可以運行在多種硬件平台上;2、UNIX 是商業軟件,而 Linux 是開源軟件,是免費、公開源代碼的。
Linux 受至曠大計算機愛好者的喜愛,主要原因也有兩個:它屬于開源軟件,用戶不用支付可費用就可以獲得它和它的源代碼,並且可以根據自己的需要對它進行必要的修改,無償使用,無約束地繼續傳播;它具有 UNIX 的全部功能,任何使用 UNIX 操作系統或想要學習 UNIX 操作系統的人都可以從 Linux 中獲益。
開源軟件是不同于商業軟件的一種模式,從字面上理解,就是開放源代碼,大家不用擔心裏面會搞什麽貓膩,這會帶來軟件的革新和安全。
另外,開源其實並不等同于免費,而是一種新的軟件盈利模式。目前很多軟件都是開源軟件,對計算機行業與互聯網影響深遠。
近年來,Linux 已經青出于藍而勝于藍,以超常的速度發展,從一個醜小鴨變成了一個擁有龐大用戶群的真正優秀的、值得信賴的操作系統。曆史的車輪讓 Linux 成爲 UNIX 最優秀的傳承者。
總結一下 Linux 和 UNIX 的關系/區別
Linux 是一個類似 Unix 的操作系統,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,並在功能和用戶體驗上進行優化,所以 Linux 模仿了 UNIX(但並沒有抄襲 UNIX 的源碼),使得 Linux 在外觀和交互上與 UNIX 非常類似。
說模仿可能會被人噴,你也可以說微創新或者改進。相比于 UNIX,Linux 最大的創新是開源免費,這是它能夠蓬勃發展的最重要原因;而目前的 UNIX 大部分都是收費的,小公司和個人都難以承受。
正是由于 Linux 和 UNIX 有著千絲萬縷的聯系,所以人們把 Linux 叫做“類UNIX系統”,下節我們將會著重講解。
圖 Gnome圖形界面
作爲服務器部署,絕大多數 Linux 並不安裝或並不啓用圖形環境.
Linux的發行版本
我們知道Linux或者Unix是一個操作系統,1991年的Linus Torvalds公布的是Linux的內核(kernel)。但是要注意的是,公布的是源碼,並不是編譯好的直接可安裝的操作系統,我們如何安裝一個操作系統呢?很簡單啊,就是先下載一份源碼,然後進行編譯安裝,但是編譯的時候程序需要運行在操作系統上啊,操作系統呢?還沒有編譯呢。于是就陷入了一個死循環中,就是我們要安裝操作系統,就需要編譯,編譯的時候需要操作系統,這樣就是雞生蛋,蛋生雞。
這裏就需要引入交叉編譯了,具體做法是假設我們要在電腦上安裝Linux,我們把A的硬盤拆下來,放到已經安裝了操作系統的電腦B上,然後編譯,將編譯好的操作系統放到硬盤上,再把硬盤裝回去,開機啓動,這就是交叉編譯安裝系統。
這得有多難啊,入門難度實在太高了,所以我們迫切需要一種簡單的方式來安裝。于是就出現了這麽一種公司,他們將已經公開好的Kernel(內核)再加上一些開源的周邊軟件收集起來編譯成二級制文件放到網上供別人使用,其中Red Hat(紅帽)就是其中著名的一家。我們知道Linux是遵循GPL協議的,也就是公開免費的,那麽他們怎麽盈利呢?既然不能賣軟件,那麽就賣服務呗,比如說,發現了Linux漏洞,然後Red Hat修複,如果你買了我們的服務,我們就將補丁程序給你,並指導你安裝,所有問題都幫你解決。
世界上總是不缺好事者,RedHat既然可以這麽做,爲什麽就不能有好心人免費做呢?是的,有這樣一個社區,他們把RedHat的源碼拿過來,然後編譯成操作系統放出去,這就是CentOS,就是社區版的RedHat,所以基本RedHat的補丁包出來一個月之後,CentOS就出現對應的補丁包了。這對于Red Hat是好事還是壞事呢?這恐怕只有當事人知道了,不過在2014年年初傳來消息,RedHat收編了CentOS的團隊。就像MSDN I TELL YOU 上面都是微軟的正版軟件,可以隨便下載,但是這不也是爲微軟做了免費宣傳嗎。
當別人說Linux的版本時,一般來說有兩個版本,一個是內核的版本,一個是發行的版本。例如登錄到我的ubuntu終端執行命令uname -a:
root@AI-Machine:~# uname -a Linux AI-Machine 4.13.0-36-generic #40~16.04.1-Ubuntu SMP Fri Feb 16 23:26:51 UTC 2018 i686 i686 i686 GNU/Linux root@AI-Machine:~#
4.13.0是內核版本,16.04是指ubunut發行版本。
現在常見的linux操作系統有:ubuntu、紅帽、深度、Centos。