LINUX1604下TFTP搭建及使用

TFTP是简单文件传输协议,是一个基于UDP协议实现的用在客户及和服务器之间进行简单文件传输的协议,适用于开销不大,不复杂的应用场景。TFTP协议专门为小文件传输而设计,只能从服务器获取文件,或者客户端往服务器写入文件,但是不能进行认证也不能列出目录。

安装目的:将pc端编译好的文件系统和kernel文件写到arm侧。

1. 安装

  $ apt-get install tftp-hpa tftpd-hpa

 

2. 建立目录

  $ mkdir /tftpboot # 这是建立tftp传输目录。

  $ sudo chmod 0777 /tftpboot

  $ sudo touch test.txt # test.txt文件最好输入内容以便区分

   LINUX1604下TFTP搭建及使用

 

3. 配置/etc/xinetd.conf
  配置相关服务文件。进入根目录下的 etc 文件夹(cd /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

  LINUX1604下TFTP搭建及使用

 

4. 配置

  # vi /etc/default/tftpd-hpa

  TFTP_USERNAME="tftp"

  TFTP_DIRECTORY="/tftpboot" # 这里是你的tftpd-hpa的服务目录,这个想建立在哪里都行

  TFTP_ADDRESS="0.0.0.0:69"

  TFTP_OPTIONS="-l -c -s" # 这里是选项,-c是可以上传文件的参数,-s是指定tftpd-hpa服务目录,上面已经指定

  LINUX1604下TFTP搭建及使用

 

5. 配置/etc/xinetd.d/tftp
  然后进入 xinetd.d 文件夹(cd xinetd.d),查看是否有一个 tftp 文件,如果没有就新建一个,如果有的话就查看内容是否与下面的一致,不一致则修改,内容如下:
  service tftp
  {
  socket_type = dgram
  wait = yes
  disable = no
  user = root
  protocol = udp
  server = /usr/sbin/in.tftpd
  server_args = -s /tftpboot
  #log_on_success += PID HOST DURATION
  #log_on_failure += HOST
  per_source = 11
  cps =100 2
  flags =IPv4

  }

  LINUX1604下TFTP搭建及使用

 

6. 重启服务

  重新启动服务。sudo service tftpd-hpa restart,这也是我经常疏忽的一步,当配置好 tftp 的配置文件后,需要重新启动一下 xinetd,在终端中输入 sudo /etc/init.d/xinetd reload,重新加载一下进程,再输入 sudo /etc/init.d/xinetd restart,重启服务。记住,每次修改完配置文件后,都需要重新启动一下服务。
执行次序:

  $ sudo service tftpd-hpa restart
  $ sudo /etc/init.d/xinetd reload
  $ sudo /etc/init.d/xinetd restart

 

7. 测试

  # cd /home

  # tftp localhost  #localhost 表示本机

  tftp>get test.txt  //test.txt 是之前在 /tftpboot 目录下新建的文件

  tftp>put test1.txt //test1.txt 是在 /home 目录下新建的文件

  tftp>q

  退出后,在/home目录下会有一个test.txt文件,在/tftpboot 目录下有test1.txt,表示tftp服务器安装成功!

  LINUX1604下TFTP搭建及使用

 

 

遇到的bug:出现Transfer timed out

tftp服务器出现Transfer timed out.的解决方法

最常见的是tftpd服务没有启动,网上很多教程这里就简单说下


解决方法:启动服务

sudo /etc/init.d/xinetd restart

sudo /etc/init.d/tftpd-hpa restart

 

但有时候遇到一些奇葩的情况这个问题是解决不了了,看到网上说可能是tftp和tftp server的版本不一样,一个是0.32一个是0.39,所以我就尝试将 tftpd-hpa,tftp-hpa卸载了

sudo apt-get remove tftpd-hpa ;卸载tftp服务端

sudo apt-get remove tftp-hpa   ;卸载tftp客户端

然后在重新安装,并配置(配置教程网上很多,不细说),这时候tftp就工作了

 

[email protected]:~$ dpkg -l tftpd-hpa //查看tftp服务器版本号
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name              Version           Description
+++-=================-=================-==================================================
ii  tftpd-hpa         5.2-1ubuntu1      HPA's tftp server
[email protected]:~$ dpkg -l tftp-hpa //查看tftp客户端版本号
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name              Version           Description
+++-=================-=================-==================================================
ii  tftp-hpa          5.2-1ubuntu1      HPA's tftp client

 

tftp命令格式为:

tftp [option] ... host [port]

如果要下载或上传文件的话是一定要用这些option的。

-g 表示下载文件 (get)
-p 表示上传文件 (put)
-l 表示本地文件名 (local file)
-r 表示远程主机的文件名 (remote file)

tftp应用:

1、tftp  xx(文件地址) file(需要被写入的文件);

2、要从pc端192.168.1.102上下载 sample_venc,则应输入以下命令tftp -g -r sample_venc 192.168.1.102

因为arm侧存储空间有限,后面搭建nfs直接将sample_venc直接挂载在arm侧执行。

参考链接:

https://www.cnblogs.com/icefree/p/7902043.html