当前位置: 首页 > backend >正文

【经验总结】Ubuntu 22.04.5 LTS 将内核从5.15.0-140 升级到6.8.0-60后纽曼无线网卡无法使用解决措施

【经验总结】Ubuntu 22.04.5 LTS 将内核从5.15.0-140 升级到6.8.0-60后纽曼无线网卡无法使用解决措施

  • 问题现象
  • 定位过程
  • 问题根因
  • 解决方案
    • 将内核内核从6.8.0-60 降级到5.15.0-140。
    • 1、回滚内核版本
    • 2、解决重启系统,找不到选择内核版本的菜单问题
    • 3、将新版本的kernel卸载掉
    • 4、在旧内核上重新安装无线网卡驱动
    • 5、切换到旧内核,发现显示不对,需要重新安装一下跟这个内核匹配的显卡驱动
  • 总结

问题现象

Ubuntu 22.04.5 LTS 将内核从5.15.0-140 升级到6.8.0-60后纽曼无线网卡无法使用。

纽曼 AC650 无线网卡相关的菜单不显示,无法通过wifi连接网络。

定位过程

通过 lsusb -v 输出 可以确认是 Realtek RTL8821CU 无线网卡(ID 0bda:c811) 已连接到系统,但存在驱动兼容性问题。

尝试手动安装 RTL8821CU 驱动,步骤如下所示:
sudo apt install git dkms build-essential
git clone https://github.com/brektrou/rtl8821CU.git
cd rtl8821CU
sudo ./dkms-install.sh

发现驱动编译失败,日志如下所示

$ sudo ./dkms-install.sh
About to run dkms install steps...
Creating symlink /var/lib/dkms/rtl8821CU/5.4.1/source -> /usr/src/rtl8821CU-5.4.1Kernel preparation unnecessary for this kernel. Skipping...Building module:
cleaning build area...
'make' KVER=6.8.0-60-generic........
........(bad exit status: 2)
ERROR (dkms apport): binary package for rtl8821CU: 5.4.1 not found
Error! Bad return status for module build on kernel: 6.8.0-60-generic (x86_64)
Consult /var/lib/dkms/rtl8821CU/5.4.1/build/make.log for more information.Kernel preparation unnecessary for this kernel. Skipping...Building module:
cleaning build area...
'make' KVER=6.8.0-60-generic................(bad exit status: 2)
ERROR (dkms apport): binary package for rtl8821CU: 5.4.1 not found
Error! Bad return status for module build on kernel: 6.8.0-60-generic (x86_64)
Consult /var/lib/dkms/rtl8821CU/5.4.1/build/make.log for more information.
Finished running dkms install steps.

查看驱动编译详细的日志

stevens@StevensSun-Desktop:~/workspace_github/rtl8821CU$ sudo grep -i error /var/lib/dkms/rtl8821CU/5.4.1/build/make.log -A5
/var/lib/dkms/rtl8821CU/5.4.1/build/os_dep/osdep_service.c:2618:16: error: implicit declaration of function ‘prandom_u32’; did you mean ‘get_random_u32’? [-Werror=implicit-function-declaration]
2618 | return prandom_u32();
| ^~~~~~~~~~~
| get_random_u32
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243:/var/lib/dkms/rtl8821CU/5.4.1/build/os_dep/osdep_service.o] 错误 1
make[2]: *** [/usr/src/linux-headers-6.8.0-60-generic/Makefile:1925:/var/lib/dkms/rtl8821CU/5.4.1/build] 错误 2
make[1]: *** [Makefile:240:__sub-make] 错误 2
make[1]: 离开目录“/usr/src/linux-headers-6.8.0-60-generic”
make: *** [Makefile:2217:modules] 错误 2

原因:Linux 6.8内核移除了prandom_u32()函数,改用get_random_u32()
影响:驱动代码未同步更新,导致编译中断

整体意思就是:RTL8821CU 驱动编译失败的主要原因是内核6.8.0-60-generic与驱动版本5.4.1存在兼容性问题。
既然是与驱动版本5.4.1有兼容性问题,那么是否有最新的驱动?由于无法访问github,通过gitee中转了一下,依然没有发现新的驱动。或许未来某天会有兼容6.x.x.x的补丁之后,再来尝试吧。

基于以上只剩下一条路了,就是将内核版本降到5.x.x.x。

问题根因

Realtek RTL8821CU 无线网卡驱动加载失败,核心问题在于芯片初始化过程中出现硬件兼容性错误。最终确定了是 RTL8821CU 驱动与内核6.8.0-60-generic 存在兼容性问题。

解决方案

将内核内核从6.8.0-60 降级到5.15.0-140。

在实际操作中会遇到一些问题,在这里统一记录下:

1、回滚内核版本

如果是我这种现象,其实5.15.0-140还是在的,不需要再使用如下命令安装一次内核。

sudo apt install linux-image-5.15.0-140-generic
sudo reboot

2、解决重启系统,找不到选择内核版本的菜单问题

默认的ubuntu启动的时候,是看不到选择内核的启动菜单的,需要手动修改grub配置,才行

sudo vim /etc/default/grub

修改如下配置为menu,意思是强制显示菜单。

GRUB_TIMEOUT_STYLE=menu

修改完grub文件,保存一下。
执行如下命令,更新grub 相关配置

sudo update-grub

重启电脑,就会看到启动菜单了,注意,内核选择是在高级选项中,一般是第二个,请根据实际情况选择。

3、将新版本的kernel卸载掉

其实系统启动的时候,并不会自动选择旧的内核,需要我们手动修改grub配置,才能解决。我的情况比较特殊,因为我需要使用这个无线网卡,根本就使用不了6.8.0-60内核,就干脆卸载掉算了。
特别提醒:你一定要明确你当前使用的内核不是 6.8.0-60,否则后边的操作都会问题,由于我也没操作过,如果你遇到了,请告诉我,嘿嘿。
使用如下命令,查询内核的版本

uname -r
#以下内容是执行以上命令后,我的电脑的显示
5.15.0-140-generic

使用如下命令进行卸载目标内核:

sudo apt purge linux-image-6.8.0-60-generic \linux-headers-6.8.0-60* \linux-modules-6.8.0-60-generic

注意这里,不要使用 如下命令自动卸载内核,他有自己的一套逻辑,保留当前使用的,保留一个最新的,还保留一个临近旧的内核,要保留三个内核,我晕,我就是要卸载掉最新的内核,你这是逗我玩吗?

sudo apt autoremove --purge

执行完后,记得执行如下命令,清理残留配置

sudo update-grub
sudo apt autoremove --purge

备注:如果这一步中有报错,不要怕,反复执行一遍也是可以的。

4、在旧内核上重新安装无线网卡驱动

sudo apt install git dkms build-essential
git clone https://gitee.com/stevens-sun/rtl8821CU.git
cd rtl8821CU
sudo ./dkms-install.sh 

备注:github国内还得靠梯子,使用gitee中转了一下代码,请自行甄别。原始驱动源代码地址:https://github.com/brektrou/rtl8821CU.git

这里一般就会编译和安装成功,如果编译还有问题,请自行问大模型助手。

5、切换到旧内核,发现显示不对,需要重新安装一下跟这个内核匹配的显卡驱动

以下操作仅供参考

sudo apt purge nvidia-*  
sudo apt install nvidia-driver-xxxx

执行第一条命令的时候,注意下是driver的版本号是多少,我的比较老,是470, 就执行如下命令

sudo apt install nvidia-driver-470

执行成功后,重启电脑就OK来。

总结

遇到软件问题不要慌,可以多跟大模型交流一下,我这里使用的事360多纳米AI 大模型 https://bot.n.cn/,你也可以使用其他的大模型,非常方便。

http://www.xdnf.cn/news/5193.html

相关文章:

  • C++ 命令模式详解
  • R 语言科研绘图 --- 桑基图-汇总
  • Python网络爬虫:从入门到实践
  • uniapp-商城-51-后台 商家信息(logo处理)
  • 33号远征队 - SDKDump
  • Spring 必会之微服务篇(2)
  • 前端进化论·JavaScript 篇 · 数据类型
  • [学习]RTKLib详解:sbas.c与rtcm.c
  • Linux 阻塞和非阻塞 I/O 简明指南
  • [架构之美]linux常见故障问题解决方案(十九)
  • 数据结构与算法分析实验11 实现顺序查找表
  • vue注册用户使用v-model实现数据双向绑定
  • 202536 | KafKa生产者分区写入策略+消费者分区分配策略
  • 0.环境初始化
  • 基于Spring Boot + Vue的高校心理教育辅导系统
  • uniapp小程序中实现无缝衔接滚动效果
  • Mysql中in和exists的区别?
  • 神经网络极简入门技术分享
  • JavaScript基础-三元表达式
  • Nakama:让游戏与应用更具互动性和即时性
  • 用Python绘制动态彩色ASCII爱心:技术深度与创意结合
  • Ajax基础
  • ui组件二次封装(vue)
  • PyTorch API 7 - TorchScript、hub、矩阵、打包、profile
  • 互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-2
  • 如何删除网上下载的资源后面的文字
  • AI生成视频推荐
  • ragflow报错:KeyError: ‘\n “序号“‘
  • 【Linux学习笔记】系统文件IO之重定向原理分析
  • 第七章 数据库编程