Ubuntu 22.04内核升级至6.5.0-21后r8168-dkms依赖不兼容问题求助
问题描述
我用的是Ubuntu 22.04,网卡是RTL8111/8168/8411 PCIe千兆以太网控制器。自带的驱动总会导致网络断开,所以我卸载了默认驱动,安装了r8168-dkms。
内核版本6.2.0-39时一切正常,但升级到6.5.0-21后,执行apt-get update出现了依赖错误:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies.
r8168-dkms : Depends: dkms (>= 3.0.3-4~) but 2.8.7-2ubuntu2.2 is installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
现在我想解决这个问题:如果执行apt --fix-broken install,系统会删除r8168-dkms包,虽然暂时能修复依赖,但重启后网卡就没法用了。有没有办法在不破坏系统的前提下升级dkms?
解决方案
嘿,我之前也碰到过类似的网卡驱动与内核兼容的问题,给你几个可行的办法试试:
1. 尝试从官方源升级dkms到满足依赖的版本
首先确保软件源是最新的,然后单独升级dkms:
sudo apt update sudo apt install --only-upgrade dkms
如果这个命令能成功把dkms版本升到>=3.0.3-4~,接下来重新安装r8168-dkms并适配新内核:
sudo apt install r8168-dkms # 重建驱动模块适配新内核 sudo dkms install r8168/$(dpkg -l r8168-dkms | grep ii | awk '{print $3}' | cut -d'-' -f1)
完成后重启系统,网卡应该就能正常工作了。
2. 手动编译安装适配6.5内核的r8168驱动
如果官方源的dkms版本无法升级到要求的版本,可以直接手动编译适配新内核的驱动:
- 先卸载当前有问题的r8168-dkms(注意别重启,保持网络连接):
sudo apt remove --purge r8168-dkms - 下载Realtek官方提供的r8168驱动源码(选择支持Linux内核6.5的版本),解压后进入源码目录:
- 执行编译安装:
sudo make clean sudo make sudo make install - 加载新驱动并更新initramfs确保重启后生效:
sudo modprobe r8168 sudo update-initramfs -u
3. 临时回退到稳定内核(应急方案)
如果上面的方法都不行,可以先回退到之前能用的6.2.0-39内核:
- 重启系统,在GRUB菜单中选择「Advanced options for Ubuntu」,然后选择内核6.2.0-39进入系统
- 进入系统后,锁定这个内核避免被自动升级:
sudo apt-mark hold linux-image-6.2.0-39-generic linux-headers-6.2.0-39-generic - 之后执行
sudo apt --fix-broken install修复依赖,r8168-dkms就能正常工作了,后续可以等官方更新适配6.5内核的r8168-dkms或者dkms版本后再升级。
备注:内容来源于stack exchange,提问作者syncerror

