最近组装的机器用的是CentOS 6.3 Final系统,内核中不识别这款PCI网卡Tenda Internal PCI Adapter (W322P+),需要手工编译其驱动。光盘中拷出for Linux的源码,解压到任意文件夹内,建议放在/opt/wireless下面。
腾达这款网卡用的芯片型号是RT2860,驱动器文件为:rt3562sta.o/rt3562sta.ko,支持的kernel版本:2.4/2.6。
1. 修改Makefile
set the “MODE = STA” in Makefile and chose the TARGET to Linux by set “TARGET = LINUX”
define the linux kernel source include file path LINUX_SRC
modify to meet your need.
在Makefile中确保第一二行为:
RT28xx_MODE = STA
TARGET = LINUX
确保PLATFORM = PC这行之前的注释符#去掉。
如果你修改过kernel的路径,那么你需要修改下面的地址。另外如果你的内核是2.4的,也需要修改下面的部分参数。
ifeq ($(PLATFORM),PC)
# Linux 2.6
LINUX_SRC = /lib/modules/$(shell uname -r)/build
# Linux 2.4 Change to your local setting
#LINUX_SRC = /usr/src/linux-2.4
LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/
CROSS_COMPILE =
endif
保存后,编辑os/linux/config.mk文件,开启各种需要的参数和功能。比如我开启了:
HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
HAS_QOS_DLS_SUPPORT=y
HAS_DOT11_N_SUPPORT=y
HAS_STATS_COUNT=y
HAS_RESOURCE_PRE_ALLOC=y
如果有夸平台编译,需要修改下面的cc和ld,以及flags。其他的不用管了。
最后回到主目录,make。
复制文件
cp RT2860STA.dat /etc/Wireless/RT2860STA/RT2860STA.dat
在os/linux/下会生成一个rt3562sta.ko文件(Kernel 2.6),insmod后即可使用,NetworkManager能识别网络。
重启后可能驱动不正常加载,移除后重新插入就行,我在/opt里写了个shell脚本:
#!/bin/sh
rmmod rt3562sta
insmod /home/hlx98007/wireless/os/linux/rt3562sta.ko
最后在/etc/rc.local中添加/opt/startup.sh一行,重启后会自动重新加载驱动,这样就直接就可以用了。