


Linux編譯內(nèi)核詳解
內(nèi)核,是一個操作系統(tǒng)的核心。它負責(zé)管理系統(tǒng)的進程、內(nèi)存、設(shè)備驅(qū)動程序、文件和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性。
Linux的一個重要的特點就是其源代碼的公開性,所有的內(nèi)核源程序都可以在/usr/src/linux下找到,大部分應(yīng)用軟件也都是遵循GPL而設(shè)計的,你都可以獲取相應(yīng)的源程序代碼。全世界任何一個軟件工程師都可以將自己認為優(yōu)秀的代碼加入到其中,由此引發(fā)的一個明顯的好處就是Linux修補漏洞的快速以及對最新軟件技術(shù)的利用。而Linux的內(nèi)核則是這些特點的最直接的代表。
想象一下,擁有了內(nèi)核的源程序?qū)δ銇碚f意味著什么?首先,我們可以了解系統(tǒng)是如何工作的。通過通讀源代碼,我們就可以了解系統(tǒng)的工作原理,這在Windows下簡直是天方夜譚。其次,我們可以針對自己的情況,量體裁衣,定制適合自己的系統(tǒng),這樣就需要重新編譯內(nèi)核。在Windows下是什么情況呢?相信很多人都被越來越龐大的Windows整得莫名其妙過。再次,我們可以對內(nèi)核進行修改,以符合自己的需要。這意味著什么?沒錯,相當(dāng)于自己開發(fā)了一個操作系統(tǒng),但是大部分的工作已經(jīng)做好了,你所要做的就是要增加并實現(xiàn)自己需要的功能。在Windows下,除非你是微軟的核心技術(shù)人員,否則就不用癡心妄想了。
內(nèi)核版本號
由于Linux的源程序是完全公開的,任何人只要遵循GPL,就可以對內(nèi)核加以修改并發(fā)布給他人使用。Linux的開發(fā)采用的是集市模型(bazaar,與cathedral--教堂模型--對應(yīng)),為了確保這些無序的開發(fā)過程能夠有序地進行,Linux采用了雙樹系統(tǒng)。一個樹是穩(wěn)定樹(stable tree),另一個樹是非穩(wěn)定樹(unstable tree)或者開發(fā)樹(development tree)。一些新特性、實驗性改進等都將首先在開發(fā)樹中進行。如果在開發(fā)樹中所做的改進也可以應(yīng)用于穩(wěn)定樹,那么在開發(fā)樹中經(jīng)過測試以后,在穩(wěn)定樹中將進行相同的改進。一旦開發(fā)樹經(jīng)過了足夠的發(fā)展,開發(fā)樹就會成為新的穩(wěn)定樹。開發(fā)數(shù)就體現(xiàn)在源程序的版本號中;源程序版本號的形式為x.y.z:對于穩(wěn)定樹來說,y是偶數(shù);對于開發(fā)樹來說,y比相應(yīng)的穩(wěn)定樹大一(因此,是奇數(shù))。到目前為止,穩(wěn)定樹的最高版本是2.2.16,最新發(fā)布的Redhat7.0所采用的就是2.2.16的內(nèi)核;開發(fā)樹的最新版本是2.3.99。也許你已經(jīng)發(fā)現(xiàn)和多網(wǎng)站上都有2.4.0-test9-pre7之類的內(nèi)核,但是這并不是正式版本。內(nèi)核版本的更新可以訪問http://www.kernel.org。
為什么重新編譯內(nèi)核
Linux作為一個自由軟件,在廣大愛好者的支持下,內(nèi)核版本不斷更新。新的內(nèi)核修訂了舊內(nèi)核的bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據(jù)自己的系統(tǒng)度身定制一個更高效,更穩(wěn)定的內(nèi)核,就需要重新編譯內(nèi)核。
通常,更新的內(nèi)核會支持更多的硬件,具備更好的進程管理能力,運行速度更快、 更穩(wěn)定,并且一般會修復(fù)老版本中發(fā)現(xiàn)的許多漏洞等,經(jīng)常性地選擇升級更新的系統(tǒng)內(nèi)核是Linux使用者的必要操作內(nèi)容。
為了正確的合理地設(shè)置內(nèi)核編譯配置選項,從而只編譯系統(tǒng)需要的功能的代碼,一般主要有下面四個考慮:
l 自己定制編譯的內(nèi)核運行更快(具有更少的代碼)
l 系統(tǒng)將擁有更多的內(nèi)存(內(nèi)核部分將不會被交換到虛擬內(nèi)存中)
l 不需要的功能編譯進入內(nèi)核可能會增加被系統(tǒng)攻擊者利用的漏洞
l 將某種功能編譯為模塊方式會比編譯到內(nèi)核內(nèi)的方式速度要慢一些
內(nèi)核編譯模式
要增加對某部分功能的支持,比如網(wǎng)絡(luò)之類,可以把相應(yīng)部分編譯到內(nèi)核中(build-in),也可以把該部分編譯成模塊(module),動態(tài)調(diào)用。如果編譯到內(nèi)核中,在內(nèi)核啟動時就可以自動支持相應(yīng)部分的功能,這樣的優(yōu)點是方便、速度快,機器一啟動,你就可以使用這部分功能了;缺點是會使內(nèi)核變得龐大起來,不管你是否需要這部分功能,它都會存在,這就是Windows慣用的招數(shù),建議經(jīng)常使用的部分直接編譯到內(nèi)核中,比如網(wǎng)卡。如果編譯成模塊,就會生成對應(yīng)的.o文件,在使用的時候可以動態(tài)加載,優(yōu)點是不會使內(nèi)核過分龐大,缺點是你得自己來調(diào)用這些模塊。
內(nèi)核編譯詳解
新版本內(nèi)核的獲取和更新
Linux內(nèi)核版本發(fā)布的官方網(wǎng)站是http://www.kernel.org,國內(nèi)各大ftp上一般都可以找到某些版本的內(nèi)核。新版本的內(nèi)核的發(fā)布有兩種形式,一種是完整的內(nèi)核版本,另外一種是patch文件,即補丁。完整的內(nèi)核版本比較大,比如linux-2.4.0-test8.tar.bz2就有18M之多,網(wǎng)速快的用戶可以下載使用。完整內(nèi)核版本一般是.tar.gz(.tgz)文件或者是.bz2文件,二者分別是使用gzip或者bzip2進行壓縮的文件,使用時需要解壓縮。patch文件則比較小,一般只有幾十K到幾百K,極少的會超過1M,網(wǎng)速慢的用戶可以使用patch文件來升級內(nèi)核。但是patch文件是針對于特定的版本的,你需要找到自己對應(yīng)的版本才能使用。
編譯內(nèi)核需要root權(quán)限,以下操作都假定你是root用戶。請把你需要升級的內(nèi)核拷貝到/usr/src/下(
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解