一、硬件

主板:华硕(ASUS)

网卡:Realtek PCIe 2.5GbE Family Controller(r8125、8169、RTL8125)

CPU:11th Gen Intel(R) Core(TM) i7-11700K

二、背景

一台比较新的主机,配备了比较新的华硕主板,上面安了一个比较新的Realtek网卡,你要是准备安装的是Ubuntu20.04这种比较新的系统版本,那一点问题没有,直接去装就好了,将会非常顺利。但是,你要是因为某些需求,偏偏要装Ubuntu18.04这种老版系统,那你极可能遇到一个问题,就是装完系统之后,电脑无法连接以太网,甚至连右上角的有线连接标志都没有,这时候要怎么办呢?毫无疑问,手动安装网卡驱动吧。主要原因就是你的主板和网卡硬件版本太新了,而古老的18.04系统内核还比较low,不支持。

三、写在前面

首先你要先确定你的网卡和我的是同一个型号,这个你可以通过windows的设备管理器查看。或者win+r,打开cmd,输入systeminfo,也可以看到你的网卡型号。

四、干货

1)首先去官网下载驱动源码

Realtek PCIe FE / GBE / 2.5G / Gaming Ethernet Family Controller Software - REALTEKhttps://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software选择Unix下的 2.5G Ethernet LINUX driver r8125 for kernel up to 5.17

 也许你看到这个博客的时候,已经是百年以后,那时的Version早已不是9.009.01,但这不重要,直接下载就完事了

2)解压文件之后,在文件夹目录打开终端

sudo chmod +x autorun.sh
sudo ./autorun.sh

运行结果忘了截图,大概就长这样(从另一个博主那里搬来的)

此时,右上角的有线网连接标志应该就会出现了,当然确保你已经插好了网线,不然肯定是没有的

3)现在的网卡驱动只是临时有效,重启之后,网络会消失,所以我们还要接着设置一下

    a)打开“软件和更新”-->换成清华源或者阿里云都可以

    b)输入更新命令

sudo apt update
sudo apt upgrade
sudo apt-get install linux-headers-$(uname -r) linux-headers-generic build-essential dkms net-tools

     c)把刚才下载的驱动文件夹拷贝到系统目录下

sudo cp -rf ~/r8125-9.009.01 /usr/src

    d)创建一个dkms.conf文件,并进行下列操作

# 先进入目录,方便后续操作
cd /usr/src/r8125-9.009.01/
# 创建dkms配置文件
touch dkms.conf
# 打开文件
sudo gedit dkms.conf

# 写入以下内容(版本号根据你的实际情况进行修改)
PACKAGE_NAME=Realtek_r8125
PACKAGE_VERSION=9.009.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"

# 编译安装
sudo dkms add -m r8125 -v 9.009.01
sudo dkms build -m r8125 -v 9.009.01
sudo dkms install -m r8125 -v 9.009.01
sudo depmod -a
sudo modprobe r8125

    e)此时,可以通过 ifconfig 来查看以太网是否连接了

    f)但是,凡事都有个但是,当你的内核自动升级之后,网卡驱动就又不能用了,此时你要通过这条命令来移除之前编译过的驱动

sudo dkms remove r8125/9.009.01 --all

    g)当然,每次内核一升级,就去重装一次驱动,确实挺麻烦的,这里有两种方法可以减少麻烦的产生

# 方法一:写一个脚本,自动执行上诉所有操作

cd /usr/src/r8125-9.009.01/
touch net_recovery.sh
gedit net_recovery.sh
# 脚本内容 #
dkms remove r8125/9.009.01 --all
dkms install -m r8125 -v 9.009.01
depmod -a
modprobe r8125

chmod 777 net_recovery.sh
cd ~
ln -s /usr/src/r8125-9.009.01/net_recovery.sh ./

# 网卡失效时,直接终端输入
sudo ./net_recovery.sh
# 方法二:禁止内核更新

查看正在使用的内核
uname -r

禁止内核更新
sudo apt-mark hold linux-image-$(uname -r)
sudo apt-mark hold linux-image-extra-$(uname -r)

恢复内核更新
sudo apt-mark unhold linux-image-$(uname -r)
sudo apt-mark unhold linux-image-extra-$(uname -r)

修改Ubuntu默认开机启动的内核版本
sudo gedit /etc/default/grub
将 GRUB_DEFAULT=0 修改为 GRUB_DEFAULT="1> 3"
(注:1 代表主菜单的第二项Advanced options for Ubuntu;3代表1项目下面对应的子菜单里面的第4项;)

修改后保存退出,执行:
sudo update-grub

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐