1. 程式人生 > >OEL / RedHat linux 配置無線網路連線(含驅動安裝)

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