新装的Linux没法有线联网,查了一下是网卡型号和驱动不匹配的原因。(如果是没有驱动,可以查看网卡型号,然后跳到下载驱动那里看)网上驱动不匹配的解决方法基本都是联网的终端命令,但是驱动不匹配没网,因此写一篇不需要联网的方法。
条件:一台可以联网的电脑(用来下载驱动)、Ubuntu电脑、u盘(传驱动)、Ubuntu系统盘(里面有dkms、gcc等)
先查看驱动
lspci -k
在kernel modules那里显示驱动版本
再查看网卡
lspci | grep net
会显示device的型号
在我这里,驱动版本是r8169,而显卡是8125,因此是显卡和驱动不匹配
首先要卸载之前的r8169驱动,不然重启还是默认r8169
查看驱动位置
modinfo r8169 | grep filename
根据位置删除r8169.ko
sudo rm -rf 替换为上一步找到的位置/r8169.ko
卸载驱动(很多次才成功)
sudo rmmod r8169
卸载后看一下是否卸载成功,如果kernel modules里没有r8169就成功了
lspci -k
找一台有网的电脑下载螃蟹卡的驱动
www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
选择Linux的r8125下载,后面的version是版本号也要记住,我下载的是r8125 v9.011.01
下载后通过u盘拷到Ubuntu电脑
由于是新装的ubuntu,可能没有dkms,可以从ubuntu的安装u盘中找到他们并安装(dkms依赖gcc、make等需要把他们一起安装)
可以参考这篇文章:离线安装dkms
将下载好的驱动解压(注意驱动号和版本号,要替换成自己下载的,后面也是)
sudo tar xvf r8125-9.010.01.tar.bz2 -C /usr/src
进入到/usr/src/配置dkms
cd /usr/src/r8125-9.010.01
touch dkms.conf
输入:
PACKAGE_NAME=Realtek_r8125
PACKAGE_VERSION=9.010.01
DEST_MODULE_LOCATION=/updates/dkms
BUILT_MODULE_NAME=r8125
BUILT_MODULE_LOCATION=src/
MAKE="'make' -C src/ all"
CLEAN="'make' -C src/ clean"
AUTOINSTALL="yes"
编译dkms并挂载r8125
sudo dkms add -m r8125 -v 9.010.01
sudo dkms build -m r8125 -v 9.010.01
sudo dkms install -m r8125 -v 9.010.01
sudo depmod -a
sudo modprobe r8125
问题:
如果最开始没有卸载r8169,可能会出现:modprobe: ERROR: could not insert ‘r8125’: Exec format error
解决:
先按照上文的方法卸掉r8169
把r8125卸载,从来一遍挂载编译
sudo dkms remove r8125/9.010.01 --all
cd /usr/src/r8125-9.010.01
sudo dkms add -m r8125 -v 9.010.01
sudo dkms build -m r8125 -v 9.010.01
sudo dkms install -m r8125 -v 9.010.01
sudo depmod -a
sudo modprobe r8125
参考:极智开发、YuanbaoQiang