LINUX編譯內(nèi)核教程

內(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)慎焙矛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市残腌,隨后出現(xiàn)的幾起案子村斟,更是在濱河造成了極大的恐慌贫导,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟆盹,死亡現(xiàn)場離奇詭異孩灯,居然都是意外死亡,警方通過查閱死者的電腦和手機逾滥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門峰档,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寨昙,你說我怎么就攤上這事讥巡。” “怎么了舔哪?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵欢顷,是天一觀的道長。 經(jīng)常有香客問我捉蚤,道長抬驴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任外里,我火速辦了婚禮怎爵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盅蝗。我一直安慰自己鳖链,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布墩莫。 她就那樣靜靜地躺著芙委,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狂秦。 梳的紋絲不亂的頭發(fā)上灌侣,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音裂问,去河邊找鬼侧啼。 笑死,一個胖子當(dāng)著我的面吹牛堪簿,可吹牛的內(nèi)容都是我干的痊乾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼椭更,長吁一口氣:“原來是場噩夢啊……” “哼哪审!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起虑瀑,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤湿滓,失蹤者是張志新(化名)和其女友劉穎滴须,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叽奥,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡扔水,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了而线。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铭污。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡恋日,死狀恐怖膀篮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岂膳,我是刑警寧澤誓竿,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站谈截,受9級特大地震影響筷屡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜簸喂,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一毙死、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喻鳄,春花似錦扼倘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至颜曾,卻和暖如春纠拔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泛豪。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工稠诲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诡曙。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓臀叙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親岗仑。 傳聞我的和親對象是個殘疾皇子匹耕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容