参考:杆菌大祭司> 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 包的版本必须要和内核版本一致
- 查看内核版本:uname -r
4.18.0-240.10.1.el8_3.x86_64 - 更换阿里源(可选)
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
- 指定版本下载,因为我的系统内核版本是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的区别