持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情
嵌入式 Linux入门 环境篇第六课,搭建 TFTP 环境 ...... by 矜辰所致
前言
上文我们学习了 NFS 共享文件夹的环境搭建与使用, 本文讲解网络文件 “共享” 的另外一种方式: TFTP。
一、TFTP 简介
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在 客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
基础的概念这里我们可以不深入了解,只需要学会如何在开发板上使用 TFTP 获取 Ubuntu 虚拟机上的共享文件。
我们可以使用 TFTP 来加载内核 zImage、设备树和其他较小的文件到开发板 DDR 上,从而实现网络挂载。
二、搭建 TFTP 环境
Linux下的 TFTP 开发环境建立包括两个方面:一是 Linux 服务器端的 tftp-server 支持(服务器),二是嵌入式目标系统的 tftp-client 支持(客户端)。
和上一篇文章一样,我们的目的是是为了使得开发板能够通过网络下载 Ubuntu 下的共享文件,所以我们需要在 Ubuntu 下安装的是 TFTP 服务器。
2.1 安装 TFTP 软件
搭建 TFTP 服务所需要安装的软件有:tftp-hpa,tftpd-hpa 以及 xinetd 。
# 分别的意思如下:
tftp-hpa : 是客户端软件 指令:apt-get install tftp-hpa
tftpd-hpa : 是服务程序 指令:apt-get install tftpd-hpa
xinetd : 是新一代进程守护程序 指令:apt-get install xinetd
我们根据指令安装上面3个软件,前后顺序无所谓:
2.2 创建共享文件夹
创建一个文件夹,当做 TFTP 的共享目录,并给予 此目录可读可写可执行权限,如下图:
2.3 配置文件修改
上面我们安装了 3 个软件,我们需要对其中的配置文件进行检查和修改。
2.3.1 xinetd.conf
查询/etc
下是否存在 xinetd.conf
文件,没有的话需要自己新建一个:
确认一下该文件的内容是否和下面一样,不一样则修改成这样:
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
}
includedir /etc/xinetd.d
我们这里是正常的,如下图:
2.3.2 tftpd-hpa
打开 /etc/default/tftpd-hpa
配置文件,修改上面创建的共享文件目录为 TFTP 服务器工作目录,同时修改一些选项,如下图:
2.3.3 tftp
创建/etc/xinetd.d/tftp
配置文件,内容设置为(注意下面的共享文件夹路径是需要根据自己虚拟机的路径设置):
server tftp
{
socket_type = dgram
wait = yes
disable = no
user = root
protocol = udp
server = /usr/sbin/in.tftpd
server_args = -s /home/qzh/linux/tftp -c
per_source = 11
cps =100 2
flags =IPv4
}
如下图:
2.3.4 重启服务
完成上述步骤,依次重启 tftpd-hpa
和 xinetd
服务:
sudo service tftpd-hpa restart
sudo service xinetd restart
三、TFTP 服务器测试
3.1 tftp命令用法
首先连接 tftp 服务器:
tftp [tftp服务器ip]
连接上后一些相关的操作命令如下:
connect:连接到远程tftp服务器 mode:文件传输模式 put:上传文件 get:下载文件 quit:退出 verbose:显示详细的处理信息 trace:显示包路径 status:显示当前状态信息 binary:二进制传输模式 ascii:ascii传送模式 rexmt:设置包传输的超时时间 timeout:设置重传的超时时间 help:帮助信息 ?:帮助信息
3.2 测试
我们先在 TFTP 服务器目录下面新建一个文件,如下图:
3.2.1 本机测试
TFTP 服务器搭建好了以后,在本机就可以进行测试,如下图:
3.2.2 开发板测试
命令格式为:
tftp [option] [源文件名] [服务器地址]
下载
从远程主机下载命令:
tftp -g -r [源文件名] [服务器地址]
tftp -g -l [源文件名] [服务器地址]
上面参数 -l
与 -r
等效,使用时只使用其中一个,当需要改文件名字的时候才有区别,改文件名字的测试我们这里不做讨论。
对于命令中有些缩写进行说明:
参数说明:
-l : 是 local 的缩写,表示本地文件名 后跟存在于 Client 的源文件名,或下载 Client后 重命名的文件名。
-r: 是 remote 的缩写,表示远程主机文件名 后跟 Server 即 PC 机 tftp 服务器根目录中的源文 件名,或上传 Server 后重命名后的文件名。
-g: 是get的缩写,下载文件时用。
-p: 是put的缩写,上传文件时用。
比如我们在开发板上下载刚才在 Ubuntu 中建立的文件:
上传
从本地上传之远程主机命令:
tftp -p -r [源文件名] [服务器地址]
tftp -p -l [源文件名] [服务器地址]
结语
本文我们在 Ubuntu 虚拟机上搭建好了一个 TFTP 服务器,虽然看起来他比 NFS 共享文件夹稍微复杂一点,但是也有它自己的优点和适用场合,对于后期的学习中,我们会根据不同的环境使用不同的环境 。
至于环境篇后面讲什么,暂时的计划是需要把程序烧录,包括 uboot ,内核镜像,设备树的编译与烧录完整的过一遍。
好了,本文就到这里,谢谢大家!
今天的文章嵌入式 Linux TFTP环境搭建实战分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/14087.html