如何編譯 Linux 核心

2021-09-20 12:00:30 字數 2775 閱讀 3615

曾經有一段時間,公升級 linux 核心讓很多使用者打心裡有所畏懼。在那個時候,公升級核心包含了很多步驟,也需要很多時間。現在,核心的安裝可以輕易地通過像apt這樣的包管理器來處理。通過新增特定的倉庫,你能很輕易地安裝實驗版本的或者指定版本的核心(比如針對音訊產品的實時核心)。

考慮一下,既然公升級核心如此容易,為什麼你不願意自行編譯乙個呢?這裡列舉一些可能的原因:

不管出於什麼原因,懂得如何編譯核心是非常有用的,而且可以被視作乙個通行權。當我第一次編譯乙個新的 linux 核心(那是很久以前了),然後嘗試從它啟動,我從中(系統馬上就崩潰了,然後不斷地嘗試和失敗)感受到一種特定的興奮。

既然這樣,讓我們來實驗一下編譯核心的過程。我將使用 ubuntu 16.04 server 來進行演示。在執行了一次常規的sudo apt upgrade之後,當前安裝的核心版本是4.4.0-121。我想要公升級核心版本到4.17, 讓我們小心地開始吧。

有乙個警告:強烈建議你在虛擬機器裡實驗這個過程。基於虛擬機器,你總能建立乙個快照,然後輕鬆地從任何問題中回退出來。不要在產品機器上使用這種方式公升級核心,除非你知道你在做什麼。

:安裝需要的環境

為了編譯核心,我們首先得安裝一些需要的環境。這可以通過乙個命令來完成:

sudo

apt-get

install

gitfakeroot build

-essential ncurses

-dev xz

-utils libssl

-dev bc flex libelf

-dev bison

務必注意:你將需要至少 128gb 的本地可用磁碟空間來完成核心的編譯過程。因此你必須確保有足夠的空間。

解壓原始碼

tar

xvzf linux

-4.17

-rc2

.tar

.gz使用命令cd linux-4.17-rc2進入新生成的資料夾。

配置核心

在正式編譯核心之前,我們首先必須配置需要包含哪些模組。實際上,有一些非常簡單的方式來配置。使用乙個命令,你能拷貝當前核心的配置檔案,然後使用可靠的menuconfig命令來做任何必要的更改。使用如下命令來完成:

cp

/boot

/config-$

(uname-r

).config

現在你有乙個配置檔案了,輸入命令make menuconfig。該命令將開啟乙個配置工具(圖 1),它可以讓你遍歷每個可用模組,然後啟用或者禁用你需要或者不需要的模組。

make menuconfig

很有可能你會禁用掉核心中的乙個重要部分,所以在menuconfig期間小心地一步步進行。如果你對某個選項不確定,不要去管它。或者更好的方法是使用我們拷貝的當前執行的核心的配置檔案(因為我們知道它可以工作)。一旦你已經遍歷了整個配置列表(它非常長),你就準備好開始編譯了。

編譯和安裝

現在是時候去實際地編譯核心了。第一步是使用make命令去編譯。呼叫make命令然後回答必要的問題(圖 2)。這些問題取決於你將公升級的現有核心以及公升級後的核心。相信我,將會有非常多的問題要回答,因此你得預留大量的時間。

make命令的問題

回答了長篇累牘的問題之後,你就可以用如下的命令安裝那些之前啟用的模組:

make

modules_install

又來了,這個命令將耗費一些時間,所以要麼坐下來看著編譯輸出,或者去做些其他事(因為編譯期間不需要你的輸入)。可能的情況是,你想要去進行別的任務(除非你真的喜歡看著終端介面上飛舞而過的輸出)。

現在我們使用這個命令來安裝核心:

sudo

make

install

又一次,另乙個將要耗費大量可觀時間的命令。事實上,make install命令將比make modules_install命令花費更多的時間。去享用午餐,配置乙個路由器,將 linux 安裝在一些伺服器上,或者小睡一會吧。

啟用核心作為引導

一旦make install命令完成了,就是時候將核心啟用來作為引導。使用這個命令來實現:

sudo

update

-initramfs -c

-k 4.17

-rc2

當然,你需要將上述核心版本號替換成你編譯完的。當命令執行完畢後,使用如下命令來更新 grub:

sudo

update

-grub

現在你可以重啟系統並且選擇新安裝的核心了。

恭喜!

你已經編譯了乙個 linux 核心!它是一項耗費時間的活動;但是,最終你的 linux 發行版將擁有乙個定製的核心,同時你也將擁有一項被許多 linux 管理員所傾向忽視的重要技能。

原文發布時間為:2018-05-22

如何編譯核心Linux

我裝的是 linux 2.4.20 這個連線進行 c 配置核心前的準備工作 配置核心前的準備工作 cd usr include rm rf asm linux scsi asm generic 或改名儲存 ln s usr src linux include asm i386 asm ln s us...

如何編譯 Linux 核心

曾經有一段時間,公升級 linux 核心讓很多使用者打心裡有所畏懼。在那個時候,公升級核心包含了很多步驟,也需要很多時間。現在,核心的安裝可以輕易地通過像 apt 這樣的包管理器來處理。通過新增特定的倉庫,你能很輕易地安裝實驗版本的或者指定版本的核心 比如針對音訊產品的實時核心 考慮一下,既然公升級...

如何編譯安裝Linux核心

在正式編譯前需要安裝部分軟體。sudo apt update sudo apt upgrade sudo apt get install git fakeroot build essential ncurses dev xz utils libssl dev bc flex libelf dev b...