linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)

嵌入式linux最常用到tftp命令来完成开发板和Linux系统之间的的文件传输,避免了频繁的U盘拷贝过程。

我们知道,Windows下使用“tftpd32.exe”这款软件可以很方便地在Windows下搭建的tftp服务器。但是,当我们做嵌入式linux开发的时候,如果用Windows搭建tftp服务器,用的还是虚拟机,就得在虚拟机中开启共享文件夹,然后再把文件放入共享文件夹内,最后传输到开发板中执行。这么复杂的步骤,对于我来讲太繁琐了……那么我们是否可以只用一个Linux系统就完成编译 文件传输呢?答案是可以的!下面就来教大家如何在Linux系统下安装tftp服务器。

Linux下的tftp开发环境建立包括两个方面:一是Linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。

本教程分为三个部分:

  1. 搭建tftp服务器
  2. tftp文件传输
  3. 视频讲解(在文章末尾)

0.笔者的开发环境

Windows 10专业版(版本号:1909;操作系统版本:18383.752)、Windows子系统Ubuntu 18.04(1804.2020.5.0)


1.搭建tftp服务器

1.1:安装tftp服务器所需的软件

搭建tftp服务所需要安装的软件有tftp-hpa,tftpd-hpa以及xinetd,其中:

tftp-hpa——客户端软件:

~$ sudo apt-get install tftp-hpa

tftpd-hpa——服务程序:

~$ sudo apt-get install tftpd-hpa

xinetd——新一代的网络守护进程服务程序,又叫超级Internet服务器,常用来管理多种轻量级Internet服务:

~$ sudo apt-get install xinetd

1.2:配置xinetd.conf配置文件

查看/etc/xinetd.conf这个文件是否和以下内容一致;如果不一致,请修改;如果没有,直接用vi命令创建并编辑

~$ cat /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

1.3:配置tftpd-hpa配置文件

~$ sudo vi /etc/default/tftpd-hpa

将内容修改成:

# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/harry/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="-l -c -s"

修改成功后,如下图所示,:wq保存退出。

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(1)

配置tftpd-hpa配置文件

注:TFTP_DIRECTORY=”/home/harry/tftpboot”表示tftp服务器的工作目录,用户可根据自己的实际情况进行更改。

1.4:建立工作目录

指定了tftp服务的工作目录后,我们需要在相应的路径下建立该tftp工作目录,命令如下:

~$ mkdir tftpboot

修改tftp服务器目录的权限为777,这样不仅可以允许目标机下载,同时允许其上传。命令为:

~$ sudo chmod 777 ./tftpboot

1.5:配置tftp配置文件

查看/etc下面的xinetd.d目录里的ftp文件内容是否和下面图片中的一致(如果没有的话,就新建一个并输入以下内容)

~$ sudo vi /etc/xinetd.d/tftp

内容如下:

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

修改之后,如图所示

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(2)

配置tftp配置文件

server_args一行是配置tftp服务器中文件的存放位置,进行tftp传输的时候,都是从该目录中搜索文件的。

然后保存文件,并退出编辑。

1.6:重新启动tftp

重新启动tftp,会提示一个OK

~$ sudo service tftpd-hpa restart

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(3)

重新启动tftp

如果用的linux系统和笔者一样,是win10子系统的话,windows的防火墙会提示你,一定要点“是”!!!否则就会失败

1.7:重新加载xinetd

重新加载xinetd进程,会提示一个OK:

~$ sudo /etc/init.d/xinetd reload

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(4)

重新加载xinetd

1.8:重新启动xinetd

重启xinetd服务,会提示两个OK:

~$ sudo /etc/init.d/xinetd restart

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(5)

重新启动xinetd

注意:每次修改完配置文件后,都需要重新启动一下服务。

至此,Linux系统下搭建tftp服务器步骤完成,下面介绍如何测试tftp。


2.测试tftp服务

2.1:新建测试文件

笔者在tftp的工作目录“/home/harry/tftpboot”中复制一个已经编译好的C语言程序文件“hello”,该文件可以打印Hello World!,如下图所示:

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(6)

打印Hello World!

2.2:进入测试目录

然后进入任意一个不同于/home/harry/tftpboot”的目录(例如/home/harry目录下),然后在终端中输入

~$ tftp 127.0.0.1

进入tftp命令符下,如图:

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(7)

进入测试目录

2.3:获取测试文件

输入如下命令,再按回车,获取存放在tftp工作目录/home/harry/tftpboot中的“helol”文件。如果没有任何提示,就说明传输成功了,否则就是失败,要么配置有问题,要么防火墙拦截了。如下图所示:

~$ get test

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(8)

获取测试文件

2.4:退出tftp命令

输入q 退出tftp命令行,如下图所示:

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(9)

退出tftp命令

2.5:修改文件权限并运行

~$ ls ~$ chmod 777 hello ~$ ls ~$ ./hello

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(10)

修改获取的文件权限并运行

2.6:上传文件

可以在tftp命令中输入 如下命令,文件上传到tftp服务器中

~$ put main.c

2.7:开发板tftp 传送命令

tftp [server_ip](tftp服务器ip,如192.168.1.2)-g -r [filename](传送文件名 例如:main)

linuxtftp服务器在哪里(玩转嵌入式之如何在Linux系统中搭建tftp服务器)(11)

完整命令


视频教程


至此,整个tftp服务器的搭建步骤以及tftp测试就完成了,如果有任何问题,欢迎大家在下方留言。

如何在Linux系统中手动安装arm-linux-gcc交叉编译工具

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页