编译前准备
1.查看当前内核版本
uname -r
CentOS默认的版本是 3.10.0-1160. el7. x86_64
2.下载内核
使用wget用镜像源下载(以北外的镜像源和Linux6.1.8为例):
wget https://mirrors.bfsu.edu.cn/kernel/v6.x/linux-6.1.8.tar.xz
3.下载编译时所需要的依赖
记得切换为root用户
yum install make gcc ncurses-devel flex bison openssl-devel bc elfutils-libelf-devel perl dwarves
如果提示CenOs默认的源用不了解决方案如下:
(1)备份当前的yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
(2)下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
(3)清空并生成缓存
yum clean all
yum makecache
编译新内核
1.解压完成后切换到源码目录
cd linux-6.1.8
2.编译之前,进行编译选项的配置
(1)利用图形化界面配置:
make menuconfig
(2) 在编译过程中提示少了什么依赖就安装什么依赖就行
(3)解决gcc版本过低:
①启用 Software Collections (SCL):
yum -y install centos-release-scl
② 安装 GCC 8.3 及相关工具:
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils
③ 临时启用 GCC 8.3:
scl enable devtoolset-8 bash
注意:使用 scl 命令启用的环境是临时的,退出 shell 或重启系统后,将恢复到原系统的 GCC 版本。
④ 如果希望长期使用 GCC 8.3,您可以将其添加到系统的环境变量中:
echo "source /opt/rh/devtoolset-8/enable" >> /etc/profile
⑤ 以下是升级gcc时遇到的问题:
I.升级gcc时下载的仓库SCL,centos-sclo-sclo 仓库的 baseurl 依然无法访问 mirrorlist.centos.org。
解决方法:暂时禁用 centos-sclo-sclo 仓库,因为它不是必需的系统仓库。你可以运行以下命令来禁用它:
yum-config-manager --disable centos-sclo-sclo
II.安装 devtoolset-8 时遇到了 GPG 密钥验证错误。这通常是由于存储库中的 GPG 密钥不匹配导致的。
解决方法:禁用 GPG 检查: 如果密钥问题仍然存在,可以临时禁用 GPG 检查,输入一下指令:
yum install --nogpgcheck devtoolset-8-gcc devtoolset-8-gcc-c++
III.运行 make menuconfig 时遇到了一些警告和错误,特别是显示器大小不足的问题。
解决方法:使用FinalShell运行,相比起在终端运行尺寸会大得多
3.开始编译
make -j8
4.编译完成后,安装内核
(1)安装内核模块
make modules_install -j6
(2)安装内核
make install
编译完成验证新内核
1.重启系统
reboot
2.验证新内核版本
(1)重启时选择内核界面选择下载的新内核
(2)输入指令查看当前内核
uname -r
过程遇到的困难实在有很多,看了许多的教程才完成,并且每个人遇到的问题都不一样,仅供参考。