內(nèi)核編譯
大家都知道一個完整的計算機系統(tǒng)不僅需要硬件系統(tǒng)還需要軟件系統(tǒng)才能運行逸贾。而在軟件系統(tǒng)里,操作系統(tǒng)是最最重要的系統(tǒng)軟件津滞。簡單來說耕陷,操作系統(tǒng)(Operating System,簡稱OS)是管理和控制計算機硬件與軟件資源的計算機程序据沈,是直接運行在“裸機”上的最基本的系統(tǒng)軟件哟沫,任何其他軟件都必須在操作系統(tǒng)的支持下才能運行。而內(nèi)核锌介,是一個操作系統(tǒng)的核心嗜诀,是操作系統(tǒng)最基本的部分。它是為眾多應(yīng)用程序提供對計算機硬件的安全訪問的一部分軟件孔祸,這種訪問是有限的隆敢,并且內(nèi)核決定一個程序在什么時候?qū)δ巢糠钟布僮鞫嚅L時間。
內(nèi)核是基于硬件的第一層軟件擴充崔慧,提供操作系統(tǒng)的最基本的功能拂蝎,是操作系統(tǒng)工作的基礎(chǔ),它負(fù)責(zé)管理系統(tǒng)的進程惶室、內(nèi)存温自、設(shè)備驅(qū)動程序、文件和網(wǎng)絡(luò)系統(tǒng)皇钞,決定著系統(tǒng)的性能和穩(wěn)定性〉棵冢現(xiàn)代操作系統(tǒng)設(shè)計中,為減少系統(tǒng)本身的開銷夹界,往往將一些與硬件緊密相關(guān)的(如中斷處理程序馆里、設(shè)備驅(qū)動程序等)、基本的可柿、公共的鸠踪、運行頻率較高的模塊(如時鐘管理坛善、進程調(diào)度等)以及關(guān)鍵性數(shù)據(jù)結(jié)構(gòu)獨立開來天梧,使之常駐內(nèi)存,并對他們進行保護观游。通常把這一部分稱之為操作系統(tǒng)的內(nèi)核永票。
類UNIX系統(tǒng)上的內(nèi)核是LINUX卵贱,嚴(yán)格來講滥沫,Linux這個詞本身只表示Linux內(nèi)核侣集,但實際上人們已經(jīng)習(xí)慣了用Linux來形容整個基于Linux內(nèi)核键俱,并且使用GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。
一些組織基于內(nèi)核,自定義各種工具并打包發(fā)布,這種叫做LINUX發(fā)行版世分,通常我們使用的也都是LINUX發(fā)行版编振,比如Debian系列、Redhat系列臭埋、Suse系列踪央。這些發(fā)行版一般在放出的時候就已經(jīng)把內(nèi)核以最穩(wěn)定的方式編譯好了,并且根據(jù)他們的測試和需求瓢阴,把內(nèi)核的許多屬性自定義的啟用和禁用了畅蹂,這些發(fā)行版一般比較穩(wěn)定。但是這些發(fā)行版一般發(fā)行周期都比較長荣恐,而內(nèi)核的升級發(fā)行卻非骋盒保快,而且每次升級都會有許多新的功能叠穆,如果想要使用這些新特性就要自己去編譯內(nèi)核了少漆。當(dāng)然編譯內(nèi)核不算太難也不是太簡單,而且編譯需要一定的時間(這和計算機的性能有關(guān))硼被。
編譯內(nèi)核步驟:
1.安裝開發(fā)編譯環(huán)境
2.下載LINUX內(nèi)核源碼壓縮包
3.解壓源碼LINUX壓縮包并切換工作路徑到源碼包目錄
4.配置內(nèi)核屬性
5.編譯內(nèi)核
6.編譯和安裝內(nèi)核模塊
7.安裝內(nèi)核
8.啟動
詳細(xì)安裝過程:
1.安裝開發(fā)編譯環(huán)境
Centos系列可以通過YUM安裝開發(fā)軟件包組來搭建開發(fā)編譯環(huán)境
yum groupinstall "Development Tools"
DEBIAN系列可以通過APT安裝開發(fā)軟件包組來搭建開發(fā)編譯環(huán)境
apt install build-essential
2.下載內(nèi)核源碼壓縮包
LINUX內(nèi)核源碼壓縮包的可以通過內(nèi)核官方網(wǎng)站(https://www.kernel.org) 下載,也可以通過其他的軟件源來下載示损。
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.12.2.tar.xz
(從內(nèi)核官方網(wǎng)站上,下載版本為4.12.2的內(nèi)核源碼壓縮包)
3.解壓源碼包
tar -xf linux-4.12.2.tar.xz
(linux-4.12.2.tar.xz為下載下來的內(nèi)核源碼壓縮包文件名)
4.切換當(dāng)前工作路徑到解壓過的源碼包目錄
cd linux-4.12.2
(linux-4.12.2為解壓過的源碼包目錄名)
5.配置內(nèi)核屬性
make menuconfig //基于ncurse庫編制的圖形工具配置界面
make config //基于文本命令行的配置工具,不推薦使用
make xconfig //基于X11圖形配置工具界面
make gconfig //基于gtk+的圖形配置工具界面
注意:使用這些工具是需要解決一些依賴問題的嚷硫。
例如:使用make menuconfig時需要下載ncurse軟件包检访,而且也不能使用遠(yuǎn)程ssh工具(因為ssh不支持ncurse圖形界面),不然會報錯仔掸。
也可以使用當(dāng)前系統(tǒng)上的內(nèi)核配置文件進行二次修改定制,自定義啟用或者禁用內(nèi)核屬性烛谊。
cp /boot/.config-4.12.2-amd64 ./config
(復(fù)制當(dāng)前系統(tǒng)上的內(nèi)核配置文件(在boot分區(qū)下一般以config開頭后面跟當(dāng)前系統(tǒng)內(nèi)核版本號)并把重命名修改為.config)
6.編譯內(nèi)核
現(xiàn)在開始編譯內(nèi)核,中途可能會很多次失敗,不要氣餒,它的報錯信息一般會提示我們應(yīng)該怎樣解決,一般情況下大多是缺少依賴包,這時候只要安裝缺少的相關(guān)依賴包即可(一般是*.devel軟件包),解決這些問題以后就可以接著編譯了,如果還有錯誤重復(fù)上面的步驟。
make -j 4
(開始編譯內(nèi)核,-j后面用來指定線程數(shù),指著就是漫長的等待過程了,一般需要1-3個小時的時間,性能特別好或者特別差的機器除外)
7.編譯和安裝內(nèi)核模塊
make modules_install
(這個過程是系統(tǒng)在/lib目錄下創(chuàng)建一個以編譯內(nèi)核版本為目錄名的文件夾,并把編譯后的內(nèi)核模塊復(fù)制過去)
8.安裝內(nèi)核
make install
(這個過程是系統(tǒng)把編譯過的相關(guān)內(nèi)核文件復(fù)制到/boot目錄下,并在grub中追加引導(dǎo)項)
安裝編譯后的內(nèi)核,不會替換舊的內(nèi)核,也就是說它會多內(nèi)核共存于系統(tǒng)中嘉汰。
如果前面的步驟沒問題的話丹禀,之后重啟就能看到在grub引導(dǎo)項中多了一條引導(dǎo)(一般含有編譯的內(nèi)核版本號),選擇這個引導(dǎo)項啟動就可以使用自己編譯的內(nèi)核啟動系統(tǒng)。
注意:使用自己編譯的內(nèi)核鞋怀,有可能會導(dǎo)致某些軟件無法正常使用双泪,或者出現(xiàn)一些莫名其妙的bug(一般不會出現(xiàn)錯誤),所以什么時候使用就看你自己選擇了密似,使用需要謹(jǐn)慎焙矛。