主板:华硕(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