LINUX作業系統的核心編譯內幕詳解一

2022-04-01 16:17:58 字數 2530 閱讀 7042

核心簡介

核心,是乙個作業系統的核心。它負責管理系統的程序、記憶體、裝置驅動程式、檔案和網路系統,決定著系統的效能和穩定性。

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.2.16,最新發布的redhat7.0所採用的就是2.2.16的核心;開發樹的最新版本是2.3.99。也許你已經發現和多**上都有2.4.0-test9-pre7之類的核心,但是這並不是正式版本。核心版本的更新可以訪問

為什麼重新編譯核心

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

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

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

自己定製編譯的核心執行更快(具有更少的**)

系統將擁有更多的記憶體(核心部分將不會被交換到虛擬記憶體中)

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

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

核心編譯模式

要增加對某部分功能的支援,比如網路之類,可以把相應部分編譯到核心中(build-in),也可以把該部分編譯成模組(module),動態呼叫。

如果編譯到核心中,在核心啟動時就可以自動支援相應部分的功能,這樣的優點是方便、速度快,機器一啟動,你就可以使用這部分功能了;缺點是會使核心變得龐大起來,不管你是否需要這部分功能,它都會存在,這就是windows慣用的招數,建議經常使用的部分直接編譯到核心中,比如網絡卡。

如果編譯成模組,就會生成對應的.o檔案,在使用的時候可以動態載入,優點是不會使核心過分龐大,缺點是你得自己來呼叫這些模組。

核心編譯詳解

新版本核心的獲取和更新

接下來的核心配置過程比較煩瑣,但是配置的適當與否與日後linux的執行直接相關,有必要了解一下一些主要的且經常用到的選項的設定。

配置核心可以根據需要與愛好使用下面命令中的乙個:

#make config(基於文字的最為傳統的配置介面,不推薦使用)

#make menuconfig(基於文字選單的配置介面,字元終端下推薦使用)

#make xconfig(基於圖形視窗模式的配置介面,xwindow下推薦使用)

#make oldconfig(如果只想在原來核心配置的基礎上修改一些小地方,會省去不少麻煩)

這三個命令中,make xconfig的介面最為友好,如果你可以使用xwindow,那麼就推薦你使用這個命令。

如果你不能使用xwindow,那麼就使用make menuconfig好了。介面雖然比上面乙個差點,總比make config的要好多了。

選擇相應的配置時,有三種選擇,它們分別代表的含義如下:

y--將該功能編譯進核心

n--不將該功能編譯進核心

m--將該功能編譯成可以在需要時動態插入到核心中的模組

如果使用的是make xconfig,使用滑鼠就可以選擇對應的選項。如果使用的是make menuconfig

作業系統核心編譯

sudo apt get install libncurses5 dev libssl dev sudo apt get install build essential openssl sudo apt get install zlibc minizip sudo apt get install l...

Linux作業系統的核心編譯內幕詳解

linux作業系統的核心編譯內幕詳解 diandian 核心,是乙個作業系統的核心。它負責管理系統的程序 記憶體 裝置驅動程式 檔案和網路系統,決定著系統的效能和穩定性。linux的乙個重要的特點就是其源 的公開性,所有的核心源程式都可以在 usr src linux下找到,大部分應用軟體也都是遵循...

作業系統的核心

核心就是 kernel 它是作業系統最底層的東西,每個作業系統都有自己的核心,由它來掌管整個硬體資源的工作狀態。所以,當有新的硬體加入到作業系統中時,若核心並沒有支援它,這個新硬體就無法工作,因為控制它的核心並不認識它。一般來說,核心為了實現使用者所需要的正確運算結果,必須要管理的事項有以下幾項。1...