Ubuntu18.04环境下I219-LM网卡不能识别问题解决
转载记录
使用的某品牌的PC机,CPU型号为I5-1145G7(笔记本)或者I5-11500(PC机和笔记本),因为某些原因的限制,只能安装Ubuntu18.04版本的操作系统。安装操作系统完毕之后,发现网卡不能识别,经过各种尝试之后,问题终于解决,特此记录一下。
(本文介绍的内容涉及笔记本和PC机,因此硬件型号有所差异)
硬件信息
PC机自带的windows11操作系统网卡是能够正常工作的。从设备管理器里面看到的网卡类型为I219-V(笔记本) 或者I219-LM(PC机)
这两款型号的硬件并不是最新才出现的
(后来发现我自己3年前的笔记本网卡就是I219-LM,而且当时安装Ubuntu18.04的操作系统并没有出现网卡不识别的问题,这样给我带来极大的信心,认为这个问题肯定可以解决)
驱动信息
首先是联系电脑的厂家,不过在厂家的支持列表里面,Ubuntu最低的版本就是20.04了,所以支持进度有些慢。不过他们也认为是网卡驱动的问题,并提供了下载地址:
https://www.intel.cn/content/www/cn/zh/download/14611/15817/intel-network-adapter-driver-for-pcie-intel-gigabit-ethernet-network-connections-under-linux.html?product=46827
(我这里选择的是当前最新的3.8.4版本,最后也是靠重新编译驱动解决的问题。)
解决过程
一开始也知道是驱动的问题,而且最开始尝试的也是e1000e-3.8.4.tar.gz文件,无奈编译错误,导致一度想要放弃。
后来发现自己的笔记本(三年前购买)也是同样类型的网卡I219-LM。两三年前安装的Ubuntu18.04,当时没有出现网卡不能识别的问题,所以我坚信这个问题肯定可以解决。这给我带来极大的信心。
开始尝试各种低版本的Ubuntu18.04,想办法将PC机的操作系统以及内核版本跟我自己笔记本的内核版本一致,这样加载对应的ko文件就应该可以了。在不断的尝试过程中,发现跟操作系统版本和内核版本没有强制的关系。而且我的笔记本在使用过程中也使用apt-get upgrade升级过内核版本,并没有出现升级前后网卡不识别的问题。所以最后提出一个通用的方法。
解决方案
下面介绍一下Ubuntu18.04操作系统下,I219-V I219-LM类型网卡不识别问题的解决方法:
正常安装Ubuntu18.04的操作系统(经过测试发现对小版本并没有强制限制和要求)
检查网卡是否被识别。如果有线网卡被识别,则就不用继续操作了。注意针对笔记本,这里需要确认一下是有线还是无线。一些同学使用的是无线网卡进行的网络连接,而对有线网卡不能被识别的现象忽略了。
使用lsmod | grep e1000e命令确认一下网卡模块是否已经加载,如果为空的话,表示没有被加载
使用外置网卡或者无线网卡。配置临时IP地址,以便可以访问公网进行软件依赖包的安装。
参考如下命令,进行依赖的软件安装(切换到root用户下执行)
// 软件源更新
apt-get update
// 编译需要
apt-get install gcc
// make命令需要
apt-get install make
apt-get install make-guile
将下载的文件e1000e-3.8.4.tar.gz 放置到Ubuntu环境的普通用户的home目录。解压之后,参考README进行手动编译。
// 解压
tar zxf e1000e-3.8.4.tar.gz
// 编译
make
// root用户执行
make install
在181行左右将1改成0(也有的人说这里不需要修改,试过也是可行,同样也能编译出来e1000e.ko文件)
编译完毕之后,首先使用lsmod | grep e1000e 看看是否已经加载,如果加载的话,需要使用rmmod e1000e 删除, 然后尝试使用insmod e1000e.ko看看是否能够加载成功,没有报错,并且执行lsmod |grep e1000e有内容的话,说明编译的没有问题,执行rmmod e1000e删除
模块加载
// 操作
modprobe pps_core
modprobe ptp
// 在e1000e-3.8.4/src目录下执行
insmod e1000e.ko
// 编译
验证
使用modinfo e1000e | grep filename确认文件的来源,
使用md5sum进行校验,确认文件是否与编译出来的e1000e.ko是否一致
将机器进行重启, 检查网卡是否被识别 做进一步确认
注意事项
问题虽然得到解决,但是还有几个细节的地方后续需要进一步确认:
网卡速率的问题 正常情况下网卡显示是千兆速率,如果不是的话,需要确认一下是否为网线的问题。
外置网卡的问题 网卡不识别问题的解决,需要手动重新进行编译。在板载网卡不能被识别的时候,我们是通过外置网卡或者无线网卡来解决gcc等软件包安装的问题。在使用USB转网卡的扩展坞(具体型号为:绿联 USB转千兆网口扩展坞 笔记本外置有线网卡网线转换头3.0分线器适用苹果电脑拓展坞HUB集线器RJ45转接器 ) 发现内核为4.15.0和内核为5.4.0的时候,两者表现不一样。内核为4.15.0的时候不能识别USB外置网卡。当时参考链接: Ubuntu Linux内核版本升级或降级到指定版本 在高内核版本进行gcc make make-guile的软件依赖包安装,然后在低内核版本下进行编译。最后发现,高内核版本(等于或者低于5.4.0-84-generic)同样可以解决网卡不能被识别的问题。
内核版本支持 我们在测试中发现,Ubuntu18.04系统的内核版本最高可支持5.4.0-84-generic 如果再高的话,同样的操作也会出现网卡不能识别的情况,因此需要把内核版本降到可用的范围内。因此需要禁止系统内核的自动更新操作。
因为时间匆忙和水平有限,难免有所纰漏,请大家多多指教。