ubuntu下tftp服务器的搭建

来源:互联网 发布:idea2016新建java项目 编辑:程序博客网 时间:2024/05/29 08:57

嵌入式Linux开发中,TFTP协议在很多场合都被用到,甚至是必不可少的,特别是在内核调试阶段,在U-Boot下通过TFTP协议从服务器上加载内核并运行,既方便又快捷。
一般的发行版默认都没有安装TFTP服务以及TFTP服务器。TFTP服务依赖于网络守护进程服务程序,可选择安装inetd或者升级版的xinetd,然后安装tftp和tftp-server,接着修改或者创建/etc/xinetd.d/tftp配置文件,最后重启xinetd,启动TFTP服务。无论采用什么发行版,TFTP服务器的安装都是这样的流程,只不过不同发行版的安装命令不同而已,下面以ubuntu为例进行说明。

一、首先查看自己版本下是否已经存在这个服务

root@ubuntu:/etc# tftp 127.0.0.1
The program 'tftp' can be found in the following packages:
 * tftp-hpa
 * tftp
Try: apt-get install <selected package>
root@ubuntu:/etc# 

说明没有安装tftp服务

二、下面使用apt安装该服务

root@ubuntu:~# sudo apt-get install xinetd

安装成功以后在/etc/的目录下有一个文件 xinetd.conf 一个目录 xinetd.d 在目录下有几个准备被用的配置文件
 安装tftp和tftpd:
root@ubuntu:~# sudo apt-get install tftp tftpd
或者安装tftp的增强版本tftp-hpa:
root@ubuntu:~# sudo apt-get install tftp-hpa tftpd-hpa (建议使用这个增强版本)

建立/etc/xinetd.d/tftp文件:

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

其中 server_args 这个目录是自己定义的,只要存在即可,一般都在根目录下,这样方便,同时设置访问权限为777

启动或者重启xinetd服务:
root@ubuntu:~# /etc/init.d/xinetd start/restart

查看是否启动成功

sudo netstat -a | grep tftp


本机测试。在/tftpboot目录下创建一个test文件,启动另外一个终端,输入:
root@ubuntu:~# tftp 127.0.0.1
tftp> get test    #获取ky文件
tftp> q                        #退出tftp
 在终端输入ls命令,可以看到当前目录下看到ftp获取到的test文件。

问题:(按照上述步骤安装仍然不成功或者出现得不到文件之类的错误)

1、关闭防火墙 ufw disable

2、get 命令Error code 1: File not found 这个问题说明tftp服务没有成功启动,

3、transfer timed out  tftp 服务器没有成功启动

4.  put 命令Error code 1: File not found 指定文件不存在,或者在/etc/xinetd.d/tftp 中的service_args中的参数没有-c

5、Error code 2: Only absolute filenames allowed 在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpa
cat /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="no"
OPTIONS="-s /home/tftpd -c -p -U 077 -u tftpd"
设置的时候只要将server_args=改为你自己设定的服务器文件夹就行了

6.仍然不行,可以重启虚拟机啊尝试(这也是IT的惯例)