wpa_supplicant无线网络配置imx6ull以及搭建tftp服务器

文章目录

    • 1- wpa_supplicant介绍
    • 2- wpa_supplicant无线网络配置
      • (1)手动无线网络配置
      • (2)开机执行脚本自动无线网络配置
    • 3- tftp介绍
    • 4- tftp服务器搭建
      • (1)下载TFTP服务器
      • (2)创建文件夹存放tftp文件
      • (3)配置/etc/xinetd.d/tftp文件
      • (4)修改/etc/default/tftpd-hpa 文件
      • (5)测试
        • 【1】本地传输
        • 【2】异地传输
        • 【3】tftp命令讲解


刚拿到的板子:IGKBoard (IoT Gateway Kit Board) 开发板。
此开发板基于 NXP i.MX6ULL 系列 Cortex-A7 高性能处理器设计,适用于快速开发一系列具有创新性的产品如物联网网关、人机界面工业4.0扫描仪、车载终端以及便携式医疗设备。
板子上自己是有wifi模块的,需要配置一下。
但是搞了半天连不上wifi,最后使用wpa_supplicant连接上了自家的wifi。
wpa_supplicant无线网络配置imx6ull以及搭建tftp服务器_第1张图片


1- wpa_supplicant介绍

wpa_supplicant本是开源项目源码,被谷歌修改后加入 Android 移动平台,它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给wpa_supplicant调动驱动来对WiFi芯片操作。
wpa_supplicant目前只能连接到那些你已经配置好SSID的无线网络,也就是使用前需要配置好wpa_supplicant的配置文件wpa_supplicant.conf。

2- wpa_supplicant无线网络配置

(1)手动无线网络配置

修改配置文件:vi /etc/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1

network={
        ssid="wifi名称"
        psk="wifi密码"
}

连接:wpa_supplicant -B -d -i wlan0 -c /etc/wpa_supplicant.conf
添加IP地址:ifconfig wlan0 192.168.1.10 up
设置路由:route add default gw 192.168.1.1
这个IP地址(192.168.1.10)需要根据你主机上的IP地址进行添加,需要在一个网段内。我的主机Ip是192.168.1.7,于是就分配一个192.168.1.10
查看wlan0情况:ifconfig wlan0
wpa_supplicant无线网络配置imx6ull以及搭建tftp服务器_第2张图片

测试一下自己的电脑,在一个网段内:ping 192.168.1.7
wpa_supplicant无线网络配置imx6ull以及搭建tftp服务器_第3张图片
测试:ping www.baidu.com
出问题了,出现了ping: www.baidu.com: Temporary failure in name resolution的错误提示,不急,解决一下。如果你们测试没问题就不需要修改了。
在这里插入图片描述

打开配置文件:vi /etc/resolv.conf
在/etc/resolv.conf配置文件末尾追加:nameserver 8.8.8.8
wpa_supplicant无线网络配置imx6ull以及搭建tftp服务器_第4张图片

成功:
wpa_supplicant无线网络配置imx6ull以及搭建tftp服务器_第5张图片

(2)开机执行脚本自动无线网络配置

修改开机启动文件:/etc/rc.local(没有就新建)
vi /etc/rc.local
然后将上面执行的命令输入进去(因为我知道自己路由器的网段,所以这样可以,如果是第一次连接的话,就可能需要DHCP自动获取IP了):

#!/bin/sh

wpa_supplicant -B -d -i wlan0 -c /etc/wpa_supplicant.conf
ifconfig wlan0 192.168.1.10 up
route add default gw 192.168.1.1

exit 0

然后执行命令,修改这个文件权限:
chmod +x /etc/rc.local
chmod 755 /etc/rc.local
然后重新开机就可以看见自动连接上wifi了,并且可以用。
wpa_supplicant无线网络配置imx6ull以及搭建tftp服务器_第6张图片


3- tftp介绍

tftp服务器是指使用tftp协议的服务器。
tftp是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
tftp作为一个传输文件的简单协议,是基于UDP协议而实现的,但是也不能确定有些tftp协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。

优点:

  • tftp可用于UDP环境;比如当需要将程序或者文件同时向许多机器下载时就往往需要使用到tftp协议。
  • tftp代码所占的内存较小,这对于较小的计算机或者某些特殊用途的设备来说是很重要的,这些设备不需要硬盘,只需要固化了tftp、UDP和IP的小容量只读存储器即可。当电源接通后,设备执行只读存储器中的代码,在网络上广播一个tftp请求。
  • 网络上的tftp服务器就发送响应,其中包括可执行二进制程序。设备收到此文件后将其放入内存,然后开始运行程序。这种方式增加了灵活性,也减少了开销。

4- tftp服务器搭建

(1)下载TFTP服务器

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd

(2)创建文件夹存放tftp文件

mkdir tftpboot
chmod 777 tftpboot/
wpa_supplicant无线网络配置imx6ull以及搭建tftp服务器_第7张图片
我们要给 tftpboot 文件夹权限,否则的话 uboot 不能从tftpboot 文件夹里面下载文件。
记住文件夹的绝对路径(这里根据自己的需要放在自己想放的路径下):
在这里插入图片描述

(3)配置/etc/xinetd.d/tftp文件

cd /etc/xinetd.d/
我们到这个目录下去寻找有没有tftp这个文件,如果没有的话自行创建(目录没有也是自己创建)
在这里插入图片描述
sudo vim tftp
需要sudo权限,不然后面保存不了。
然后在里面输入如下内容:
server_args 后面的路径就是上面自己pwd出来的路径。进行tftp传输的时候,都是从该文件夹中搜索文件的

server tftp
{
        socket_type = dgram
        protocol = udp
        wait = yes
        user = root
        server = /usr/sbin/in.tftpd
        server_args = -s /home/wangdengtao/wangdengtao/tftpboot -c
        disable = no
        per_source = 11
        cps = 100 2
        flags = IPv4
}

启动tftp服务器:sudo service tftpd-hpa start

(4)修改/etc/default/tftpd-hpa 文件

sudo vim /etc/default/tftpd-hpa
打开/etc/default/tftpd-hpa 文件,将其修改为如下所示内容:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/wangdengtao/wangdengtao/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create"
OPTIONS="-l -s -c /home/wangdengtao/wangdengtao/tftpboot"               

TFTP_DIRECTORY 就是我们上面创建的 tftp 文件夹目录,以后我们就将所有需要通过TFTP 传输的文件都放到这个文件夹里面,并且要给予这些文件相应的权限。

重启tftp服务器:sudo service tftpd-hpa restart

(5)测试

【1】本地传输

我们在创建的tftpboot目录下创建一个hello.c的文件,随便写点什么都行。
在这里插入图片描述

然后不在这个目录下输入sudo tftp localhost
然后可以输入help查看,然后输入get hello.c没有反应说明成功,然后输入q退出,可以看见我们的hello.c文件了。
wpa_supplicant无线网络配置imx6ull以及搭建tftp服务器_第8张图片

【2】异地传输

首先我们的虚拟机和我们的主机不再一个网段内,所以我们需要修改一下虚拟机的ip和主机在一个网段内。

对于虚拟机外部网络能够访问有相关疑问的可以看这篇文章:
虚拟机和主机不在同一个网段内,彼此为什么可以ping通呢?

如何修改虚拟机使能够和主机在一个网段内,外网能够访问参考这篇文章:
让虚拟机与物理主机处于同一网段,并能够上网

wpa_supplicant无线网络配置imx6ull以及搭建tftp服务器_第9张图片
测试我们的虚拟机能否ping通:ping 192.168.1.6
可以看到可以ping通,说明能够访问。
在这里插入图片描述

测试开始:
开发板的IP地址:192.168.1.10
虚拟机的ip地址:192.168.1.6

获取tftp服务器的文件:
从我们的虚拟机上获取hello.c这个文件: tftp -g -r hello.c 192.168.1.6
可以看见获取成功:
在这里插入图片描述
上传到tftp服务器:
开发板创建hahaha,然后上传到虚拟机中: tftp -p -l hahaha 192.168.1.6
可以看见增加了hahaha文件。
在这里插入图片描述
在这里插入图片描述

【3】tftp命令讲解

简单说一下用法:tftp [OPTION]... HOST [PORT]

Options:
        -l FILE Local FILE
        -r FILE Remote FILE
        -g      Get file
        -p      Put file

参数说明:

  • -l 是local的缩写,后跟本地或下载到本地后重命名的文件名。
  • -r 是remote的缩写,后跟远程即PC机tftp服务器根目录中的文件名,或上传到PC机后重命名后的文件名。
  • -g 是get的缩写,下载文件时用,后跟PC机的IP地址
  • -p 是put的缩写,上传文件时用,后跟PC机的IP地址
  • tftp 默认占用的是69端口。

你可能感兴趣的:(#,服务器,嵌入式硬件,linux)