天天看點

Linux介紹,Linux不同發行版本,以及這些發行版本之間的差別

1.Linux的由來

Linux是GNU-Linux的簡稱。GNU是理查德-史托曼(Richard Stallman)創立的一個開源組織。當年由于Unix收費和比爾蓋茨,造成了很多程式員認為軟體應當是商品,應該收費賣錢。而且蓋茨認為源代碼是機密,應當保密,收了買家的錢還不提供源代碼。于是,理查德-史托曼(Richard Stallman)很憤怒,他認為這樣搞會阻礙IT的發展。于是他創立了GNU,他想另起爐竈搞一個開源(免費提供源代碼)的作業系統。但是他苦于核心一直寫不好。後來林納斯·托瓦茲(Linus Benedict Torvalds)按照Unix的機制,新寫了一個核心,讓Richard Stallman老爺子很興奮,他找到了林納斯·托瓦茲(Linus Benedict Torvalds),說出了他的自由軟體思想。于是他兩一拍即合。因為GNU開發了GCC編譯器和EMACS編輯器。可以用EMACS寫C,再用GCC編譯成各種工具或者APP。是以很快GNU工具包+Linux核心的生态圈就建立了起來。你可以把GNU了解成作業系統的一系列工具集。用GCC和EMACS編寫出來的軟體和程式都必須遵守GNU的GPL協定。是以GNU-Linux就橫空出世了。

2.林納斯·托瓦茲(Linus Benedict Torvalds)寫的是核心,不是 Linux

Linus開發的最早的核心隻具有基本的功能(代碼不到1萬行),簡單的說其實是個玩具。經過這麼多年的發展,核心代碼已經達到近千萬行。是以,可以這麼了解,核心中最核心的代碼是Linus開發,但後續很多功能是社群的開發人員一起完成的。現在 Linus 基本上是做最終稽核人。大部分開發工作都是各個貢獻人送出上去的。Linus在1991年建立了開源的Linux,之後,Linux系統不斷發展,已經成為最大的伺服器系統軟體了。

3.git的由來

Linus雖然建立了Linux,但Linux的壯大是靠全世界熱心的志願者參與的,這麼多人在世界各地為Linux編寫代碼,那Linux的代碼是如何管理的呢?

事實是,在2002年以前,世界各地的志願者把源代碼檔案通過diff的方式發給Linus,然後由Linus本人通過手工方式合并代碼!

為什麼Linus不把Linux代碼放到版本控制系統裡呢?不是有CVS、SVN這些免費的版本控制系統嗎?因為Linus堅定地反對CVS和SVN,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用。有一些商用的版本控制系統,雖然比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。

不過,到了2002年,Linux系統已經發展了十年了,代碼庫之大讓Linus很難繼續通過手工方式管理了,社群的弟兄們也對這種方式表達了強烈不滿,于是Linus選擇了一個商業的版本控制系統BitKeeper,BitKeeper的東家BitMover公司出于人道主義精神,授權Linux社群免費使用這個版本控制系統。

安定團結的大好局面在2005年就被打破了,原因是Linux社群牛人聚集,不免沾染了一些梁山好漢的江湖習氣。開發Samba的Andrew試圖破解BitKeeper的協定(這麼幹的其實也不隻他一個),被BitMover公司發現了(監控工作做得不錯!),于是BitMover公司怒了,要收回Linux社群的免費使用權。

Linus可以向BitMover公司道個歉,保證以後嚴格管教弟兄們。嗯,這是不可能的。

實際情況是這樣的:

Linus花了兩周時間自己用C寫了一個分布式版本控制系統,這就是Git!一個月之内,Linux系統的源碼已經由Git管理了!牛是怎麼定義的呢?大家可以體會一下。

Git迅速成為最流行的分布式版本控制系統,尤其是2008年,GitHub網站上線了,它為開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。

曆史就是這麼偶然,如果不是當年BitMover公司威脅Linux社群,可能現在我們就沒有免費而超級好用的Git了。

4.核心是什麼

Linux核心本身是有非常多的子產品組成的,其核心功能是實作對計算機硬體資源的管理。并且為上層應用程式提供通路的接口。這些硬體資源包括CPU、記憶體、磁盤和網卡等等。

可以看到,kernel在系統最核心的位置,直接與硬體打交道,是上層應用和硬體之間的中間層。

Linux介紹,Linux不同發行版本,以及這些發行版本之間的差別

Linux核心中包含的子產品(忒複雜了)

Linux介紹,Linux不同發行版本,以及這些發行版本之間的差別

5.Linux指令是什麼

Linux的各大版本的shell操作指令,比如cd、cp、mv、ls等等,都是C語言寫的程式,隻不過這些程式的名字叫cd、cp、mv、ls等等等等而已,它們靠shell解釋成核心能懂的機器碼。

是以,你操作的Linux指令是C的程式名字,這些程式可以加各種參數,實作不同的效果。

6.Linux不同的發行版本

6.1 Red Hat Linux

Red Hat 公司的産品主要包括 RHEL(Red Hat Enterprise Linux,收費版本)和 CentOS(RHEL 的社群克隆版本,免費版本)、Fedora Core(由 Red Hat 桌面版發展而來,免費版本)。

其中以CentOS在國内用的最為普遍,它是基于 Red Hat Enterprise Linux 源代碼重新編譯、去除 Red Hat 商标的産物,各種操作使用和付費版本沒有差別,且完全免費。缺點是不向使用者提供技術支援,也不負任何商業責任。

紅帽版本的優點是穩定,缺點是軟體包組更新比較慢,核心版本,還有上層應用的軟體一般都比最新版本低很多。

  • 安裝工具:yum
  • 包名稱:rpm

6.2 Debain,Ubuntu

Debian,或者稱Debian系列,包括Debian和Ubuntu等

Ubuntu 基于知名的 Debian Linux 發展而來,界面友好,容易上手,對硬體的支援非常全面,是目前最适合做桌面系統的 Linux 發行版本,而且 Ubuntu 的所有發行版本都免費提供 。

Ubuntu就是 一個擁有Debian所有的優點,以及自己所加強的優點的近乎完美的 Linux桌面系統。

這兩個發行版,研發人員用的多。因為各種軟體包組經常能更新,缺點是沒有Centos穩定。

  • 安裝工具:apt-get
  • 包名稱:dpkg
  • debain下的包組管理神器:aptitude(能自動處理依賴關系,還能進行更新降級操作。)

6.3 SUSE

跟IBM關系深厚。隻做企業用的Server的Linux。最早是用在IBM大型機的作業系統,直到x86伺服器出來了,才有了x86版本。後來才有了opensuse的PC版本。

6.4 Fedora

從屬于紅帽公司,是RedHat的試驗田,一有啥新功能馬上會在Fedora版本中釋出。追求時尚的桌面使用者首選。

7.發行版本關系圖

Linux介紹,Linux不同發行版本,以及這些發行版本之間的差別