0)hostapd是什么:
   通过Hostapd可以将无线网卡切换为AP/Master模式,通过修改配置文件,可以建立一个开放式的(不加密)的,WEPWPAWPA2的无线网络。并且通过修改配置文件可以设置无线网卡的各种参数,包括频率,信号,beacon包时间间隔,是否发送beacon包,如果响应探针请求等等当用以wifi的时候,作为station,工作在managed模式,有后台进程wpa_supplicant对认证管理。


工作在sofap的时候,作为AP; 工作在master模式,由后台进程hostapd做认证处理。

Master模式: 即wifi从模式,可以链接无线ap

  作为station,用户通过UI启动WIFI,由framework层,JNI,hardware层加载WIFI的驱动,加载firmware。驱动加载成功后,启动wpa_supplicant,设置mad地址,设置为managed模式,通过ioctl命令启动scan,启动DHCPD获取IP地址,链接到对应的AP,建立连接后同时sock通信。

AP模式      : 即wifi的ap模式,当作无线路由

    作为softap模式的时候,和station模式的流程差不多,只不过不是启动wpa_supplicant,启动hostapd的后台管理进程。

由framework层,JNI,hardware层加载softap的驱动,加载firmware。驱动加载成功后,启动hostap,设置mad地址,设置为master模式,设置BSSID,启动DHCPD获取IP地址。等待station来连接。


1)移植和交叉编译hostapd:
  tar xzf wpa_supplicant_hostapd-0.8_rtw_r6747.20130222.tar.gz
  cd wpa_supplicant_hostapd-0.8_rtw_r6747.20130222/hostapd/
  CC=/usr/local/dvsdk/linux-devkit/bin/arm-arago-linux-gnueabi-gcc
make出现如下错误:hostapd/../src/drivers/driver_nl80211.c:8672: undefined reference to `genlmsg_attrdata'
这里说明需要用到libnl库,因此:
  tar xzf libnl-1.1.4.tar.gz
  cd libnl-1.1.4/
  CC=/usr/local/dvsdk/linux-devkit/bin/arm-arago-linux-gnueabi-gcc
  ./configure --prefix=$PWD/_install --host=arm-arago-linux-gnueabi
  make
  make install之后将生成的库文件和头文件复制到交叉编译路径:
  cp -rf _install/* /usr/local/dvsdk/linux-devkit/arm-arago-linux-gnueabi/usr/
回到hostapd目录,并重新编译:
  cd ../wpa_supplicant_hostapd-0.8_rtw_r6747.20130222/hostapd/
  CC=/usr/local/dvsdk/linux-devkit/bin/arm-arago-linux-gnueabi-gcc
  make
当前目录会生成:hostapd_cli和hostapd两个文件。
在设备上运行hostapd(注意:此时不能运行wpa_supplicant等进程):
  ./hostapd ./hostapd.conf -B
使用的配置文件如下:
  cat hostapd.conf
在设备上运行udhcpd:
  udhcpd ./udhcpd.conf
使用的配置文件如下:
  cat ./udhcpd.confstart

2)DNSmasq是什么,怎么移植:

   DNS DNS 是域名系统 (Domain Name System) 的缩写 ,即将输入的网址转换成IP地址。
   DHCP是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址给用户给内部网络管理员作为对所有计算机作中央管理的手段。
  DNSmasq是一个小巧且方便的用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相关命令可以配置到每台主机中,也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。

  dnsmasq-2.56移植过程非常简单,只需要修改下makefile文件即可,如下:

  添加CC = arm-linux-gcc,把PREFIX = /usr/local修改为你要安装的目录PREFIX =/opt/dnsmasq

  修改完毕,执行make目录,编译完毕后运行make install安装,此时/opt/dnsmasq就出现我们需要的可执行程序了。

3)wpa_supplicant解释:

wpa_supplicant本是开源项目源码,被谷歌修改后加入android移动平台,它主要是用来支持WEP,WPA/WPA2和
WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是
wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给
wpa_supplicant调动驱动来对WiFi芯片操作。 
简单的说,wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐