马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
新机器配了 Realtek 的 RTL8852BE 无线网卡,装完 Linux 发现搜不到 Wi-Fi,或者能搜到连不上。原因很清楚:这颗芯片对应的内核模块不在主线内核里,厂商又没有给 Linux 驱动,得自己编译一个开源驱动来补。这篇把从零到能上网的完整过程写下来,包括两条分支的区别和几个必踩的坑。
一、这个驱动要解决的问题
RTL8852BE 是一颗支持 Wi-Fi 6 也就是 802.11ax 的无线网卡芯片。它的问题在于主线内核没有内置对应的驱动模块,所以装完系统后无线接口根本不出现。开源社区维护的这个项目就是补这一块,装上之后能拿到完整的 Wi-Fi 6 能力,比老驱动在速率和抗干扰上都有明显改善。
二、项目本身:C 语言写的内核模块
这个驱动是用 C 语言写的,这没什么好解释的——Linux 内核模块开发本来就是 C 的标准领地。理解这一点决定了后面所有操作:它不是一个简单的用户态程序,编译产物是要加载进内核的模块,所以要和当前内核版本严格对应,编译工具链和内核头文件缺一不可。
三、编译前先备好工具链
Ubuntu 和 Debian 系先装一组基础编译环境和当前内核的头文件,bc 也要带上,很多内核模块的编译脚本会调它;Fedora 系则装对应的 kernel-headers、kernel-devel、make、automake、cmake、gcc 这组:
sudo apt-get update
sudo apt-get install build-essential linux-headers-$(uname -r) bc
sudo dnf install kernel-headers kernel-devel-$(uname -r) make automake cmake gcc gcc-c++ bc
linux-headers 的版本必须和当前内核完全一致,用 uname -r 取最稳。装错版本的结果是编译到一半报头文件找不到,回头再装一遍纯浪费时间。
四、克隆源码:两条分支的区别
项目在代码托管平台上,仓库地址在下面这条命令里。这里有个关键分岔:内核版本低于 5.18 的系统用默认分支;等于或高于 5.18 的系统要切到 dev 分支,因为新内核的接口有变化,默认分支在新内核上编译会失败。这条规则是这一步唯一需要记的事:
git clone rtl8852be 仓库地址
cd rtl8852be
新机器上基本都是 5.18 以上,所以绝大多数情况要的是 dev 分支。
五、编译安装与加载
进目录后直接 make 并行编译,编译完装到模块目录,再用 modprobe 把模块加载进来。两步对新旧分支都一样:
make -j8
sudo make install
sudo modprobe 8852be
六、验证模块真的起来了
加载完先用这条命令看模块有没有进内核列表:
lsmod | grep 8852be
能 grep 到 8852be 就说明驱动加载成功。这一步别跳过,很多人直接去连 Wi-Fi 连不上又回头查半天,其实问题就在模块压根没加载。
七、连接与配置:nmcli 与 iwconfig
驱动装好之后通常不需要额外配置文件,系统会自动识别网卡。要连网络有两种方式:图形界面里直接选,或者命令行用 nmcli 连;老一点的工具 iwconfig 也还能看接口状态。推荐先 nmcli dev status 看接口有没有亮起来,再 nmcli dev wifi connect 网络名 password 密码 连上去。
八、踩坑清单
- make 报内核头文件错误:linux-headers 版本和 uname -r 不一致,重装对应版本。
- 默认分支编译失败:内核已经在 5.18 以上,切到 dev 分支再编。
- make install 成功但 modprobe 报未知符号:模块没编出对应版本,make clean 后重编一次。
- 重启后无线又没了:模块没进 initramfs,重启后重新 modprobe 一次,或者把加载写进模块配置文件。
- 能搜到信号但连不上:多半是固件没跟着装上,检查项目编译产物里有没有固件目录。
九、小结
整条链路就是:装编译环境和内核头文件、按内核版本选分支克隆、make 加 make install、modprobe 加载、lsmod 验证、nmcli 连网。五步之后还上不了网,就回到踩坑清单逐条对。这类网卡驱动问题本身不难,难的是分支选型和头文件版本这两处,把这两点固定住,剩下的都是例行操作。
qidao123.com企服评测-应用市场 编辑提示
|