如何編譯 Linux 核心

2021-08-20 10:47:01 字數 2477 閱讀 1126

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

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

你想要簡單了解編譯核心的過程

你需要啟用或者禁用核心中特定的選項,因為它們沒有出現在標準選項裡

你想要啟用標準核心中可能沒有新增的硬體支援

你使用的發行版需要你編譯核心

你是乙個學生,而編譯核心是你的任務

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

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

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

wget安裝需要的環境

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

sudo apt-get install git fakeroot 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),它可以讓你遍歷每個可用模組,然後啟用或者禁用你需要或者不需要的模組。

圖 1: 執行中的 make menuconfig

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

編譯和安裝

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

圖 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 管理員所傾向忽視的重要技能。

如何編譯核心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...