最近要使用linux系統,安裝linux後發現沒有無線網絡,猜測是由於該linux系統沒有支持的驅動,遂準備本身編譯安裝驅動,撰寫此文予以記錄。node
更新:雖然這種方法成功實現驅動bcm43142,可是內核版本的不一致可能會致使其餘問題,我暫時發現的是,電腦背光調整失靈,猜測也是由於某些驅動版本與內核版本不一致引起。linux
[root@king ~]# lspci|grep Network #列出pci設備並過濾關鍵字Network 03:00.0 Network controller: Broadcom Corporation BCM43142 802.11b/g/n (rev 01)
發現無線網卡型號爲BCM43142,支持802.11b/g/n協議vim
hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz
點我下載 密cmet
下載拷貝進u盤,將源碼包拷貝至/usr網絡
可直接經過yum命令安裝yum install -y gcc
,看到Complete!便可。
提醒:yum命令安裝軟件時雖然能夠解決依賴性問題,可是也不可避免影響到移除軟件時的依賴性問題,特別是不要安裝高於你係統版本的軟件包,不然因爲依賴性會形成一系列的麻煩。less
可先查看yum源中的包與內核版本是否一致,因爲我安裝的是redhat7.2,可是個人yum源掛載的是redhat7.0的鏡像,因此kernel版本與kernel-headers,kerner-devel 不一致是天然而然的,查看方法以下:ide
[root@king ~]# yum list|egrep "kernel-headers|kernel-devel" kernel-devel.x86_64 3.10.0-123.el7 @httpd_iso kernel-headers.x86_64 3.10.0-123.el7 @httpd_iso [root@king ~]# uname -r 3.10.0-327.el7.x86_64
當yum源中kernel-headers,kerner-devel版本與kernel版本不一致,有兩種解決辦法,一是本身去下載和內核版本一致的kernel-headers,kerner-devel rpm包並安裝,固然過程當中提示須要安裝各類依賴性的包,又要去下載對應包進行安裝,顯然太麻煩,因此我採用第二種方法,安裝此yum源中的kernel並今後kernel啓動,再經過yum安裝kernel-headers,kerner-devel 工具
查看yum源中kernel版本ui
[root@king ~]# yum list|grep kernel.x86_64 kernel.x86_64 3.10.0-327.el7 @httpd_iso
安裝kernel,直接yum install -y kernel
,看到Complete!後輸入reboot重啓,選擇重新安裝的內核版本啓動,開機後打開終端並輸入.net
[root@king ~]# yum install -y kernel-headers kernel-devel
看到Complete!後輸入debug
[root@king ~]# yum list installed |egrep "kernel*" kernel.x86_64 3.10.0-123.el7 @httpd_iso kernel-devel.x86_64 3.10.0-123.el7 @httpd_iso kernel-headers.x86_64 3.10.0-123.el7 @httpd_iso
發現版本一致,能夠進行下一步
拷貝源碼包並解壓
[root@king ~]# mkdir /usr/local/wireless [root@king ~]# cp /usr/hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz /usr/local/wireless [root@king ~]# cd /usr/local/wireless [root@king ~]# tar zxf hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz [root@king wireless]# ls hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz lib Makefile src
編譯
[root@king wireless]# make API=CFG80211 KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd` make[1]: Entering directory `/usr/src/kernels/3.10.0-123.el7.x86_64' CFG80211 API specified in command line Using CFG80211 API LD /usr/local/wireless/built-in.o CC [M] /usr/local/wireless/src/shared/linux_osl.o CC [M] /usr/local/wireless/src/wl/sys/wl_linux.o CC [M] /usr/local/wireless/src/wl/sys/wl_iw.o CC [M] /usr/local/wireless/src/wl/sys/wl_cfg80211_hybrid.o LD [M] /usr/local/wireless/wl.o Building modules, stage 2. CFG80211 API specified in command line Using CFG80211 API MODPOST 1 modules CC /usr/local/wireless/wl.mod.o LD [M] /usr/local/wireless/wl.ko make[1]: Leaving directory `/usr/src/kernels/3.10.0-123.el7.x86_64'
沒有報錯
[root@king wireless]# ls built-in.o modules.order wl.mod.c hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz Module.symvers wl.mod.o lib src wl.o Makefile wl.ko
生成wl.ko文件,此文件就是咱們須要的驅動文件
驅動文件安裝
[root@king wireless]# make install install -D -m 755 wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless
執行如下語句,去除已加載的模塊
[root@king wireless]# modprobe -r b43 [root@king wireless]# modprobe -r bcma [root@king wireless]# modprobe -r ssb [root@king wireless]# modprobe -r bcm
而後編輯配置文件
[root@king wireless]# vim /etc/modprobe.d/blacklist.conf blacklist b43 blacklist ssb blacklist bcma blacklist bcm
加載新的驅動
[root@king wireless]# modprobe cfg80211 [root@king wireless]# modprobe lib80211 [root@king wireless]# insmod wl.ko [root@king wireless]# modprobe wl
輸入reboot重啓系統,而後執行如下語句
[root@king ~]# lsmod|grep wl wl 6441478 0 cfg80211 482668 1 wl
發現驅動已經加載,右上角出現wifi選項,能夠鏈接wifi啦,Enjoying it!