更换Ubuntu原生wpa_supplicant说明

2024-03-18 16:28

本文主要是介绍更换Ubuntu原生wpa_supplicant说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 前言

      1.1 目的

      wpa supplicant作为WiFi驱动和上层应用程序的中间环节,可以自行修改其源码,方便调试Wi-Fi 功能。目前编译的版本直接是运行在X86平台,代码在其上编译,不需要交叉编译;

      1.2 版本

      目前版本是2.10,也是最新版本,可以从如下官网下载;

      Linux WPA Supplicant (IEEE 802.1X, WPA, WPA2, WPA3, RSN, IEEE 802.11i) (w1.fi)

      1.3 修改点

      主要是一些系统库的支持,后文详解;

    1.   编译依赖库

      2.1 Libssl

      源码地址:[ Downloads ] - /source/index.html。

      当前使用版本:3.0.13

      解压源码包,在其目录创建生成目录:

     

    mkdir _install

      (说明,为了不损坏系统自带ssl库,暂时编译出来的新的ssl库放到源码目录_install目录下,最后编译wpa_supplicant的时候使用,以下库同)

     

    ./config no-asm no-shared no-async --prefix = $PWD /_install make && make install;

      2.2 libnl

      libnl提供应用层和驱动之间的IPC通信机制,当wpa_supplicant仅配置为使用Wext接口时,无需使用该库。

      源码地址:http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libnl.html

      当前使用版本:3.9.0

      解压源码包,在其目录执行:

     

    mkdir _install ./configure --prefix = $PWD /_install --enable-static make && make install;

      2.3 libdbus

      源码地址:http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libnl.html

      当前使用版本:3.9.0

      解压源码包,在其目录执行:

     

    mkdir _install ./configure --prefix = $PWD /_install --enable-static make; make install

      3 . 重新编译wap_supplicant

      解压源码,从defconfig拷贝到.config,修改.config文件或者Makefile,在文件对应位置添加编译的dbus、libssl和libnl路径,只要能够参与到最终的编译连接过程即可,可以如下修改:

      //definition

     

    OPENSSL_PATH=/home/USR_NAME/Downloads/openssl-3.0.13 LIBNL_PATH=/home/USR_NAME/Downloads/libnl-3.9.0 DBUS_PATH=/home/USR_NAME/Downloads/dbus-1.15.8 EXPAT_PATH=/home/USR_NAME/Downloads/expat-2.6.2

      !!!特别注意,这里的Path定义是USR_NAME当前Download的源码所在的位置,需要根据自己的下载情况更新!!!

      //include header and lib

     

    # added by user start CFLAGS += -I$(OPENSSL_PATH)/_install/include LIBS += -I$(OPENSSL_PATH)/_install/lib CFLAGS += -I$(LIBNL_PATH)/_install/include LIBS += -I$(LIBNL_PATH)/_install/lib CFLAGS += -I$(DBUS_PATH)/_install/include LIBS += -I$(DBUS_PATH)/_install/lib LDFLAGS += -pthread # added by user end

      注意:静态链接时必须增加上段末句 LDFLAGS += -pthread 而非 LDFLAGS += -lpthread ,否则dbus、libssl和libnl无法找到链接到pthread线程库;

      最后执行编译命令:

     

    mkdir _install cp defconfig .config make make install DESTDIR=$PWD/_install/

      最后生成的bin文件位于源码目录:

      wap_suppliant/_install/usr/local/sbin 目录下;

      说明 1:以上编译结果为动态链接,如需静态链接,只需在Makefile中对应项目的编译语句增加-static关键字再编译即可,例如:

     

    wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs) $(Q)$(LDO) -static $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) @$(E) " LD " $@

      说明 2:编译过程中如果出现如下问题:

      Netlink/netlink.h 找不到;

      或/netlink/genl/genl.hnetlink/genl/genl.h: 没有此类文件或者目录

      根据问题提示不同,可能需要安装如下的软件包:

     

    sudo apt-get install libnl-3-dev sudo apt-get install libnl-3-dev sudo apt-get install libnl-route-dev

4._wap_supplicant bin文件的裁减

4.1 直接通过命令strip裁剪

若目标板flash空间大小限制,可以裁剪生成的bin文件,通过strip命令完成,该测试程序结果如下:

4.2 通过裁剪相关feature达到瘦身的目的

通过配置config文件,删除产品不需要的feature,比如是否支持SAP以及有些相应的WiFi协议若不支持,可以删除。

4.3 wext或nl80211

Wext(Wireless Extensions, 无线扩展接口)和nl80211都是目前Linux支持的无线网络配置接口,它们的区别网上有很多文章已经介绍了,总而言之,nl80211接口将会继承Wext的接力棒,逐渐成为Linux网络接口的主流选择。nl指的是netlink,nl80211接口通过netlink技术管理应用层和驱动的通信。

wpa_supplicant同时支持两种网络接口,但是在一些特定的场合例如连接某个特殊的热点或者内核的配置不同,我们只需要其中一种。因此可以通过裁剪接口的方式降低应用程序的体积。若需裁减掉Wext接口,则可基于deconfig文件注释掉以下内容:

 

#CONFIG_DRIVER_WEXT=y

5._不同接口下wpa_supplicant 运行命令

 

// WEXT: wpa_supplicant -D wext -i wlan0 -c /etc/wpa.conf & //NL80211: wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa.conf &

这篇关于更换Ubuntu原生wpa_supplicant说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/822928

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目

秒变高手:玩转CentOS 7软件更换的方法大全

在 CentOS 7 中更换软件源可以通过以下步骤完成。更换源可以加快软件包的下载速度,特别是当默认源速度较慢时。以下是详细步骤: 前言 为了帮助您解决在使用CentOS 7安装不了软件速度慢的问题,我们推出了这份由浪浪云赞助的教程——“CentOS7如何更换软件源加快下载速度”。 浪浪云,以他们卓越的弹性计算、云存储和网络服务受到广泛好评,他们的支持和帮助使得我们可以将最前沿的技术知识分

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

列举你能想到的UNIX信号,并说明信号用途

信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程序一般都会处理信号。 UNIX定义了许多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变信号;SIGKILL表示终止程序运行的信号,等等。信号量编程是UNIX下非常重要的一种技术。 Unix信号量也可以

在Ubuntu 20.04上安装Nginx的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Nginx 是世界上最流行的 Web 服务器之一,负责托管互联网上一些最大和流量最高的网站。它是一个轻量级选择,可以用作 Web 服务器或反向代理。 在本指南中,我们将讨论如何在 Ubuntu 20.04 服务器上安装 Nginx,调整防火墙,管理 Nginx 进程,并设置服务器块以从单

虚拟机ubuntu配置opencv和opencv_contrib

前期准备  1.下载opencv和opencv_contrib源码 opencv-4.6.0:https://opencv.org/releases/ opencv_contrib-4.6.0:https://github.com/opencv/opencv_contrib 在ubuntu直接下载或者在window上下好传到虚拟机里都可以 自己找个地方把他们解压,个人习惯在home下新建一