OpenSUSE掉网卡驱动的问题和解决方案
诱因?
使用yast工具对磁盘未分配空间划分新挂载空间(不确定)
环境
命令 | ||
---|---|---|
网卡型号 | Intel Ethernet I217-LM | lspci | grep -i ethernet |
系统 | openSUSE Leap 15.3 | cat /etc/os-release |
驱动版本 | e1000e-3.8.4.tar.gz | |
包管理 | https://pkgs.org/ |
重装网卡驱动
一.下载Intel网卡驱动
- 先进入Intel官网。
- 在搜索栏中搜索具体型号,在结果栏中进入“英特尔® 以太网连接 I217 - 产品信息、文档、支持和下载”。
- Tab栏中选择“支持”,然后在左边的文章搜索栏中搜索“Linux”,会找到一篇“适用于英特尔® 千兆位以太网网络连接的 Linux* 基础驱动程序”的文章,进入以后可以看到Intel提供的三种驱动程序。
- 继续向下找到“适用于英特尔® 千兆位网络连接的 Linux* e1000e 基础驱动程序安装说明”,点进“Linux* e1000e 驱动程序”。里面有“e1000e-3.8.4.tar.gz”的下载链接,下载并放入U盘中。
- 注意:Intel官方会经常变更上述的链接,如果发现链接无法使用,请按照上述方法手动查找驱动下载链接,如果可以的话请及时给我留言更新链接。
二. 下载和安装驱动编译工具
- 依赖关系:编译网卡驱动 -> make install -> gcc。所以已经安装了gcc环境和make工具的可以跳过这一步。
- 下载gcc环境,进入阿里开源镜像站centos Package,下载以下rpm包(有可能版本会更新,注意不要完全搜索)
- mpfr-3.1.1-4.el7.i686.rpm
- libmpc-1.0.1-3.el7.x86_64.rpm
- kernel-headers-3.10.0-1160.el7.x86_64.rpm
- glibc-headers-2.17-317.el7.x86_64.rpm
- glibc-devel-2.17-317.el7.x86_64.rpm
- cpp-4.8.5-44.el7.x86_64.rpm
- gcc-4.8.5-44.el7.x86_64.rpm
- 将上述包合入一个文件夹(例如:rpm),放入U盘中。
- 下载make工具。进入阿里开源镜像站opensuse Package,下载以下rpm包(有可能版本会更新,注意不要完全搜索)
- make-4.2.1-7.3.2.x86_64.rpm
- 将以上文件单独放置目录。
- 挂载设备:
- 将存储rpm文件的U盘接入Linux主机。
- 使用
fdisk -l
命令查看外部存储的路径。 - 使用
mount -t vfat /dev/sde1 /mnt/usb
挂载到主机上。(注意这里的sde是示例路径,而且需要U盘是FAT32格式,需要提前在/mnt创建名叫usb的目录mkdir /mnt/usb
) - 创建目录暂存文件:
mkdir /home/drive
- 将rpm移动到暂存目录中:
cp /mnt/usb/make-4.2.1-7.3.2.x86_64.rpm /home/drive
、cp -r /mnt/usb/rpm /home/drive
- 将U盘从主机挂载解除:
umount /mnt/usb
- 安装gcc:
- 移动到rpm目录下:
cd /home/drive/rpm
- 执行命令:
rpm -ivh *.rpm --nodeps --force
- 等待进度条完毕后检查安装是否完成:
gcc -v
- 移动到rpm目录下:
- 安装make
- 移动到drive目录下:
cd /home/drive
- 执行安装命令:
rpm -ivh make-4.2.1-7.3.2.x86_64.rpm --nodeps --force
- 等待进度条完毕后检查安装是否完成:
make -v
- 移动到drive目录下:
三. 安装网卡驱动
- 在编译驱动之前,需要确认是否安装了kernel-devel包:
rpm -qa kernel-devel
。如果没有找到,再次进入阿里开源镜像站centos Package,下载以下rpm包(有可能版本会更新,注意不要完全搜索)- kernel-devel-3.10.0-1160.el7.x86_64.rpm
- 如果需要安装kernel-devel包,请参考二中的6和7,安装依赖包。安装完毕以后还需要添加一个软链接:
- 移动到:
cd /usr/src
- 创建软链接:
ln -s kernels/3.10.0-1160.el7.x86_64/ linux
,注意里面的路径需要根据自己情况修改 - 如果没有执行这个步骤,即使安装了包,在执行编译网卡的时候也可能出现以下错误:
==================================================== Makefile:71: *** Kernel header files not in any of the expected locations. Makefile:72: *** Install the appropriate kernel development package, e.g. Makefile:73: *** kernel-devel, for building kernel modules and try again. Stop. ====================================================
- 移动到:
- 确认上述步骤全部完成后,开始安装网卡驱动:
- (默认放置网卡驱动的U盘已经挂载到/mnt/usb目录了)拷贝驱动包到暂存目录:
cp /mnt/usb/e1000e-3.8.4.tar.gz /home/drive
- 移动到目录:
cd /home/drive
- 解压出来:
tar zxf e1000e-3.8.4.tar.gz
- 进入目录:
cd e1000e-3.8.4/src
- 编译驱动:
make install
- (默认放置网卡驱动的U盘已经挂载到/mnt/usb目录了)拷贝驱动包到暂存目录:
- 等待驱动编译完成后,下面就是确认驱动是否编译出来:
- 编译成功的话,会在这个目录下生成一个名为“e1000e.ko”的二进制文件:
/lib/modules/3.10.0-1160.el7.x86_64/updates/drivers/net/ethernet/intel/e1000e
(同样,这个目录是根据kernel-devel包版本号生成的,注意自己的包版本号) - 如果找不到,就使用查找命令找一下(其实找不到没关系,只要有就行):
find / -name "e1000e.ko" 2>/dev/null
- 编译成功的话,会在这个目录下生成一个名为“e1000e.ko”的二进制文件:
- 上述确认后,执行驱动加载命令:
modprobe e1000e
,检查驱动是否加载到内核:lsmod | grep e1000e
,查看驱动位置:modinfo e1000e
- 配置网卡配置文件:
- 进入配置文件目录:
cd /etc/sysconfig/network
,打开文件:nano ifcfg-eth0
- 使用DHCP的话就这么配置:
BOOTPROTO='dhcp' STARTMODE='auto'
- 进入配置文件目录:
- 保存退出以后重启网络服务:
service network restart
- 检查网卡是否正确的获取到了ip:
ip addr