嵌入式 Linux 入门 环境篇(六、搭建 TFTP 环境)

嵌入式 Linux入门 环境篇第六课,搭建 TFTP 环境   ......  by 矜辰所致

前言

上文我们学习了 NFS 共享文件夹的环境搭建与使用, 本文讲解网络文件 “共享” 的另外一种方式: TFTP。

❤️ 嵌入式 Linux 入门 环境篇系列博文:
嵌入式 Linux 入门 环境篇(一、开发板初体验)
嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)
嵌入式 Linux 入门 环境篇(三、开发板和 PC 的网络互通)
嵌入式 Linux 入门 环境篇(四、必备开发工具安装)
嵌入式 Linux 入门 环境篇(五、NFS 文件共享)
.
我是矜辰所致,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!

一、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 ,内核镜像,设备树的编译与烧录完整的过一遍。

好了,本文就到这里,谢谢大家!

猜你喜欢

转载自blog.csdn.net/weixin_42328389/article/details/127251831