詳解Linux內(nèi)核與GNU計(jì)劃
Linux發(fā)展已經(jīng)有十年了,發(fā)展的十分迅速,你了解Linux內(nèi)核么?Linux內(nèi)核的名字也是“Linux”。Linux操作系統(tǒng)也是自由軟件和開(kāi)放源代碼發(fā)展中最著名的例子。我們主要講講Linux內(nèi)核版本。
Linux從1.0版本后就具有兩種 不同的版本號(hào),叫做版本樹(shù)。 一個(gè)版本樹(shù)是由一個(gè)是實(shí)驗(yàn)版本,一個(gè)是產(chǎn)品版本。 每一個(gè)版本是由三位數(shù)字組成的,第二位數(shù)字說(shuō)明版本類型。如果第二位是偶數(shù),則說(shuō)明這種版本是產(chǎn)品化版本,如果是奇數(shù),則是實(shí)驗(yàn)版本,比如說(shuō)版本 1.2.0是產(chǎn)品化的版本,而1.3.0則是實(shí)驗(yàn)版本。這兩種版本是有關(guān)聯(lián)的,是一前一后完成的。每一個(gè)版本樹(shù)開(kāi)始時(shí)間都是相同的,然后呢,這兩個(gè)版本不 斷的擴(kuò)充增長(zhǎng),穩(wěn)定代碼會(huì)添加到產(chǎn)品化版本中,而測(cè)試階段的代碼則添加到實(shí)驗(yàn)版本中。當(dāng)linus確定實(shí)驗(yàn)版本具有足夠的新功能并且性能穩(wěn)定的時(shí)候,他就 稱為代碼凍結(jié)(code freeze)。這時(shí)候穩(wěn)定的實(shí)驗(yàn)版本成為新的x.y.0,開(kāi)發(fā)又按新的版本進(jìn)行。
比如說(shuō):1.0.0和 1.1.0是相同的,1.0.1是對(duì)1.0版代碼的第一次錯(cuò)誤修復(fù),而1.1.1是往1.1版中第一次添加新功能。最后到1.0.9中的錯(cuò)誤在1.0中得 到修復(fù),1.1.9最終為1.1。最后隨著新功能的不斷增加到達(dá)足夠有足夠的新功能時(shí),代碼凍結(jié),版本一同升級(jí)為 1.2.0和1.3.0,然后繼續(xù)1.2.0修復(fù)錯(cuò)誤,1.3.0添加功能。
我們可以看到Linux的發(fā)展歷程要比其他的操作系統(tǒng)短暫的多, 它的原因是多方面的,但談到Linux的發(fā)展歷程我們不得不先來(lái)談一下自由軟件基金會(huì)和它的GNU計(jì)劃。 我們知道當(dāng)前流行的軟件按其提供方式可以大致劃分為三種模式:商業(yè)軟件、共享軟件、自由軟件。 商業(yè)軟件是由開(kāi)發(fā)者出售拷貝并提供技術(shù)服務(wù),用戶只有使用權(quán),但不能進(jìn)行非授權(quán)的拷貝、擴(kuò)散、修改或添加新功能; 共享軟件則是開(kāi)發(fā)者提供軟件試用程序拷貝,用戶在使用一段時(shí)間后,必須向開(kāi)發(fā)者交納使用費(fèi)用,開(kāi)發(fā)者則提供相應(yīng)的升級(jí)和技術(shù)服務(wù);自由軟件則是由開(kāi)發(fā)者提供軟件全部的源代碼,任何用戶都有權(quán)使用、拷貝、擴(kuò)散、修改該軟件。同時(shí)用戶也有義務(wù)將自己修改過(guò)的程序源代碼公開(kāi)。
其實(shí)在計(jì)算機(jī)工業(yè)發(fā)展的初期,是沒(méi)有這三種模式的,當(dāng)時(shí)軟件只是硬件的附屬品。公司只賣硬件,隨系統(tǒng)贈(zèng)送軟件。在這一時(shí)期,軟件的設(shè)計(jì)思想,新的算法和 軟件的源代碼在專家和公司技術(shù)人員之間自由交流,促進(jìn)了軟件的迅速發(fā)展。但是,公司很快認(rèn)識(shí)到軟件的價(jià)值,對(duì)軟件實(shí)施了版權(quán)控制,并限制源代碼的發(fā)布。許 多原本屬于公眾創(chuàng)造的知識(shí)財(cái)富現(xiàn)在成為公司的私有財(cái)產(chǎn)。軟件的開(kāi)發(fā)方式也發(fā)生了變化,變成以公司為主體的封閉的開(kāi)發(fā)模式。Unix就是這樣的例子。 雖然AT&T開(kāi)創(chuàng)了Unix的歷史,但是Unix的發(fā)展與完善卻與許多大學(xué)的專家、技術(shù)人員的努力分不開(kāi)。事實(shí)上,Unix是在協(xié)作基礎(chǔ)上開(kāi)發(fā)的。當(dāng) AT&T在70年代末期對(duì)Unix的使用和發(fā)布強(qiáng)制實(shí)施版權(quán)控制后,使早期對(duì)Unix發(fā)展做出貢獻(xiàn)的人們感到失望。
Richard Stallman,與BillGates曾經(jīng)同是哈佛大學(xué)的學(xué)生,他就這個(gè)時(shí)候就在軟件開(kāi)發(fā)團(tuán)體中發(fā)起支持開(kāi)發(fā)自由軟件的運(yùn)動(dòng)。自1984年起,麻省理工 學(xué)院(MIT)開(kāi)始支持他,這就導(dǎo)致了自由軟件基金會(huì)(Free Software Foundation,F(xiàn)SF)的建立。
在同年 Richard Stallman組織開(kāi)發(fā)了一個(gè)完全基于自由軟件的軟件體系計(jì)劃——GNU(GNU's Not Unix)計(jì)劃,這個(gè)計(jì)劃的目的就是要開(kāi)發(fā)一個(gè)完全自由的,與Unix類似的但功能更強(qiáng)大的操作系統(tǒng),以便為所有的計(jì)算機(jī)使用者提供一個(gè)功能齊全性能良好 的基本系統(tǒng)。GNU的名稱很有意思,它采用了一個(gè)無(wú)限遞歸的法則來(lái)命名的,它的全稱是“GNU's Not Unix”,意思是說(shuō)GNU不是Unix。取它的每個(gè)單詞的首寫(xiě)字母就組成了“GNU”。 當(dāng)開(kāi)始實(shí)施GNU項(xiàng)目時(shí),當(dāng)時(shí)沒(méi)有多少高質(zhì)量的自由軟件可供項(xiàng)目使用。所以,為GNU項(xiàng)目做出貢獻(xiàn)的人們(Member of FSF)先從系統(tǒng)的應(yīng)用軟件和工具入手,開(kāi)發(fā)了大量的自由軟件。但是對(duì)核心GNU HURD的開(kāi)發(fā)速度卻很遲緩,直到現(xiàn)在還沒(méi)有正式發(fā)布,仍處于測(cè)試階段。
Richard Stallman針對(duì)這個(gè)GNU計(jì)劃還組織擬訂了一份通用公共許可證書(shū)GPL(General Public License),用它來(lái)規(guī)范這些“自由軟件”的發(fā)行、復(fù)制和修改等一系列行為。GPL許可證可能大家也聽(tīng)說(shuō)過(guò),但是也有不少人對(duì)他還不是很清楚或者還有 誤解。很多人認(rèn)為GPL許可證下的軟件是公共領(lǐng)域的軟件,沒(méi)有任何的版權(quán),屬于公眾的。其實(shí)GPL是有版權(quán)的,它的版權(quán)屬于開(kāi)發(fā)者,并且受到標(biāo)準(zhǔn)國(guó)際版權(quán) 法的保護(hù)。GPL條款的目的是保證軟件自由地發(fā)行和修改。禁止在發(fā)行和使用上進(jìn)行交易獲利,并且不允許任何人限制其他人在發(fā)布和修改方面的權(quán)利。但是 GPL條款讓許多人迷惑的地方是它允許團(tuán)體或個(gè)人從買(mǎi)賣GPL版權(quán)的軟件中獲利,換句話說(shuō),就是允許他們?cè)诎l(fā)行時(shí)收取一定的費(fèi)用,甚至贏利。
這乍起來(lái)一看好象自相矛盾,為什么允許賣軟件贏利而另一方面允許任何人自由免費(fèi)的獲取呢?其實(shí)這不難理解。免費(fèi)并不意味著它不花錢(qián)。盡管通常情況下是這 樣的。代碼的獲得是免費(fèi)的,我們可以想一下,如果某個(gè)公司準(zhǔn)備把大量的免費(fèi)軟件裝到CD-Rom上發(fā)行,那這個(gè)公司肯定要收取一定的費(fèi)用來(lái)支付生產(chǎn)和發(fā)行 CD-Rom的成本。如果這個(gè)公司從中獲利,這也是GPL條款所允許的。允許公司發(fā)行和銷售免費(fèi)軟件是一件相當(dāng)好的事情,我們可以想一下,并非所有的人都 能夠有機(jī)會(huì)通過(guò)Internet來(lái)免費(fèi)獲取GPL軟件,GPL條款允許公司或團(tuán)體銷售GPL軟件從而擴(kuò)大了這些軟件的發(fā)行范圍,極大的拓展了這些軟件的全 球用戶基礎(chǔ)。自由軟件基金會(huì)的GNU計(jì)劃為后來(lái)的Linux操作系統(tǒng)迅速發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
在1994年,Linus發(fā)布 Linux的第一個(gè)“產(chǎn)品”版Linux1.0的時(shí)候,它是按照完全自由發(fā)布的版權(quán)進(jìn)行發(fā)布的。這種版權(quán)它要求所有的源代碼都必須公開(kāi),而且任何人均不得 從Linux交易中獲利。這種純粹的自由軟件的方式對(duì)于Linux的發(fā)布和發(fā)展實(shí)際上是一種阻礙,因?yàn)樗拗屏薒inux以磁盤(pán)或CD-Rom等媒體的形 式進(jìn)行發(fā)布的可能,同時(shí)也限制了一些商業(yè)公司參與Linux的進(jìn)一步開(kāi)發(fā)并提供技術(shù)支持的良好愿望。于是半年以后,Linus決定把Linux轉(zhuǎn)向GPL 版權(quán)。這一步對(duì)Linux發(fā)展十分重要。它贏得了許多專業(yè)人員的支持,這些人將GNU項(xiàng)目的許多成果移植到Linux系統(tǒng)上來(lái)。包括很多系統(tǒng)工具包,程序 開(kāi)發(fā)環(huán)境,應(yīng)用程序等等,甚至標(biāo)準(zhǔn)文件工具(如ls,mv,cp和rm等)都是GNU實(shí)用工具包的一部分。所以我們一開(kāi)始說(shuō)什么是Linux的時(shí)候有一種 比較科學(xué)的說(shuō)法是Linux只是一個(gè)操作系統(tǒng)的內(nèi)核,其實(shí)也是這樣的,Linux本身只有一些磁盤(pán)訪問(wèn)代碼和很少的幾個(gè)軟件。它從GNU中得到了許多的益 處。
以上就是Linux內(nèi)核版本以及GNU計(jì)劃。
【編輯推薦】