1.查看当前内核版本:
使用的系统版本,当前日期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,已经是升级为指定内核版本。