編譯Linux Kernel

我使用的是kernel 4.9.153版本,debian上測試過,但是編譯環境可以是任何linux系統。

第一步: 下載tarball

kernel.org 下載一個穩定版的kernel包,如linux-4.9.153.tar.xz, 然後解壓出來到linux-4.9.153文件夾

第二步:裝好所需的工具

sudo apt install build-essential bc python libncurses5-dev libncursesw5-dev

然後重啓一下

可以查看一下當前自己系統的kernel 版本(結果根據自己系統不同而不同):

uname -r
# 我的機器上是 :
4.9.0-8-amd64

第三步: 確認一下kernel版本

進入解壓後的文件夾linux-4.9.153, 然後看一下Makefile:

$ head -n 5 Makefile
VERSION = 4
PATCHLEVEL = 9
SUBLEVEL = 153
EXTRAVERSION =
NAME = Roaring Lionus

第四步: 創建配置文件.config

需要在kernel源文件根目錄下(linux-4.9.153下), 創建一個配置文件.config, 在裏面可以指定非常多的配置項。
爲了方便起見,可以使用當前系統的配置文件,它在/boot下。
可以使用下面命令通過本機配置來創建.config文件,並且驗證不合格的參數值

$ make olddefconfig

之後可以使用菜單的方式查看和改動.config:

$ make menuconfig

保存退出後,它會創建備份配置文件.config.old, 用新的配置覆蓋 .config

可以設置2個值:

  1. CONFIG_LOCALVERSION="-mykernel"
    自己設置個名字後綴,用來區分kernel名,如-mykernel
  2. CONFIG_BLK_DEV_LOOP=y

可以使用 scripts/diffconfig .config.old .config 來對比新老配置文件的區別

第五步:編譯 kernel

在kernel的根目錄下運行下面的命令,其中N替換成本機器的核心數(4核就是 make -j4

make -jN

根據每臺機器性能不同,這次編譯時間可能多達3個小時

第六步:安裝kernel到啓動項

在確認第五步正常運行,沒有報錯的情況下,運行下面2個代碼(使用root權限):

sudo make modules_install    # 安裝所有已編譯的kernel modules
sudo make install			 # 安裝kernel鏡像到 /boot/ 

然後可以去/boot/下面查看,應該多了這3個文件:

  • vmlinuz-4.9.153-mykernel
  • initramfs-4.9.153-mykernel.img
  • System.map-4.9.153-mykernel

不同kernel版本 install出的文件可能名稱會略有不同,但是這個名字 -mykernel 就是剛纔自己配置的CONFIG_LOCALVERSION內容

第七步: 重啓系統,在開機時選擇kernel

sudo shutdown -r now

重啓系統,進入啓動菜單選項的時候,找到和自己編譯的kernel相同的項啓動。
進入桌面後可以查看kernel版本:

uname -r
4.9.153-mykernel
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章