本机环境:Thinkpad E440,Oracle Linux Server release 6.7(kernel 3.8.13-68.3.4.el6uek.x86_64)
本机无线网卡为RTL8723BE,若不知道自己的无线网卡类型,可使用以下的命令查看:
lspci | grep -i network
下面正式开始无线网络的配置。(本文介绍的是刚安装完系统,手边又没有网线的情况下直接配置无线网络的情况,因此可能有些步骤在已经配置好有线网络连接的情况下是不需要的)
1. 查看是否安装无线网卡驱动
iwconfig
若未安装无线网卡驱动,则会输出以下信息:
eth0 no wireless extensions.
lo no wireless extensions.
若已经安装无线网卡驱动,则输出信息应该像下面这样:
eth0 no wireless extensions.
wlan0 IEEE 802.11bgn ESSID:"CMCC-Ttaf"
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry long limit:7 RTS thr=2347 B Fragment thr:off
Encryption key:off
Power Management:off
lo no wireless extensions.
2. 下载安装相关依赖
首先是g++从源码安装的相关资源:
下载链接为:http://www.rpmfind.net/
2.1 在安装之前我们插播一个挂载U盘的操作,防止有些新手在这上面走弯路。
因为我的U盘是FAT32的文件系统(一般小容量U盘默认的文件系统),所以在此基础上我们执行挂载U盘操作。
首先执行以下命令,查看U盘设备名:
fdisk -l | grep FAT32
我的是/dev/sdb4/。
然后依次执行以下命令:
cd /mnt mkdir /usb mount /dev/sdb4 /mnt/usb cd /mnt/usb
即可看到自己U盘里的文件。
卸载U盘需要退出/mnt/usb文件夹,然后执行以下指令:
umount /mnt/usb
安装步骤:
rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm
rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm
rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
rpm -ivh cpp-4.4.7-18.el6.x86_64.rpm
rpm -Uvh libgcc-4.4.7-18.el6.x86_64.rpm
rpm -Uvh libgomp-4.4.7-18.el6.x86_64.rpm
rpm-ivh gcc-4.4.7-18.el6.x86_64.rpm
rpm -Uvh libstdc++-4.4.7-18.el6.x86_64.rpm
rpm -Uvh libstdc++-devel-4.4.7-18.el6.x86_64.rpm
rpm -ivh gcc-c++-4.4.7-18.el6.x86_64.rpm
输入以下指令,验证g++是否安装成功:
g++ --version
如果安装成功会输出相应的版本信息。
其次是Linux内核相关资源:
下载链接为:http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/x86_64/index.html
安装步骤:
rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm
rpm -Uvh libdtrace-ctf-0.5.0-2.x86_64.rpm
rpm -Uvh libdtrace-ctf-devel-0.5.0-2.x86_64.rpm
rpm -ivh dtrace-modules-3.8.13-68.3.4.el6uek-0.4.3-4.el6.x86_64.rpm
rpm -ivh kernel-uek-debug-3.8.13-68.3.4.el6uek.x86_64.rpm
rpm -ivh kernel-uek-debug-devel-3.8.13-68.3.4.el6uek.x86_64.rpm
rpm -ivh kernel-uek-devel-3.8.13-68.3.4.el6uek.x86_64.rpm
rpm -ivh kernel-uek-doc-3.8.13-68.3.4.el6uek.noarch.rpm
rpm -ivh kernel-uek-headers-3.8.13-26.el6uek.x86_64.rpm
3. 下载并从源码安装无线网卡驱动
链接:https://github.com/lwfinger/rtlwifi_new/tree/b2295f9c31eb1d43c53e9048329609b2680adcb1
因为我的内核版本较低,所以只能用这个commit的版本,如果内核版本大于3.17,那么可以使用目前(2018/2/22)最新版本。
如果不知道自己的内核版本,可以通过以下命令查看:
uname -r
获取源码之后我们并不能直接使用,首先我们将Makefile修改为如下所示(目的在于去除和RTL8723BE不相关驱动的编译过程,这一步是必须的,因为其他部分驱动编译会出错。):
SHELL := /bin/sh
CC = gcc
KVER ?= $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
FIRMWAREDIR := /lib/firmware/
PWD := $(shell pwd)
CLR_MODULE_FILES := *.mod.c *.mod *.o .*.cmd *.ko *~ .tmp_versions* modules.order Module.symvers
SYMBOL_FILE := Module.symvers
# Handle the move of the entire rtlwifi tree
ifneq ("","$(wildcard /lib/modules/$(KVER)/kernel/drivers/net/wireless/realtek)")
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/realtek/rtlwifi
else
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/rtlwifi
endif
#Handle the compression option for modules in 3.18+
ifneq ("","$(wildcard $(MODDESTDIR)/*.ko.gz)")
COMPRESS_GZIP := y
endif
ifneq ("","$(wildcard $(MODDESTDIR)/*.ko.xz)")
COMPRESS_XZ := y
endif
EXTRA_CFLAGS += -O2
obj-m := rtlwifi.o
rtlwifi-objs := \
base.o \
cam.o \
core.o \
debug.o \
efuse.o \
ps.o \
rc.o \
regd.o \
stats.o
obj-m += rtl_pci.o
rtl_pci-objs := pci.o
obj-m += rtl_usb.o
rtl_usb-objs := usb.o
obj-m += btcoexist/
obj-m += rtl8723be/
ccflags-y += -D__CHECK_ENDIAN__
all:
$(MAKE) -C $(KSRC) M=$(PWD) modules
install: all
ifeq (,$(wildcard ./backup_drivers.tar))
@echo Making backups
@tar cPf backup_drivers.tar $(MODDESTDIR)
endif
@mkdir -p $(MODDESTDIR)/btcoexist
@mkdir -p $(MODDESTDIR)/rtl8723be
@install -p -D -m 644 rtl_pci.ko $(MODDESTDIR)
@install -p -D -m 644 rtl_usb.ko $(MODDESTDIR)
@install -p -D -m 644 rtlwifi.ko $(MODDESTDIR)
@install -p -D -m 644 ./btcoexist/btcoexist.ko $(MODDESTDIR)/btcoexist
@install -p -D -m 644 ./rtl8723ae/rtl8723ae.ko $(MODDESTDIR)/rtl8723ae
ifeq ($(COMPRESS_GZIP), y)
@gzip -f $(MODDESTDIR)/*.ko
@gzip -f $(MODDESTDIR)/btcoexist/*.ko
@gzip -f $(MODDESTDIR)/rtl8*/*.ko
endif
ifeq ($(COMPRESS_XZ), y)
@xz -f $(MODDESTDIR)/*.ko
@xz -f $(MODDESTDIR)/btcoexist/*.ko
@xz -f $(MODDESTDIR)/rtl8*/*.ko
endif
@depmod -a $(KVER)
@#copy firmware images to target folder
@cp -fr firmware/rtlwifi/ $(FIRMWAREDIR)/
@echo "Install rtlwifi SUCCESS"
uninstall:
ifneq (,$(wildcard ./backup_drivers.tar))
@echo Restoring backups
@tar xvPf backup_drivers.tar
endif
@depmod -a
@echo "Uninstall rtlwifi SUCCESS"
clean:
@rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~ .*.o.d
@rm -fr rtl8*/*.mod.c rtl8*/*.mod rtl8*/*.o rtl8*/.*.cmd rtl8*/*.ko rtl8*/*~ rtl8*/*.cmd rtl8*/.*.o.d
@rm -fr bt*/*.mod.c bt*/*.mod bt*/*.o bt*/.*.cmd bt*/*.ko bt*/*~ bt*/*.cmd bt*/.*.o.d
@rm -fr .tmp_versions
@rm -fr Modules.symvers
@rm -fr Module.symvers
@rm -fr Module.markers
@rm -fr modules.order rtl8*/modules.order bt*/modules.order
修改完成后在rtlwifi_new目录下执行以下指令:
make install
然后执行:
modprobe rtl8723be
重启系统后你的网卡驱动应该已经安装成功,可执行以下指令验证:
iwconfig
4. 配置无线网络
首先安装wpa_supplicant。
挂载你安装OEL的系统盘,cd到Packages文件夹,通过以下命令查找wpa_supplicant包:
ll | grep wpa_supplicant
然后执行rpm -ivh 包名进行安装。
接下来编辑wpa_supplicant配置文件:
vi /etc/sysconfig/wpa_supplicant
按i,将文件编辑成如下形式:
# Use the flag "-i" before each of your interfaces, like so:
# INTERFACES="-ieth1 -iwlan0"
INTERFACES="-iwlan0"
# Use the flag "-D" before each driver, like so:
# DRIVERS="-Dwext"
DRIVERS="-Dwext"
# Other arguments
# -u Enable the D-Bus interface (required for use with NetworkManager)
# -f Log to /var/log/wpa_supplicant.log
# -P Write pid file to /var/run/wpa_supplicant.pid
# required to return proper codes by init scripts (e.g. double "start" action)
# -B to daemonize that has to be used together with -P is already in wpa_supplicant.init.d
OTHER_ARGS="-u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid"
按ESC退出文件编辑,再输入:wq保存并退出。
编辑/etc/sysconfig/network-scripts/ifcfg-wlan0文件如下:
DEVICE=wlan0
HWADDR=******
TYPE=Wireless
UUID=******
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
ESSID="CMCC-Ttaf"
NAME=wlan0
其中HWADDR值为你网卡的MAC地址,输入ifconfig命令可以在wlan0选项中查看到,UUID的值通过以下指令获取:
uuidgen wlan0
ESSID值为你自己要连接的WIFI名。
接下来配置/etc/wpa_supplicant/wpa_supplicant.conf文件:
wpa_passphrase your_wifi_name your_wifi_password >> /etc/wpa_supplicant/wpa_supplicant.conf
然后就可以使wpa_supplicant后台运行了,命令如下:
wpa_supplicant -B -Dwext -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
扫描可连接的无线网络:
iwlist wlan0 scan | grep ESSID
如果能够正常扫描到你/etc/wpa_supplicant/wpa_supplicant.conf里配置的无线网络,那么执行以下指令进行连接:
iwconfig wlan0 essid "CMCC-Ttaf"
接下来通过dhcp方式获取ip:
dhclient wlan0
命令执行完成后,你应该已经连接上无线网络了,可以ping下百度测试是否配置成功:
ping www.baidu.com