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

时间:2022-08-12 08:37:53

参考:杆菌大祭司> 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的区别