1、安装依赖包
yum -y groupinstall "Development Tools"
yum -y install ncurses-devel zlib-devel binutils-devel ncurses elfutils-libelf-devel openssl-devel
2、下载源码包
cd /usr/src/kernels
wget http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/linux-5.10.153.tar.xz
3、解压
tar -xf linux-4.19.210.tar.xz
cd linux-4.19.210/
4、拷贝config
cp /boot/config-$(uname -r) .config
5、根据需求在原有内核功能的基础上进行增加、删除定制功能宏
make menuconfig
[*]:表示选取了该选项,编译好后的kernel就会有该功能
[ ]:表示未选取该项,编译后的kernel不会有此功能
<M>:表示选取了该选项,而且是编译成模块module的形式,它会在kernel被载入后被动态地加载,编译成module可以减少kernel image的空间,加快开机速度,方便以后修改
< >:表示未选取该项,但是该功能被当做module,今后可以在开机后另外载入
退出时要保存。
6、编译内核
make -j 4
7、5.10版本内核需要gcc4.9以上版本才能编译,如果系统本身的gcc版本高于4.9,可以不安装centos-release-scl
yum install centos-release-scl -y
yum install devtoolset-8 –y
激活devtoolset
scl enable devtoolset-8 bash
gcc -v
8、安装module
make modules_install
9、安装内核
make install
make 包含了 make module,所以不用make module了,make生成的内核在root/linux-5.10.153/arch/x86/boot下
make install # 安装内核,会将新内核编译出的System.map, initrd.img, vmlinuz, config文件拷贝到/boot文件夹中,此外,该步骤还会更新/boot/grub/menu.list(如果没有该文件会提示生成)列表,将新安装的内核添加到该文件中
补充:
启用devtoolset-8
scl enable devtoolset-8 -- bash #临时环境
下次可到/opt/rh/devtoolset-x/目录,找到enable文件,激活source ./enable;如需替换老旧版本,先备份旧版本GCC[mv /usr/bin/gcc /usr/bin/gcc.bak];链接新版本[ln -s /opt/rh/devtoolset-x/root/bin/gcc /usr/bin/gcc])
source /opt/rh/devtoolset-8/enable
临时编译前使用高版本gcc (GCC) 8.3.1(推荐使用这个方法)
export CC=/opt/rh/devtoolset-8/root/usr/bin/gcc
export CPP=/opt/rh/devtoolset-8/root/usr/bin/cpp
export CXX=/opt/rh/devtoolset-8/root/usr/bin/c++