嵌入式 Linux TFTP环境搭建实战

嵌入式 Linux TFTP环境搭建实战持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情 前言 我们学习过NFS共享文件夹的环境搭建与使用, 本文讲解网络文件 “共享” 的另一种方式TFTP

持续创作,加速成长!这是我参与「掘金日新计划 · 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-hpaxinetd 服务:

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注