hostapd移植「建议收藏」

hostapd移植「建议收藏」内核版本:linux-2.6.39开发板平台:at91sam9x35wifi模块:rt3070 先说一下wifi的两种常见的模式。AP模式:AccessPoint,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接。Station模式:类似于无线终端,station本身并不接受无线的接入,它可以连接到AP

大家好,又见面了,我是你们的朋友全栈君。

内核版本:linux-2.6.39

开发板平台:at91sam9x35

wifi模块:rt3070

 

先说一下wifi的两种常见的模式。

AP模式: Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接。

Station模式:类似于无线终端,station本身并不接受无线的接入,它可以连接到AP,一般无线网卡即工作在该模式。

hostapd就是使wifi模块工作在AP模式。

 

一.添加内核对rt3070的支持。

 

make menuconfig:
  [*] Networking support  —>
     -*-   Wireless  —>
            <*>   cfg80211 – wireless configuration API
            [ ]     nl80211 testmode command
            [ ]     enable developer warnings
            [ ]     cfg80211 regulatory debugging
            [*]     enable powersave by default
            [ ]     use statically compiled regulatory rules database
            [*]     cfg80211 wireless extensions compatibility
            [*]   Wireless extensions sysfs files        
            <*>   Common routines for IEEE802.11 drivers 
            [ ]   lib80211 debugging messages (NEW)   
            <*>   Generic IEEE 802.11 Networking Stack (mac80211)
            [ ]   PID controller based rate control algorithm (NEW)
            [*]   Minstrel (NEW)        
            [*]     Minstrel 802.11n support (NEW)  
                  Default rate control algorithm (Minstrel)  —>
            [ ]   Enable mac80211 mesh networking (pre-802.11s) support (NEW)
            [ ]   Select mac80211 debugging features (NEW)  —> 
   
  Device Drivers  —>
       [*] Network device support  —>
            [*]   Wireless LAN  —>
                 <*>   Ralink driver support  —>
                      — Ralink driver support
                      < >   Ralink rt2500 (USB) support (NEW)
                      < >   Ralink rt2501/rt73 (USB) support (NEW)
                      <*>   Ralink rt27xx/rt28xx/rt30xx (USB) support
                      [ ]     rt2800
   usb – Include support for rt33xx devices
                      [ ]     rt2800usb – Include support for rt35xx devices (EXPERIMENTAL) (NEW)
                      [ ]     rt2800usb – Include support for rt53xx devices (EXPERIMENTAL) (NEW)
                      [ ]     rt2800usb – Include support for unknown (USB) devices (NEW)
                      [ ]   Ralink debug output (NEW)

hostapd依赖openssl和libnl,所以先移植openssl和libnl

二.编译openssl

编译openssl需要wpa_supplicant里面的patch包
[lingyun@localhost hostapd]$wget http://www.openssl.org/source/openssl-0.9.8e.tar.gz
[lingyun@localhost hostapd]$ wget http://hostap.epitest.fi/releases/wpa_supplicant-2.0.tar.gz
[lingyun@localhost hostapd]$ tar -xzf openssl-0.9.8e.tar.gz
[lingyun@localhost hostapd]$ tar -xzf wpa_supplicant-2.0.tar.gz
[lingyun@localhost hostapd]$ cd openssl-0.9.8e
[lingyun@localhost openssl-0.9.8e]$ cp ../wpa_supplicant-2.0/patches/openssl-0.9.8e-tls-extensions.patch .
[lingyun@localhost openssl-0.9.8e]$ patch -p1 < ./openssl-0.9.8e-tls-extensions.patch
[lingyun@localhost openssl-0.9.8e]$ vim Makefile

# CRYPTO_MDEBUG – turns on my ‘memory leak’ detecting stuff
# MFUNC – Make all Malloc/Free/Realloc calls call
#       CRYPTO_malloc/CRYPTO_free/CRYPTO_realloc which can be setup to
#       call application defined callbacks via CRYPTO_set_mem_functions()
# MD5_ASM needs to be defined to use the x86 assembler for MD5
# SHA1_ASM needs to be defined to use the x86 assembler for SHA1
# RMD160_ASM needs to be defined to use the x86 assembler for RIPEMD160
# Do not define B_ENDIAN or L_ENDIAN if ‘unsigned long’ == 8.  It must
# equal 4.
# PKCS1_CHECK – pkcs1 tests.

CROSS=/opt/buildroot-2011.11/arm926t/usr/bin/arm-linux-
CC=${CROSS}gcc
CXX=${CROSS}g++
AR=${CROSS}ar $(ARFLAGS)r
AS=${CROSS}as
LD=${CROSS}ld
NM=${CROSS}nm
RANLIB=${CROSS}ranlib
STRIP=${CROSS}strip

INSTALL_PREFIX=

#INSTALLTOP=/usr/local/ssl
INSTALLTOP=/home/lingyun/zhouyou/hostapd/install

# Do not edit this manually. Use Configure –openssldir=DIR do change this!

#OPENSSLDIR=/usr/local/ssl
OPENSSLDIR=/home/lingyun/zhouyou/hostapd/install

[lingyun@localhost openssl-0.9.8e]$ sudo make
[lingyun@localhost openssl-0.9.8e]$ sudo make install
[lingyun@localhost install]$ ls
bin  certs  include  lib  man  misc  openssl.cnf  private

三.编译libnl

libnl是为了方便应用程序使用netlink接口而开发的一个库。这个库为原始netlink(是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口)消息传递以及不同的netlink family专用接口提供了一个统一的接口。移植libnl1.1是hostapd的移植的一部分,所以在移植hostapd之前先要移植libnl。

lingyun@localhost hostapd]$ wgethttp://www.infradead.org/~tgr/libnl/files/libnl-1.1.tar.gz
[lingyun@localhost hostapd]$ tar -zxf libnl-1.1.tar.gz
[lingyun@localhost hostapd]$ cd libnl-1.1
[lingyun@localhost libnl-1.1]$ ls
aclocal.m4  configure.in  include     libnl-1.pc     Makefile.opts.in  tests
ChangeLog   COPYING       install-sh  libnl-1.pc.in  Makefile.rules
configure   doc           lib         Makefile       src
[lingyun@localhost libnl-1.1]$ ./configure –host=arm –prefix=/home/lingyun/zhouyou/hostapd/install2
[lingyun@localhost libnl-1.1]$ make CC=/opt/buildroot-2011.11/arm926t/usr/bin/arm-linux-gcc AR=/opt/buildroot-2011.11/arm926t/usr/bin/arm-linux-ar RADNLIB=/opt/buildroot-2011.11/arm926t/usr/bin/randlib STRIP=/opt/buildroot-2011.11/arm926t/usr/bin/arm-linux-strip
[lingyun@localhost libnl-1.1]$ make install

make后会出现错误:,../include/netlink-local.h:218: error: ‘ULONG_MAX’ undeclared (first use in this function)
解决的方法在include/netlink-local.h里面加一个头文件#include <limits.h>

[lingyun@localhost hostapd]$ ls install2
include  lib

将install2/lib/下所有文件拷贝至开发板的/lib目录下,确保hostapd在开发板上运行,能够正确找到libnl库的位置。

四。移植hostapd

[lingyun@localhost hostapd]$wget http://hostap.epitest.fi/releases/hostapd-0.7.3.tar.gz
[lingyun@localhost hostapd]$ tar -zxf hostapd-0.7.3.tar.gz
[lingyun@localhost hostapd-0.7.3]$ ls
COPYING  hostapd  patches  README  src
[lingyun@localhost hostapd-0.7.3]$ cd hostapd/
[lingyun@localhost hostapd]$ cp defconfig .config
[lingyun@localhost hostapd]$ vim .config

# Driver interface for Host AP driver
CONFIG_DRIVER_HOSTAP=y

CROSS = /opt/buidroot-2011.11/arm926t/usr/bin/arm-linux-
OPENSSL_PATH=/home/lingyun/zhouyou/hostapd
PRJ_TOP=/home/lingyun/zhouyou/hostapd
CC=${CROSS}gcc
CFLAGS+=-I${OPENSSL_PATH}/install/include
LDFLAGS+=-L${OPENSSL_PATH}/install/lib -lssl

 # Driver interface for wired authenticator

#CONFIG_DRIVER_WIRED=y

 # Driver interface for madwifi driver

#CONFIG_DRIVER_MADWIFI=y

#CFLAGS += -I../../madwifi # change to the madwifi source directory

 # Driver interface for drivers using the nl80211 kernel interface

CONFIG_DRIVER_NL80211=y
LIBNL=${PRJ_TOP}/install2
CFLAGS += -I${LIBNL}/include/
LIBS += -L${LIBNL}/lib

# Wi-Fi Protected Setup (WPS)

CONFIG_WPS=y

# Enable UPnP support for external WPS Registrars

 

# IEEE 802.11n (High Throughput) support

CONFIG_IEEE80211N=y

 

# a file that usually has extension .p12 or .pfx)

#CONFIG_PKCS12=y

 

# Build IPv6 support for RADIUS operations

#CONFIG_IPV6=y

[lingyun@localhost hostapd]$ make

make后就会生成hostapd和hostapd_cli

 在开发板执行如下命:

~ >: ./hostapd -v
hostapd v0.7.3
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2010, Jouni Malinen <j@w1.fi> and contributors

这就表示hostapd移植成功了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143314.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spring事务回滚的多种方式「建议收藏」

    spring事务回滚的多种方式「建议收藏」转:https://www.cnblogs.com/zeng1994/p/8257763.htmlstart看下下面的说明,会对理解本人贴出的代码有帮助。1.代码中事务控制的3种方式编程式事务:就是直接在代码里手动开启事务,手动提交,手动回滚。优点就是可以灵活控制,缺点就是太麻烦了,太多重复的代码了。声明式事务:就是使用SpringAop配置事务,这种方式大大的简化了编码。需要注…

    2022年10月19日
  • 单幅图像超分辨率重建(图像超分)

    代码的解析已经给出,现在补上:单图像超分辨率重建示例代码解析目录一、简介二、前期准备三、运行程序四、参考目录一、简介图像超分辨率重建技术就是利用一组低质量、低分辨率图像(或运动序列)来产生单幅高质量、高分辨率图像。图像超分辨率重建应用领域及其宽广,在军事,医学,公共安全,计算机视觉等方面都存在着重要的应用前景。在计算机视觉领域,图像超分辨率重建技术有可能使图像实现从检出…

    2022年4月17日
  • C/C++指针详解之基础篇(史上最全最易懂指针学习指南!!!!)「建议收藏」

    C/C++指针详解之基础篇(史上最全最易懂指针学习指南!!!!)「建议收藏」目录一.变量的内存实质到1.1变量的实质1.2赋值给变量1.3变量在哪里?二.指针是个什么东西?三.二级指针(指针的指针)3.1定义与初始化3.2间接数据访问3.2.1.改变一级指针指向3.2.2改变N-1级指针的指向3.2.3二级指针的步长四.指针与数组4.1指针与数组名4.1.1通过数组名访问数组元素4….

    2022年5月22日
  • settings官方网站_phpstorm中文

    settings官方网站_phpstorm中文setting —> php,选择php版本,并点击…,选择到php.exe进入到appserv底下找到php.ini文件,查找date.timezone,去掉前面的;号,添加”Asia/Shanghai”重启appserv环境,就是重启下apache 和 mysql服务发现依然失败后面重启电脑就可以了哈哈哈哈哈哈哈哈…

    2022年8月18日
  • idea远程debug配置_debug调试工具

    idea远程debug配置_debug调试工具Idea设置远程debug,方便定位线上问题

    2022年9月4日
  • NHibernate介绍「建议收藏」

    NHibernate介绍「建议收藏」现代化大型项目通常使用独立的数据库来存储数据,其中以采用关系型数据库居多。用于开发项目的高级语言(C#、Java等)是面向对象的,而关系型数据库是基于关系的,两者之间的沟通需要一种转换,也就是对象/关系数据库映射(Object/RelationalMapping,简称ORM)。C#可用以解决对象/关系数据库映射的工具有多种,常见的有EF(EntityFramework)、NHiberna…

    2022年7月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号