參考:桿菌大祭司> 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的區別