在某台闲置的台式机上装了个pve跑虚拟机,偶尔会有网卡断连的情况,重启后恢复正常,在网上搜了一下,应该是pve自带的网卡驱动和物理机的网卡不匹配导致的,记一下网卡驱动替换的过程
环境信息
pve8.0.3 基于debian12
Linux pve 6.2.16-4-pve #1 SMP PREEMPT_DYNAMIC PVE 6.2.16-4 (2023-07-07T04:22Z) x86_64 GNU/Linux
操作流程
查看当前的驱动版本
root@pve:~# lspci | grep Eth 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15) root@pve:~# ethtool -i enp1s0 driver: r8169 version: 6.2.16-3-pve firmware-version: rtl8168h-2_0.0.2 02/26/15
可以看到pve自带的是r8169的驱动,而物理机的网卡是8168的
root@pve:~/r8168-8.051.02# lsmod | grep 816 r8169 114688 0
内核中加载的模块也是8169的
下载non-free软件包
这里本来是应该下载官网驱动源码来编译的,但官网驱动似乎还不支持linux6.x内核,也可能是缺什么依赖,编译有问题,所以用的现成的驱动
在debian的non-free软件源中找到:r8168-dkmswget http://ftp.cn.debian.org/debian/pool/non-free/r/r8168/r8168-dkms_8.051.02-2_all.deb mv ./r8168-dkms_8.051.02-2_all.deb /tmp/
安装dkms,r8168-dkms
apt install -y dkms pve-headers-6.2.16-3-pve apt install /tmp/r8168-dkms_8.051.02-2_all.deb
安装r8168-dkms之前,还要安装当前内核的头文件,头文件包在pve的付费订阅源中,这里配了Tuna的免费源,可以直接装
卸载旧内核模块
rmmod r8169
这一步敲完网卡会离线,要重启,也可以在后面跟重启命令
&& reboot
重启系统,查看驱动版本
root@pve:~# lsmod | grep r81 r8168 655360 0 root@pve:~# ethtool -i enp1s0 driver: r8168 version: 8.051.02-NAPI firmware-version:
驱动成功替换