CentOS 7 下編譯Linux kernel 內核


1. 准備編譯環境

 yum groupinstall "Development Tools"

 

2. 下載內核文件

選擇目標內核版本並下載: https://mirrors.edge.kernel.org/pub/linux/kernel/

(進入kernels常用存放目錄)

[root@linetwork ~]# cd /usr/src/kernels/ 

(以3.10.20為例,下載源文件)

[root@linetwork kernels]# wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.10.20.tar.gz

(解壓文件)

[root@linetwork kernels]# tar zxvf linux-3.10.20.tar.gz

(得到解壓后文件夾linux-3.10.20)

 [root@linetwork kernels]# ls
linux-3.10.20  linux-3.10.20.tar.gz

 

3. 編譯內核

目的: 將內核源碼文件(如*.c)編譯成可執行文件(如*.o)

(進入Kernel源碼文件夾linux-3.10.20)

[root@linetwork kernels]# cd linux-3.10.20/

(可選步驟A: 可直接通過menuconfig 增減內核模塊或組件,選擇后可查看.config參數文件的更新情況)

[root@linetwork linux-3.10.20]# make menuconfig
[root@linetwork linux-3.10.20]# cat  .config

(可選步驟B: 也可通過現有內核參數去生成新的配置參數文件.config)

[root@linetwork linux-3.10.20]# cp /boot/config-3.10.0-957.el7.x86_64 ./.config
[root@linetwork linux-3.10.20]# make oldconfig
[root@linetwork linux-3.10.20]# cat  .config

(編譯內核)

[root@linetwork linux-3.10.20]# make -j16 all

all: 編譯所有選擇模塊

-j16: 將使用16核CPU資源去編譯內核

 

4. 安裝Kernel Module

(將新內核中的可執行module,集中放於/lib/modules/ 下的新內核文件夾中)

[root@linetwork linux-3.10.20]# make module_install
[root@linetwork ~]# ls /lib/modules/ 3.10.0-1127.10.1.el7.x86_64 3.10.0-1127.el7.x86_64 3.10.20

 

5. 安裝Kernel

(將Kernel注冊到系統引導程序)

[root@linetwork linux-3.10.20]# make install
[root@linetwork linux-3.10.20]# ls /boot/

 

6. 設置開機默認從新kernel啟動

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
sudo grub2-set-default 0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
 

7. 刪除舊的kernel

yum install yum-utils
package-cleanup --oldkernels

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM