Centos源码编译升级指定内核版本 1.查看当前内核版本: 2.下载最新稳定版本的内核源码包到 /usr/src/kernels ,并解压到当前目录 3.从 /boot 目录将现有版本的内核编译config配置文件拷过来到放到新的内核源码解压目录内并重命名为.config的隐藏文件 4.安装依赖包 5.运行 [root@localhost /usr/src/kernels/linux-5.11/]#make menuconfig, 6.编译内核 7.编译安装模块 8.[root@localhost /usr/src/kernels/linux-5.11/]make install 9.安装完后重启设备reboot

使用的系统版本,当前日期CentOS最新版:

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 8.4.2105

查看当前系统内核版本

[root@localhost ~]# uname -r

4.18.0-305.10.2.el8_4.x86_64

2.下载最新稳定版本的内核源码包到 /usr/src/kernels ,并解压到当前目录

[root@localhost ~]# tar -zxvf linux-5.11.tar.gz -C  /usr/src/kernels/

3.从 /boot 目录将现有版本的内核编译config配置文件拷过来到放到新的内核源码解压目录内并重命名为.config的隐藏文件

[root@localhost ~]#cp -v  /boot/config-4.18.0-305.3.1.el8.x86_64 /usr/src/kernels/linux-5.11/.config

4.安装依赖包

[root@localhost ~]#yum -y groupinstall "development tools"

安装ncurse-devel包 (make menuconfig 文本界面窗口依赖包)

[root@localhost ~]#yum -y install ncurses-devel

5.运行 [root@localhost /usr/src/kernels/linux-5.11/]#make menuconfig,

开启文本界面的编译选项菜单窗口,可以对内核加载的模块编译选项进行调整,如修改编译后的内核名称、新添加之前系统缺少的模块等。

这里可以自定义内核特性,如果对内核不熟悉的话,直接使用tab键 选save 保存,然后退出即可。

6.编译内核

查看本机内核数#lscpu 或者  nproc

这里,如果不超过4核, -j 后面接cpu核心数量;超过4核,建议使用-j 4,嗯,稳一点

 [root@localhost /usr/src/kernels/linux-5.11/]# make -j 4#根据CPU核数开启多线程编译以加快编译速度

开始漫长的编译过程,大概需要2小时左右,具体视CPU硬件的性能决定。

如果编译开始提示错误,则可能需要预先安装对应的组件包,例如:

[root@localhost /usr/src/kernels/linux-5.11/] yum -y install openssh-devel elfutils-libelf-devel bc

根据对应的错误提示,yum 方式安装对应的组件包,部分组件包在epel源,所以需要预先配置好epel源仓库。

(常见编译出错问题,见下一篇Kernel 源码升级问题指南)

7.编译安装模块

编译完成后执行make modules_install 安装内核模块(一般编译的时候不出错,后面就不会出错的。)

[root@localhost /usr/src/kernels/linux-5.11/]make modules_install

8.[root@localhost /usr/src/kernels/linux-5.11/]make install

如需将新版本内核设置为默认启动内核,可以使用此命令

[root@localhost /usr/src/kernels/linux-5.11/]grub2-set-default 0 #0表示 /boot/grub2/grub.cfg 文件中排在第一位的 menuentry 段

9.安装完后重启设备reboot

    进入系统后,再查看一下uname -r,已经是升级为指定内核版本。