歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux內核 >> 在Linux系統中對linux內核的編譯詳解

在Linux系統中對linux內核的編譯詳解

日期:2017/2/27 11:56:43   编辑:Linux內核

一、內核簡介

內核,是一個操作系統的核心。它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定著系統的性能和穩定性。

Linux的一個重要的特點就是其源代碼的公開性,所有的內核源程序都可以在/usr/src/linux下找到,大部分應用軟件也都是遵循GPL而設計的,你都可以獲取相應的源程序代碼。全世界任何一個軟件工程師都可以將自己認為優秀的代碼加入到其中,由此引發的一個明顯的好處就是Linux修補漏洞的快速以及對最新軟件技術的利用。而Linux的內核則是這些特點的最直接的代表。

想象一下,擁有了內核的源程序對你來說意味著什麼?首先,我們可以了解系統是如何工作的。通過通讀源代碼,我們就可以了解系統的工作原理,這在 Windows下簡直是天方夜譚。其次,我們可以針對自己的情況,量體裁衣,定制適合自己的系統,這樣就需要重新編譯內核。在Windows下是什麼情況呢?相信很多人都被越來越龐大的Windows整得莫名其妙過。再次,我們可以對內核進行修改,以符合自己的需要。這意味著什麼?沒錯,相當於自己開發了一個操作系統,但是大部分的工作已經做好了,你所要做的就是要增加並實現自己需要的功能。在Windows下,除非你是微軟的核心技術人員,否則就不用癡心妄想了。

二、內核版本號

由於Linux的源程序是完全公開的,任何人只要遵循GPL,就可以對內核加以修改並發布給他人使用。Linux的開發采用的是集市模型(bazaar,與cathedral--教堂模型--對應),為了確保這些無序的開發過程能夠有序地進行,Linux采用了雙樹系統。一個樹是穩定樹(stable tree),另一個樹是非穩定樹(unstable tree)或者開發樹(development tree)。一些新特性、實驗性改進等都將首先在開發樹中進行。如果在開發樹中所做的改進也可以應用於穩定樹,那麼在開發樹中經過測試以後,在穩定樹中將進行相同的改進。一旦開發樹經過了足夠的發展,開發樹就會成為新的穩定樹。開發數就體現在源程序的版本號中;源程序版本號的形式為x.y.z:對於穩定樹來說,y是偶數;對於開發樹來說,y比相應的穩定樹大一(因此,是奇數)。到目前為止,穩定樹的最高版本是2.4.18;開發樹的最新版本是 2.5.10。

三、為什麼重新編譯內核

Linux作為一個自由軟件,在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了舊內核的bug,並增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的系統度身定制一個更高效,更穩定的內核,就需要重新編譯內核。

通常,更新的內核會支持更多的硬件,具備更好的進程管理能力,運行速度更快、 更穩定,並且一般會修復老版本中發現的許多漏洞等,經常性地選擇升級更新的系統內核是Linux使用者的必要操作內容。

為了正確的合理地設置內核編譯配置選項,從而只編譯系統需要的功能的代碼,一般主要有下面四個考慮:

1 自己定制編譯的內核運行更快(具有更少的代碼)

2 系統將擁有更多的內存(內核部分將不會被交換到虛擬內存中)

3 不需要的功能編譯進入內核可能會增加被系統攻擊者利用的漏洞

4 將某種功能編譯為模塊方式會比編譯到內核內的方式速度要慢一些

四、內核編譯模式

要增加對某部分功能的支持,比如網絡之類,可以把相應部分編譯到內核中(build-in),也可以把該部分編譯成模塊(module),動態調用。如果編譯到內核中,在內核啟動時就可以自動支持相應部分的功能,這樣的優點是方便、速度快,機器一啟動,你就可以使用這部分功能了;缺點是會使內核變得龐大起來,不管你是否需要這部分功能,它都會存在,這就是Windows慣用的招數,建議經常使用的部分直接編譯到內核中,比如網卡。如果編譯成模塊,就會生成對應的.o文件,在使用的時候可以動態加載,優點是不會使內核過分龐大,缺點是你得自己來調用這些模塊。

五、新版本內核的獲取和更新

Linux內核版本發布的官方網站是http://www.kernel.org。

Copyright © Linux教程網 All Rights Reserved