Linux下移植和配置wpa_supplicant
2016-06-14 11:19
295 查看
宿主机:Ubuntu 12.04 LTS
开发板:NUC970 (kernel version 3.10.x)
交叉编译器:arm-linux-4.3
无线网卡类型:RTL8188ETV
需要文件:wpa_supplicant-0.7.3 , openssl-0.9.8e
wpa_supplicant源码包,下载网站:
http://w1.fi/wpa_supplicant/
openssl库,下载网站:
www.openssl.org/source/openssl-0.9.8e.tar.gz
源码包放在 /wpa_tools 目录
1.编译 openssl 库
执行以下指令:
cd /wpa_tools
解压openssl-0.9.8e tar xvfz openssl-0.9.8e.tar.gz -C ./
解压wpa_supplicant-0.7.3 tar xvfz wpa_supplicant-0.7.3.tar.gz -C ./
将 wpa_supplicant-0.7.3/patches 中的补丁复制到 openssl-0.9.8e 目录
cp -a wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch ../../openssl-0.9.8e
给 openssl-0.9.8e 打补丁
cd ../../openssl-0.9.8e
patch -p1 < ./openssl-0.9.8e-tls-extensions.patch
在当前目录建立一个 tmp 目录,用来安装openssl
mkdir tmp
修改 Makefile
CC= arm-linux-gcc
AR= arm-linux-ar $(ARFLAGS) r
RANLIB= arm-linux-ranlib
INSTALLTOP=/wpa_tools/openssl-0.9.8e/tmp
OPENSSLDIR=/wpa_tools/openssl-0.9.8e/tmp
执行 make && make install 安装
安装完成后,在 /wpa_tools/openssl-0.9.8e/tmp 会生成 openssl 库
后面编译 wpa_supplicant 会依赖 openssl 库,重点关注 lib 和 include 文件夹
2.编译 wpa_supplicant
cd /wpa_tools/wpa_supplicant-0.7.3/wpa_supplicant
复制配置文件:cp defconfig .config
修改配置文件 .config
在文件里添加以下内容
CC= arm-linux-gcc -L/wpa_tools/openssl-0.9.8e/tmp/lib
CFLAGS += -I/wpa_tools/openssl-0.9.8e/tmp/include/
LIBS += -L/wpa_tools/openssl-0.9.8e/tmp/lib/
执行 make
编译完成后,在 wpa_supplicant 目录下,会生成 wpa_supplicant ,wpa_cli ,wpa_passphrase 三个应用程序
3. 配置 wpa_supplicant
复制这三个应用程序 和 wpa_supplicant.conf 到 开发板的根文件系统
wpa_supplicant.conf 存放到 /etc 目录
三个应用程序存放在 /bin 目录
无线网卡参数
ssid:test
密码:12345678
安全类型:WPA2-PSK
使用 wpa_passphrase 来生成无线接入点配置文件,
在开发板的终端执行:
wpa_passphrase test 12345678 >> /etc/wpa_supplicant.conf
其中,test 为ssid ,12345678 为链接密码,生成的配置信息保存在 /etc/wpa_supplicant.conf
这时 /etc/wpa_supplicant.conf 文件的内容为 :
network={
ssid="test"
#psk="12345678"
psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb
}
创建文件夹 mkdir -p /var/run/wpa_supplicant
继续在 /etc/wpa_supplicant.conf 文件中添加内容,完成后如下所示:
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
ssid="test"
key_mgmt=WPA-PSK
scan_ssid=1
proto=RSN
psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb
}
以下是对配置文件的解释:可参考:http://blog.csdn.net/ziyouwa/article/details/12081009
ctrl_interface=/var/run/wpa_supplicant 尽量不要修改此内容,否则无线网卡可能不工作
ap_scan=1 使用wpa_supplicant来扫描和选择AP
network里面的内容:
ssid:无线接入点名称
psk:加密后的连接密码
key_mgmt:认证密钥管理协议,有以下解释(出自 wpa_supplicant 的官方配置文档)
# key_mgmt: list of accepted authenticated key management protocols ---支持的协议列表
# WPA-PSK = WPA pre-shared key (this requires 'psk' field) ---一般都是这个,这就包括了WPA、WPA2开始的那些方式
# WPA-EAP = WPA using EAP authentication ---这个就是WEP开头的,猜的,求验证
# IEEE8021X = IEEE 802.1X using EAP authentication and (optionally) dynamically
# generated WEP keys
# NONE = WPA is not used; plaintext or static WEP could be used ---这个是开放的,没密码,联通、电信之类的就这个
# WPA-PSK-SHA256 = Like WPA-PSK but using stronger SHA256-based algorithms
# WPA-EAP-SHA256 = Like WPA-EAP but using stronger SHA256-based algorithms
# If not set, this defaults to: WPA-PSK WPA-EAP ---如果未设置,默认支持WAP、WEP开头那些
scan_ssid:如果无线接入点是隐藏的,这个配置项是必须的,否则无法找到接入点
proto:无线接入协议,有以下解释(出自 wpa_supplicant 的官方配置文档)
# proto: list of accepted protocols ---支持的协议列表
# WPA = WPA/IEEE 802.11i/D3.0
# RSN = WPA2/IEEE 802.11i (also WPA2 can be used as an alias for RSN) ---也能使用WPA2,它只是RSN的一个别名而已
# If not set, this defaults to: WPA RSN ---如果不设置,默认就是WPA RSN,即全部支持
pairwise:加密方式,这个选项没有写进network,采用默认配置,有以下解释(出自 wpa_supplicant 的官方配置文档)
# pairwise: list of accepted pairwise (unicast) ciphers for WPA ---WPA可用的加密方式列表
# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0] ---看到没,这个就是AES,换了马甲而已
# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0] ---TKIP 这个倒是没变
# NONE = Use only Group Keys (deprecated, should not be included if APs support
# pairwise keys) ---这个估计很少用
# If not set, this defaults to: CCMP TKIP ---不设置的话是CCMP TKIP,看似正确,其实有些路由器无法自动识别,只能二选一,很坑爹。
添加完内容后,执行以下指令,测试无线网卡:
加载无线网卡驱动 insmod 8188eu.ko
关闭有线网卡:ifconfig eth0 down
打开无线网卡:ifconfig wlan0 up
设置无线网卡静态ip:ifconfig wlan0 192.168.1.123
执行以下指令,使 wpa_supplicant 后台运行
wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf &
参数说明:
-Dwext 驱动协议名称
-iwlan0 使用的无线网卡
-c/etc/wpa_supplicant.conf 无线接入点配置文件路径
& 后台运行
测试是否连接成功:
wpa_cli -iwlan0 status
ping 192.168.1.48
ping www.baidu.com
开发板:NUC970 (kernel version 3.10.x)
交叉编译器:arm-linux-4.3
无线网卡类型:RTL8188ETV
需要文件:wpa_supplicant-0.7.3 , openssl-0.9.8e
wpa_supplicant源码包,下载网站:
http://w1.fi/wpa_supplicant/
openssl库,下载网站:
www.openssl.org/source/openssl-0.9.8e.tar.gz
源码包放在 /wpa_tools 目录
1.编译 openssl 库
执行以下指令:
cd /wpa_tools
解压openssl-0.9.8e tar xvfz openssl-0.9.8e.tar.gz -C ./
解压wpa_supplicant-0.7.3 tar xvfz wpa_supplicant-0.7.3.tar.gz -C ./
将 wpa_supplicant-0.7.3/patches 中的补丁复制到 openssl-0.9.8e 目录
cp -a wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch ../../openssl-0.9.8e
给 openssl-0.9.8e 打补丁
cd ../../openssl-0.9.8e
patch -p1 < ./openssl-0.9.8e-tls-extensions.patch
在当前目录建立一个 tmp 目录,用来安装openssl
mkdir tmp
修改 Makefile
CC= arm-linux-gcc
AR= arm-linux-ar $(ARFLAGS) r
RANLIB= arm-linux-ranlib
INSTALLTOP=/wpa_tools/openssl-0.9.8e/tmp
OPENSSLDIR=/wpa_tools/openssl-0.9.8e/tmp
执行 make && make install 安装
安装完成后,在 /wpa_tools/openssl-0.9.8e/tmp 会生成 openssl 库
后面编译 wpa_supplicant 会依赖 openssl 库,重点关注 lib 和 include 文件夹
2.编译 wpa_supplicant
cd /wpa_tools/wpa_supplicant-0.7.3/wpa_supplicant
复制配置文件:cp defconfig .config
修改配置文件 .config
在文件里添加以下内容
CC= arm-linux-gcc -L/wpa_tools/openssl-0.9.8e/tmp/lib
CFLAGS += -I/wpa_tools/openssl-0.9.8e/tmp/include/
LIBS += -L/wpa_tools/openssl-0.9.8e/tmp/lib/
执行 make
编译完成后,在 wpa_supplicant 目录下,会生成 wpa_supplicant ,wpa_cli ,wpa_passphrase 三个应用程序
3. 配置 wpa_supplicant
复制这三个应用程序 和 wpa_supplicant.conf 到 开发板的根文件系统
wpa_supplicant.conf 存放到 /etc 目录
三个应用程序存放在 /bin 目录
无线网卡参数
ssid:test
密码:12345678
安全类型:WPA2-PSK
使用 wpa_passphrase 来生成无线接入点配置文件,
在开发板的终端执行:
wpa_passphrase test 12345678 >> /etc/wpa_supplicant.conf
其中,test 为ssid ,12345678 为链接密码,生成的配置信息保存在 /etc/wpa_supplicant.conf
这时 /etc/wpa_supplicant.conf 文件的内容为 :
network={
ssid="test"
#psk="12345678"
psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb
}
创建文件夹 mkdir -p /var/run/wpa_supplicant
继续在 /etc/wpa_supplicant.conf 文件中添加内容,完成后如下所示:
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
ssid="test"
key_mgmt=WPA-PSK
scan_ssid=1
proto=RSN
psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb
}
以下是对配置文件的解释:可参考:http://blog.csdn.net/ziyouwa/article/details/12081009
ctrl_interface=/var/run/wpa_supplicant 尽量不要修改此内容,否则无线网卡可能不工作
ap_scan=1 使用wpa_supplicant来扫描和选择AP
network里面的内容:
ssid:无线接入点名称
psk:加密后的连接密码
key_mgmt:认证密钥管理协议,有以下解释(出自 wpa_supplicant 的官方配置文档)
# key_mgmt: list of accepted authenticated key management protocols ---支持的协议列表
# WPA-PSK = WPA pre-shared key (this requires 'psk' field) ---一般都是这个,这就包括了WPA、WPA2开始的那些方式
# WPA-EAP = WPA using EAP authentication ---这个就是WEP开头的,猜的,求验证
# IEEE8021X = IEEE 802.1X using EAP authentication and (optionally) dynamically
# generated WEP keys
# NONE = WPA is not used; plaintext or static WEP could be used ---这个是开放的,没密码,联通、电信之类的就这个
# WPA-PSK-SHA256 = Like WPA-PSK but using stronger SHA256-based algorithms
# WPA-EAP-SHA256 = Like WPA-EAP but using stronger SHA256-based algorithms
# If not set, this defaults to: WPA-PSK WPA-EAP ---如果未设置,默认支持WAP、WEP开头那些
scan_ssid:如果无线接入点是隐藏的,这个配置项是必须的,否则无法找到接入点
proto:无线接入协议,有以下解释(出自 wpa_supplicant 的官方配置文档)
# proto: list of accepted protocols ---支持的协议列表
# WPA = WPA/IEEE 802.11i/D3.0
# RSN = WPA2/IEEE 802.11i (also WPA2 can be used as an alias for RSN) ---也能使用WPA2,它只是RSN的一个别名而已
# If not set, this defaults to: WPA RSN ---如果不设置,默认就是WPA RSN,即全部支持
pairwise:加密方式,这个选项没有写进network,采用默认配置,有以下解释(出自 wpa_supplicant 的官方配置文档)
# pairwise: list of accepted pairwise (unicast) ciphers for WPA ---WPA可用的加密方式列表
# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0] ---看到没,这个就是AES,换了马甲而已
# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0] ---TKIP 这个倒是没变
# NONE = Use only Group Keys (deprecated, should not be included if APs support
# pairwise keys) ---这个估计很少用
# If not set, this defaults to: CCMP TKIP ---不设置的话是CCMP TKIP,看似正确,其实有些路由器无法自动识别,只能二选一,很坑爹。
添加完内容后,执行以下指令,测试无线网卡:
加载无线网卡驱动 insmod 8188eu.ko
关闭有线网卡:ifconfig eth0 down
打开无线网卡:ifconfig wlan0 up
设置无线网卡静态ip:ifconfig wlan0 192.168.1.123
执行以下指令,使 wpa_supplicant 后台运行
wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf &
参数说明:
-Dwext 驱动协议名称
-iwlan0 使用的无线网卡
-c/etc/wpa_supplicant.conf 无线接入点配置文件路径
& 后台运行
测试是否连接成功:
wpa_cli -iwlan0 status
ping 192.168.1.48
ping www.baidu.com
相关文章推荐
- Linux里设置环境变量的方法(export PATH)
- linux常用的查看设备的命令
- 在Linux CentOS上编译并安装Clang 3.5.0,适用于Redhat和Clang3.8
- linux yum命令详解
- Linux各发行版本及其软件包管理方法
- 【linux】windows和linux编码相互转换
- linux编程之mprotect
- 更新CentOS 6.7源为阿里源
- Linux(1)Linux常用命令_搜索命令_grep命令
- linux安装python环境
- Linux查看端口使用状态、关闭端口方法
- Linux环境下最新版GCC安装总结--详细说明附案例(CentOS下安装最新版GCC 5.3.0)
- inotify-tools+rsync实时同步文件的配置方法(linux)
- Linux如何在系统启动时自动加载模块
- Linux进程间通信——使用信号量
- linux 命令发送 邮件
- linux文件压缩命令
- Linux中jdk的安装
- Linux系统相关配置
- Linux系统相关配置