0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何自行編譯一個(gè)Linux內(nèi)核的詳細(xì)資料概述

Linux愛好者 ? 來源:未知 ? 作者:易水寒 ? 2018-05-27 10:12 ? 次閱讀

曾經(jīng)有一段時(shí)間,升級(jí) Linux 內(nèi)核讓很多用戶打心里有所畏懼。在那個(gè)時(shí)候,升級(jí)內(nèi)核包含了很多步驟,也需要很多時(shí)間?,F(xiàn)在,內(nèi)核的安裝可以輕易地通過像apt這樣的包管理器來處理。通過添加特定的倉(cāng)庫(kù),你能很輕易地安裝實(shí)驗(yàn)版本的或者指定版本的內(nèi)核(比如針對(duì)音頻產(chǎn)品的實(shí)時(shí)內(nèi)核)。

考慮一下,既然升級(jí)內(nèi)核如此容易,為什么你不愿意自行編譯一個(gè)呢?這里列舉一些可能的原因:

你想要簡(jiǎn)單了解編譯內(nèi)核的過程

你需要啟用或者禁用內(nèi)核中特定的選項(xiàng),因?yàn)樗鼈儧]有出現(xiàn)在標(biāo)準(zhǔn)選項(xiàng)里

你想要啟用標(biāo)準(zhǔn)內(nèi)核中可能沒有添加的硬件支持

你使用的發(fā)行版需要你編譯內(nèi)核

你是一個(gè)學(xué)生,而編譯內(nèi)核是你的任務(wù)

不管出于什么原因,懂得如何編譯內(nèi)核是非常有用的,而且可以被視作一個(gè)通行權(quán)。當(dāng)我第一次編譯一個(gè)新的 Linux 內(nèi)核(那是很久以前了),然后嘗試從它啟動(dòng),我從中(系統(tǒng)馬上就崩潰了,然后不斷地嘗試和失敗)感受到一種特定的興奮。

既然這樣,讓我們來實(shí)驗(yàn)一下編譯內(nèi)核的過程。我將使用 Ubuntu 16.04 Server 來進(jìn)行演示。在運(yùn)行了一次常規(guī)的sudo apt upgrade之后,當(dāng)前安裝的內(nèi)核版本是4.4.0-121。我想要升級(jí)內(nèi)核版本到4.17, 讓我們小心地開始吧。

有一個(gè)警告:強(qiáng)烈建議你在虛擬機(jī)里實(shí)驗(yàn)這個(gè)過程?;谔摂M機(jī),你總能創(chuàng)建一個(gè)快照,然后輕松地從任何問題中回退出來。不要在產(chǎn)品機(jī)器上使用這種方式升級(jí)內(nèi)核,除非你知道你在做什么。

下載內(nèi)核

我們要做的第一件事是下載內(nèi)核源碼。在Kernel.org找到你要下載的所需內(nèi)核的 URL。找到 URL 之后,使用如下命令(我以4.17 RC2內(nèi)核為例) 來下載源碼文件:

wget https://git.kernel.org/torvalds/t/linux-4.17-rc2.tar.gz

在下載期間,有一些事需要去考慮。

安裝需要的環(huán)境

為了編譯內(nèi)核,我們首先得安裝一些需要的環(huán)境。這可以通過一個(gè)命令來完成:

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

務(wù)必注意:你將需要至少 128GB 的本地可用磁盤空間來完成內(nèi)核的編譯過程。因此你必須確保有足夠的空間。

解壓源碼

在新下載的內(nèi)核所在的文件夾下,使用該命令來解壓內(nèi)核:

tar xv*** linux-4.17-rc2.tar.gz

使用命令 cd linux-4.17-rc2 進(jìn)入新生成的文件夾。

配置內(nèi)核

在正式編譯內(nèi)核之前,我們首先必須配置需要包含哪些模塊。實(shí)際上,有一些非常簡(jiǎn)單的方式來配置。使用一個(gè)命令,你能拷貝當(dāng)前內(nèi)核的配置文件,然后使用可靠的 menuconfig 命令來做任何必要的更改。使用如下命令來完成:

cp /boot/config-$(uname -r).config

現(xiàn)在你有一個(gè)配置文件了,輸入命令make menuconfig。該命令將打開一個(gè)配置工具(圖 1),它可以讓你遍歷每個(gè)可用模塊,然后啟用或者禁用你需要或者不需要的模塊。

如何自行編譯一個(gè)Linux內(nèi)核的詳細(xì)資料概述

圖 1: 運(yùn)行中的make menuconfig

很有可能你會(huì)禁用掉內(nèi)核中的一個(gè)重要部分,所以在menuconfig期間小心地一步步進(jìn)行。如果你對(duì)某個(gè)選項(xiàng)不確定,不要去管它。或者更好的方法是使用我們拷貝的當(dāng)前運(yùn)行的內(nèi)核的配置文件(因?yàn)槲覀冎浪梢怨ぷ鳎?。一旦你已?jīng)遍歷了整個(gè)配置列表(它非常長(zhǎng)),你就準(zhǔn)備好開始編譯了。

編譯和安裝

現(xiàn)在是時(shí)候去實(shí)際地編譯內(nèi)核了。第一步是使用make命令去編譯。調(diào)用make命令然后回答必要的問題(圖 2)。這些問題取決于你將升級(jí)的現(xiàn)有內(nèi)核以及升級(jí)后的內(nèi)核。相信我,將會(huì)有非常多的問題要回答,因此你得預(yù)留大量的時(shí)間。

如何自行編譯一個(gè)Linux內(nèi)核的詳細(xì)資料概述

圖 2: 回答make命令的問題

回答了長(zhǎng)篇累牘的問題之后,你就可以用如下的命令安裝那些之前啟用的模塊:

make modules_install

又來了,這個(gè)命令將耗費(fèi)一些時(shí)間,所以要么坐下來看著編譯輸出,或者去做些其他事(因?yàn)榫幾g期間不需要你的輸入)??赡艿那闆r是,你想要去進(jìn)行別的任務(wù)(除非你真的喜歡看著終端界面上飛舞而過的輸出)。

現(xiàn)在我們使用這個(gè)命令來安裝內(nèi)核:

sudo make install

又一次,另一個(gè)將要耗費(fèi)大量可觀時(shí)間的命令。事實(shí)上,make install 命令將比 make modules_install 命令花費(fèi)更多的時(shí)間。去享用午餐,配置一個(gè)路由器,將 Linux 安裝在一些服務(wù)器上,或者小睡一會(huì)吧。

啟用內(nèi)核作為引導(dǎo)

一旦 make install 命令完成了,就是時(shí)候?qū)?nèi)核啟用來作為引導(dǎo)。使用這個(gè)命令來實(shí)現(xiàn):

sudo update-initramfs -c -k4.17-rc2

當(dāng)然,你需要將上述內(nèi)核版本號(hào)替換成你編譯完的。當(dāng)命令執(zhí)行完畢后,使用如下命令來更新 grub:

sudo update-grub

現(xiàn)在你可以重啟系統(tǒng)并且選擇新安裝的內(nèi)核了。

恭喜!

你已經(jīng)編譯了一個(gè) Linux 內(nèi)核!它是一項(xiàng)耗費(fèi)時(shí)間的活動(dòng);但是,最終你的 Linux 發(fā)行版將擁有一個(gè)定制的內(nèi)核,同時(shí)你也將擁有一項(xiàng)被許多 Linux 管理員所傾向忽視的重要技能。

看完本文有收獲?請(qǐng)分享給更多人

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    316

    瀏覽量

    21865

原文標(biāo)題:如何編譯 Linux 內(nèi)核

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux內(nèi)核編譯主要過程

    Linux內(nèi)核編譯主要過程: 配置、編譯、安裝 。
    發(fā)表于 08-08 16:02 ?792次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>的<b class='flag-5'>編譯</b>主要過程

    Linux內(nèi)核編譯詳談

    Linux內(nèi)核編譯詳談
    發(fā)表于 10-30 09:51 ?7次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>編譯</b>詳談

    基于Arm的Linux內(nèi)核編譯指導(dǎo)

    基于Arm的Linux內(nèi)核編譯指導(dǎo)
    發(fā)表于 10-30 10:13 ?15次下載
    基于Arm的<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>編譯</b>指導(dǎo)

    如何在Linux中使用SIM7100模塊的詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何在Linux中使用SIM7100模塊的詳細(xì)資料概述
    發(fā)表于 06-14 08:00 ?10次下載
    如何在<b class='flag-5'>Linux</b>中使用SIM7100模塊的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    構(gòu)建嵌入式開發(fā)平臺(tái)簡(jiǎn)明指導(dǎo)編譯內(nèi)核鏡像的詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是構(gòu)建嵌入式開發(fā)平臺(tái)簡(jiǎn)明指導(dǎo)編譯內(nèi)核鏡像的詳細(xì)資料概述
    發(fā)表于 06-19 08:00 ?10次下載

    Linux 0.01版本內(nèi)核的源碼和注釋的詳細(xì)資料免費(fèi)下載

    對(duì)于學(xué)習(xí)linux內(nèi)核很有幫助,能學(xué)到很多基礎(chǔ)性的知識(shí)。本文檔的主要內(nèi)容詳細(xì)介紹的是linux 0.01版本內(nèi)核的源碼和注釋的
    發(fā)表于 07-30 08:00 ?0次下載

    如何使用Linux設(shè)計(jì)個(gè)網(wǎng)絡(luò)聊天室詳細(xì)資料免費(fèi)下載

    本文檔的作用內(nèi)容詳細(xì)介紹的是如何使用Linux設(shè)計(jì)個(gè)網(wǎng)絡(luò)聊天室詳細(xì)資料免費(fèi)下載。
    發(fā)表于 09-11 15:46 ?11次下載
    如何使用<b class='flag-5'>Linux</b>設(shè)計(jì)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>網(wǎng)絡(luò)聊天室<b class='flag-5'>詳細(xì)資料</b>免費(fèi)下載

    C語言編譯器MINGW的使用說明詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言編譯器MINGW的使用說明詳細(xì)資料概述,在mingw環(huán)境中生成和使用dll都是十分方便的。
    發(fā)表于 11-13 17:55 ?15次下載
    C語言<b class='flag-5'>編譯</b>器MINGW的使用說明<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    如何在Linux下如何刪除大量文件的詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何在Linux下刪除大量文件的過程詳細(xì)資料概述免費(fèi)下載。
    發(fā)表于 11-14 17:10 ?7次下載

    ARM處理器內(nèi)核詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是ARM處理器內(nèi)核詳細(xì)資料概述包括了:ARM7TDMI 處理器內(nèi)核系列,ARM9TDMI 處理器
    發(fā)表于 10-14 17:14 ?15次下載
    ARM處理器<b class='flag-5'>內(nèi)核</b>的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    如何才能編譯Linux內(nèi)核

    內(nèi)核的bug ,并增加了許多新的特性。如果用戶想要使用這些新特性, 或想根據(jù)自己的系統(tǒng)度身定制個(gè)更高效, 更穩(wěn)定的內(nèi)核, 就需要重新編譯
    發(fā)表于 11-04 18:04 ?8次下載

    Linux進(jìn)行內(nèi)核編譯詳細(xì)資料講解

     、內(nèi)核簡(jiǎn)介內(nèi)核,是個(gè)操作系統(tǒng)的核心。它負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動(dòng)程序、文件和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性。
    發(fā)表于 11-04 18:04 ?4次下載

    使用TDA2030設(shè)計(jì)個(gè)低音放大器電路的詳細(xì)資料概述

    電子發(fā)燒友網(wǎng)站提供《使用TDA2030設(shè)計(jì)個(gè)低音放大器電路的詳細(xì)資料概述.pdf》資料免費(fèi)下載
    發(fā)表于 11-26 14:50 ?29次下載
    使用TDA2030設(shè)計(jì)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>低音放大器電路的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    動(dòng)手編譯Linux內(nèi)核的教程免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是動(dòng)手編譯Linux內(nèi)核的教程免費(fèi)下載。
    發(fā)表于 11-26 17:01 ?14次下載

    Linux內(nèi)核編譯與運(yùn)行

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux內(nèi)核編譯與運(yùn)行免費(fèi)下載。
    發(fā)表于 03-25 13:48 ?16次下載