Centos8.3安装broadcom(博通)BCM43142无线网卡驱动,Centos8没有wifi选项(No wifi adapter found centos)解决办法


参考:杆菌大祭司> https://www.jianshu.com/p/3cb41b7b8fec

第一步:查看网卡型号,确认无线网卡型号为BCMXXX

lspci | grep Network # 无线网卡型号
lspci | grep Ethernet # 有线网卡型号

我的型号:

  • 08:00.0 Network controller: Broadcom Inc. and subsidiaries BCM43142 802.11b/g/n (rev 01) --无线网卡:BCM43142 博通
  • 09:00.0 Ethernet controller: Qualcomm Atheros QCA8172 Fast Ethernet (rev 10)
    如果你的网卡也是博通,很遗憾,你和我一样幸运,请继续操作

第二步:连接有线网,下载rpmfusion源(因为自带的源没有博通的网卡驱动)

注意:此处需要最好访问https://download1.rpmfusion.org,找到当前系统对应的包

sudo yum install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm --el:centos适用, --*8.noarch.rpm:centos8适用
sudo yum install https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm

第三步:确保 kernel-devel 包的版本必须要和内核版本一致

  1. 查看内核版本:uname -r
    4.18.0-240.10.1.el8_3.x86_64
  2. 更换阿里源(可选)
    mv /etc/yum.repos.d/fedora.repo fedora.repo.bak
    mv /etc/yum.repos.d/fedora-updates.repo fedora-updates.repo.bak
    wget -O /etc/yum.repos.d/fedora.repo http://mirrors.aliyun.com/repo/fedora.repo
    wget -O /etc/yum.repos.d/fedora-updates.repo http://mirrors.aliyun.com/repo/fedora-updates.repo
  3. 指定版本下载,因为我的系统内核版本是4.18.0-240.10.1.el8_3.x86_64
    sudo dnf install kernel-devel -4.18.0-240.10.1.el8_3.x86_64

第四步:安装驱动

  • broadcom-wl:专有的 Broadcom STA 驱动
    sudo dnf install broadcom-wl akmod-wl akmods
    sudo akmods
    sudo dnf update

最后,重启电脑,如果有无线了,就此结束,如果没有,进行下一步。

sudo depmod -a
sudo modprobe wl

  • 再重启电脑,执行:ifconfig #查看无线网卡状态,出现wlp**
    设置中wifi选项出现,
    搞定!

补充概念(填坑):

Linux Kernel有一大特性就是模块化,通过kernel module(内核模块,Fedora中缩写作kmod)来扩展内核功能,其中,最常见的一类内核模块就是驱动程序(driver)。
由于许可证或使用规模等原因(此坑就是因为centos没有博通许可),一些硬件的驱动无法进入kernel,只能通过内核模块的形式来加载使用(本文采用的原理)
在Fedora中如果你启用了rpmfusion-nonfree源,你会看到大量kmod-打头的软件包,大多都是rpmfusion帮我们编译、打包好的各类私有驱动(比如nv idia、ati的显卡驱动,broadcom的网卡驱动等等)。
几乎每一个kmod-软件包都有一个对应的akmod-软件包,akmod是能够自动编译、安装的kmod。
由于内核模块是安装在某个特定的内核上的,当更新内核后必须重新给新内核安装内核模块,因而如何实现自动化的模块安装、管理一直是一个令人头痛的问题。
解决这些问题的银弹就是akmods系统,通过上文所述的方法来实现自动安装,可以做到自动、及时为所有新内核装上模块。
所以我们在安装私有驱动的时候其实只需要装上相应的akmod包即可了,而不再需要kmod。
这和debian系的dkms是一样的(Ubuntu下的私有驱动都是通过dkms来安装的)。
参考资料:kmod与akmod的区别