OEL / RedHat linux 配置無線網路連線(含驅動安裝)
本機環境: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++從原始碼安裝的相關資源:
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核心相關資源:
安裝步驟:
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. 下載並從原始碼安裝無線網絡卡驅動
因為我的核心版本較低,所以只能用這個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