前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hostapd移植「建议收藏」

hostapd移植「建议收藏」

作者头像
全栈程序员站长
发布2022-08-26 09:34:22
2.4K0
发布2022-08-26 09:34:22
举报
文章被收录于专栏:全栈程序员必看

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

内核版本: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]

# 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=

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]

三.编译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后会出现错误:,../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

# 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

# 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.cn/143314.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TAPD 敏捷项目管理
TAPD(Tencent Agile Product Development)是源自于腾讯的敏捷研发协作平台,提供贯穿敏捷研发生命周期的一站式服务。覆盖从产品概念形成、产品规划、需求分析、项目规划和跟踪、质量测试到构建发布、用户反馈跟踪的产品研发全生命周期,提供了灵活的可定制化应用和强大的集成能力,帮助研发团队有效地管理需求、资源、进度和质量,规范和改进产品研发过程,提高研发效率和产品质量。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档