Centos7升级内核&编译安装网卡驱动

环境介绍

业务需要,公司的k8s环境负载过高,需要增加一个node节点,我们的操作系统是centos7.9版本3.1内核系统,由于安装k8s需要5.x版本以上

升级内核遇到的问题

问题难点:内核升级完成后发现网卡竟然不会识别,我们的服务器上有两个网卡一个内置集成网卡和一个pie网卡,在终端输入ifconfig命令发现只能看见一个lo回环网络接口,没有eth0网卡

此时按照网上教程说的,手动创建ifcfg-eth0文件并写入网络配置信息,发现并不能解决问题,仍找不到网卡设备。经过分析,确定是没有相应网卡驱动。

以下是完整的安装流程

安装步骤

1、下载5.4.196内核,上传到对应服务器 (可以在nas上下载5.4.196内核,上传到对应服务器 官网地址

2、安装gcc9(编译驱动使用)

3、下载网卡驱动,官网地址 (执行lspci -v查看需要的的module版本)

4、重启网卡或者重启服务器

5、安装显卡驱动,官网链接:

centos7内核升级

安装内核

1
2
3
4
sudo rpm -ivh kernel-lt-5.4.196-1.el7.elrepo.x86_64.rpm
sudo rpm -ivh kernel-lt-devel-5.4.196-1.el7.elrepo.x86_64.rpm
sudo rpm -ivh kernel-lt-headers-5.4.196-1.el7.elrepo.x86_64.rpm
sudo reboot

设置启动默认内核(可选)

1、查看已安装可用内核并打印内核启动顺序

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
机器上如果存在多个内核,我们要使用最新版本,可以通过grub2-set-default 0 命令生成 grub 配置文件

2、设置默认的内核启动项:

sudo grub2-set-default 0 #初始化页面的第一个内核将作为默认内核

1
2
3
#cat /boot/grub2/grub.cfg |grep menuentry    有三个默认的内核启动项可选
#grub2-set-default "CentOS Linux (5.4.196-1.el7.elrepo.x86_64) 7 (Core)" 设置第一个内核选项为默认启动项
#grub2-editenv list 查看是否设置成功,最后可以重启一下

安装gcc环境

gcc主要是编译内核使用

1
2
3
4
5
yum -y install gcc dkms kernel-devel
yum install centos-release-scl #安装环境配置工具
yum install devtoolset-9 #安装GCC9
scl enable devtoolset-9 bash #启用GCC9

下载网卡驱动

[网盘地址](链接:https://pan.baidu.com/s/1aIUD7LD0MT9177_s6wRFWg
提取码:1234)

  • 因为我们内核升级到5.x发现网卡消失,下图使用lspci -v 从这里可以看出网卡的型号是RTL8111/8168/8411,但是centos7 3.10内核识别为8169,所以导致升级完内核后会丢失网卡,所以我们要下载网卡驱动,然后上传到centos7。

  • 上传驱动到centos7

由于我网卡是两个所以上传了两个不同版本的驱动版本可以lspci查看

r8168-8.051.02.tar.gz r8125-9.011.00.tar.gz

上传好以后解压文件然后执行脚本autorun.sh即可

1
2
3
4
tar -zxf r8168-8.051.02.tar.gz
cd r8168-8.051.02
chmod +x autorun.sh && ./autorun.sh
# 执行完以上脚本以后查看是否编译成功
  • 重启网卡并查看网卡是否显示

systemctl restart network

ifconfig -a #如果网卡显示那么恭喜你内核升级完成,这个时候可以使用lspci -v查看mode型号是否一样

安装显卡驱动

首先确认需要安装GCC+9版本以上,否则会有以下报错。The CC version check failed: ...

  1. 卸载原始显卡驱动 yum remove nvidia*

然后重启机器

2.内核升级,上面文档已介绍

3、关闭系统自带nouveau
vim /etc/modprobe.d/blacklist.conf #追加以下两行内容
#文本追加内容
blacklist nouveau
options nouveau modeset=0
#文本追加内容

4、重建initramfs image步骤
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
重启电脑生效。
lsmod | grep nouveau #查看是否关闭了nouveau
无任何输出代表已关闭

5、安装显卡驱动,或者在nac下载
官网链接: [网盘地址](链接:https://pan.baidu.com/s/1ZqIAj-ZBZgI0Ag8AvGwNHQ
提取码:1234)
给文件添加可执行文件
chmod +x NVIDIA-Linux-x86_64-515.76.run
接下来以root用户安装

安装前先执行设置GCC9为当前shell

scl enable devtoolset-9 bash #启用GCC9
chmod +x NVIDIA-Linux-x86_64-515.76.run
./NVIDIA-Linux-x86_64-515.76.run

最后执行完毕可以使用nvidia -smi 检查是否安装完成

  • 执行后会进入图形化界面然后进行选择,选择好如果没有问题重启即可

如果有以下报错,是因为没有关闭关闭系统自带nouveau,关闭后重新安装

1
2
The Nouveau kernel driver is currently in use by your system.  This driver is incompatible with the NVIDIA driver, and must be disabled before proceeding.  Please
consult the NVIDIA driver README and your Linux distribution's documentation for details on how to correctly disable the Nouveau kernel driver