嵌入式 Linux入门 环境篇第六课,搭建 TFTP 环境 ...... by 矜辰所致
上文我们学习了 NFS 共享文件夹的环境搭建与使用, 本文讲解网络文件 “共享” 的另外一种方式: TFTP。
❤️ 嵌入式 Linux 入门 环境篇系列博文:
嵌入式 Linux 入门 环境篇(一、开发板初体验)
嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)
嵌入式 Linux 入门 环境篇(三、开发板和 PC 的网络互通)
嵌入式 Linux 入门 环境篇(四、必备开发工具安装)
嵌入式 Linux 入门 环境篇(五、NFS 文件共享)
.
我是矜辰所致,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在
客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
基础的概念这里我们可以不深入了解,只需要学会如何在开发板上使用 TFTP 获取 Ubuntu 虚拟机上的共享文件。
我们可以使用 TFTP 来加载内核 zImage、设备树和其他较小的文件到开发板 DDR 上,从而实现网络挂载。
Linux下的 TFTP 开发环境建立包括两个方面:一是 Linux 服务器端的 tftp-server 支持(服务器),二是嵌入式目标系统的 tftp-client 支持(客户端)。
和上一篇文章一样,我们的目的是是为了使得开发板能够通过网络下载 Ubuntu 下的共享文件,所以我们需要在 Ubuntu 下安装的是 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个软件,前后顺序无所谓:
创建一个文件夹,当做 TFTP 的共享目录,并给予 此目录可读可写可执行权限,如下图:
上面我们安装了 3 个软件,我们需要对其中的配置文件进行检查和修改。
查询/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
我们这里是正常的,如下图:
打开 /etc/default/tftpd-hpa
配置文件,修改上面创建的共享文件目录为 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
}
如下图:
完成上述步骤,依次重启 tftpd-hpa
和 xinetd
服务:
sudo service tftpd-hpa restart
sudo service xinetd restart
首先连接 tftp 服务器:
tftp [tftp服务器ip]
connect:连接到远程tftp服务器
mode:文件传输模式
put:上传文件
get:下载文件
quit:退出
verbose:显示详细的处理信息
trace:显示包路径
status:显示当前状态信息
binary:二进制传输模式
ascii:ascii传送模式
rexmt:设置包传输的超时时间
timeout:设置重传的超时时间
help:帮助信息
?:帮助信息
我们先在 TFTP 服务器目录下面新建一个文件,如下图:
TFTP 服务器搭建好了以后,在本机就可以进行测试,如下图:
命令格式为:
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 ,内核镜像,设备树的编译与烧录完整的过一遍。
好了,本文就到这里,谢谢大家!