我使用的是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個值:
CONFIG_LOCALVERSION="-mykernel"
自己設置個名字後綴,用來區分kernel名,如-mykernel
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