最近要使用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!