0
点赞
收藏
分享

微信扫一扫

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)


一、wpa_supplicant

wpa_supplicant 是跨平台的 WPA 请求者程序(supplicant),支持 WEP、WPA 和 WPA2(IEEE 802.11i).。可以在桌面、笔记本、嵌入式系统中使用。

wpa_supplicant 是在客户端使用的 IEEE 802.1X/WPA 组件,支持与 WPA Authenticator 的交互,控制漫游和无线驱动的IEEE 802.11 验证和关联。

二、移植前的准备

1. 移植openssl

参考这篇文章:​​i.MX6ULL应用移植 | 移植OpenSSH 8.9到Linux开发板(zlib、openssl、openssh)​​。

2. 移植libnl

libnl库提供了一套应用于Linux系统基于Netlink协议通信的API接口。

2.1. 下载源码

官网:​​https://www.infradead.org/~tgr/libnl/​​。

下载最新的3.2.25版本:

wget

解压源码:

tar

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_linux

2.2. 交叉编译

新建编译安装文件夹:

mkdir

编译配置:

./configure --host=arm-linux-gnueabihf --prefix=/home/mculover666/develop/imx6ull/libnl/libnl-3.2.25-build

编译:

make

安装:

make install

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_开发板_02


i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_linux_03

2.3. 拷贝库文件到开发板根文件系统

sudo cp

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_根文件系统_04

三、wpa_supplicant移植

1. 下载源码

官网:​​Linux WPA/WPA2/IEEE 802.1X Supplicant​​。

下载2.7版本:

wget

最新2.10版本使用了dbus,我的编译器为arm-linux-gnueabihf-gcc 7./5.0版本,编译报错

解压源码:

tar

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_根文件系统_05

2. 交叉编译

复制def_config文件:

cd wpa_supplicant
cp

修改​​.config​​文件:

  • 修改交叉编译器
  • 添加openssl库文件路径
  • 添加libnl库文件路径
  • i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_开发板_06

CFLAGS += -I/home/mculover666/develop/imx6ull/openssl/openssl-3.0.2-build/include
LIBS += -L/home/mculover666/develop/imx6ull/openssl/openssl-3.0.2-build/lib -lssl -lcrypto
CC=arm-linux-gnueabihf-gcc

CFLAGS += -I/home/mculover666/develop/imx6ull/libnl/libnl-3.2.25-build/include/libnl3
LIBS +=

设置环境变量:

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_根文件系统_07

export PKG_CONFIG_PATH=/home/mculover666/develop/imx6ull/libnl/libnl-3.2.25-build/lib/pkgconfig:$PKG_CONFIG_PATH

编译:

make

编译之后看到可执行文件:

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_根文件系统_08


看一下可执行文件的类型,确保是交叉编译的:

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_开发板_09

3. 拷贝可执行文件到开发板的根文件系统

sudo cp

重新打包烧录根文件系统。

4. 测试

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_linux_10

四、WIFI联网测试

1. 创建配置文件

在开发板根目录/etc下创建配置文件:​​wpa_supplicant.conf​​,添加以下配置内容:

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
ssid="Mculover666"
psk="mculover666"
}

在var目录下创建用到的目录:

mkdir

2. 连接热点

wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 &

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_根文件系统_11

3. 获取ip地址

udhcpc -i wlan0

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_linux_12


查看网卡:

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_根文件系统_13


查看路由表:

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_linux_14

4. ping通外网测试

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_开发板_15

五、问题记录

1. 问题描述

udhcpc获取到ip地址后,没有设置到网卡。

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_根文件系统_16

2. 问题定位

该问题是由于使用busybox制作根文件系统时,没有把udhcpc的脚本拷贝过去。

3. 问题解决

下载之前制作根文件系统使用的busybox源码,参考之前文章:​​i.MX6ULL系统移植 | 使用busybox制作根文件系统(1.29.0)​​。

拷贝busybox源码中 examples/udhcp/simple.script 脚本,到开发板根文件系统的 /usr/share/udhcpc(不能改路径,否则要重新修改编译busybox源码),并重命名为:default.script。

i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)_linux_17


举报

相关推荐

0 条评论