tftpd-hpa 是一个功能增强的TFTP服务器。它提供了很多TFTP的增强功能,它已经被移植到大多数的现代UNIX系统。



1.安装

sudo apt-get install tftpd-hpa tftp-hpa



2.配置

tftp-hpa 的配置文件為 /etc/default/tftpd-hpa



sudo gedit /etc/default/tftpd-hpa



# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot" //这里是你的tftpd-hpa的服务目录

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l -c -s"

       //这里是选项



注意:如果是在10.04以下的版本用下面的配置

tftp-hpa 的配置文件为 /etc/default/tftpd-hpa

 RUN_DAEMON="yes" 
OPTIONS="-l -c -s /tftpboot" 3.启动服务 sudo service tftpd-hpa restart 4.test测试 cd /tftpboot vim test.txt //随便输入一些东西 cd ~/ tftp localhost get test.txt 最后看看当前目录有test.txt的文件不? 同理!把当前目录下的一个文件put xxxx.???,在去看看/tftpboot目录有xxxx.??这个文件不?

/////////////////////////////////////////////////////////////////////////////////

检查tftp是否已经安装:netstat -a | grep tftp 若出现:

udp                               0                             
0 *:tftp 则说明已经安装,否则没有。

1、安装相关软件包

apt-get install tftpd (服务端)

apt-get install tftp (客户端)

apt-get install xinetd



2、建立配置文件

cd /etc/xinetd.d/

vi 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

}



存盘退出



3、建立tftp服务文件目录

mkdir /tftpboot



4、从新启动服务

/etc/init.d/xinetd restart



安装完成!测试方法:

在/tftpboot 目录下随便放个文件abc

然后 运行tftp 192.168.123.202 进入tftp命令行

输入get abc 看看是不是能把文件下下来,如果可以就可以了,也可以put 文件上去。

检查tptp是否打开:chkconfig --list 如果没有打开,则用这个命令也可以打开:chkconfig tftp on

或者ps -A | grep tftp,看是否有tftpd的服务~

无意间看到这篇文章,觉得写的也挺好的,就一起贴在这里了~

原文地址:http://blog.csdn.net/wzyhb123456789/archive/2010/08/24/5835262.aspx

原文:

  现在在研究SmartArm3250开发板,其中搭建Liunx平台时需要使用tftp传输Linux内核和文件系统到开发板,所以需要在电脑的 Linux下先搭建一个tftp服务,通过看书和上网找资料,发现一些问题和需要注意的地方,而且很多东西是不适合ubuntu的,所以总结一下,实现说 明,下面的操作在ubuntu10.04上是运行无误的,在其他操作系统上就不敢保证了。

一、安装tftp所需的软件。首先需要安装tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序,有些网站上说是安装tftp和 tftpd,我实验了一下,至少在我这是没有实现后面的tftp传输的,而tftp-hpa与tftp是冲突的,tftpd-hpa与tftpd是冲突 的,而带有-hpa的这两个是最新的,所以我就安装了这两个。在终端下输入 sudo apt-get install tftp-hpa tftpd-hpa,安装tftp-hpa和tftpd-hpa。然后还需要安装xinetd,按照网上的说法,这是一个守护进程,用于处理对各种服务的
请求,在终端下输入 sudo apt-get install xinetd,安装好xinetd。//如果之前安装了tftp和tftpd,这时候系统会自动卸载它们~

二、配置相关服务文件。进入根目录下的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 

然后进入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 /home/tftpboot

log_on_success += PID HOST DURATION 


log_on_failure += HOST 


其中server_args一行是配置服务器的文件存放的位置,就是进行tftp传输的时候,都是从该文件夹中搜索文件的,上文中的/home/tftpboot是我自己设置的,你也可以设置成任意的地方。

三、修改所需文件夹的权限。需要修改的文件夹也就是上一步提到的那个服务器文件存放的文件夹,以我的配置文件为例,在/home下创建一个文件夹 (sudo mkdir /home/tftpboot),然后把它可以设置成访问权限最宽松的(sudo chmod 777 /home/tftpboot),也可以设置成合适的权限。

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

通过以上四步就可以建立好tftp服务器了,可以在本地先进行一下测试。还是以我的配置文件为例,首先在/home/tftpboot中新建一个文件 file,然后在其中随便输入内容;然后进入一个不是/home/tftpboot的目录下(原因是避免混淆,因为在获取文件是,默认是将想要获取的文件 存放在当前目录下的);再在终端中输入 sudo tftp localhost,进入tftp命令符下(可以在其中输入help查看命令和命令的作用),输入 get
file,如果没有任何提示,就说明传输成功了,然后输入 q 退出tftp命令符,在当前目录下就可以看到一个file文件,内容是与开始新建的那个file的内容是一致的。同样也可以在tftp命令符中输入 put xx,把xx文件上传到服务器文件夹中。如果一切ok,那就么一个可用的tftp服务器就顺利搭建成功了。

对于上面的测试是针对本地测试的,如果想要对其他电脑或者开发板进行tftp传输,则在终端输入 sudo tftp xxx(即目标电脑或目标开发板的ip地址),而且还要关闭ubuntu自带的防火墙(书上说的),我是直接把防火墙给卸载了(sudo apt-get remove iptables),因为我觉得对于Linux来说,防火墙可能没什么需要把,至少目前为止我还没有受到过攻击。。。当然,想要与其他局域网内的电脑或开 发板互联进行传输,还要将这些机器的ip改到同一个段内。

好了,通过以上的步骤,就可以通过tftp协议,在电脑和开发板之间进行文件传输了,目前的目的就是下载Linux内核和文件系统到开发板。如果有朋友发 现了我的不足,都可以给我提出来,我们也可以进行讨论。不过还要强调一点,我的这些配置都是针对于ubuntu的,对于其他的系统可能会有所出入的。

这个时候,如果出现Error code 1: File not found,那么就参考下面这篇文章~

原文地址:http://hi.baidu.com/571209683/blog/item/77b8a91ddaba71c4a6866911.html

原文://只摘了对上面错误有帮助的部分哈~

sudo gedit /etc/default/tftpd-hpa

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot" //这里是你的tftpd-hpa的服务目录 //可以改成你想要的那个tftpboot

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l -c -s"        //这里是选项



注意:如果是在10.04以下的版本用下面的配置

tftp-hpa 的配置文件为 /etc/default/tftpd-hpa

 RUN_DAEMON="yes" 
OPTIONS="-l -c -s /tftpboot" //记得要重启~ 如果还是上面错误,就先把文件复制到/var/lib/tftpboot,再试下,如果成功,就要重启系统上面的配置才生效,以后就可以用你改得那个tftpboot了~如果还是不成功,我也米办法了~ 到底上面2篇文章谁更准确,我也弄不清,等高手来解释吧~ 再加上我整理的一些常见问题,关于tftp的就全了差不多~

现象一:

tftp> get file

Transfer timed out.

原因:

tftpd服务没有启动

现象二:

tftp> get file

Error code 2: Only absolute filenames allowed

原因:

在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpa

现象三:

tftp> put file

Error code 1: File not found

原因:

指定的文件不存在;或tftpd启动参数中没有指定-c选项,允许上传文件~上传的时候一定要确保文件先存在于上传~

现象4:

上传文件,权限不够,chmod + 777 tftpboot ,重新服务。

参考了很多文章,就不一一列出了~

希望对别人有帮助~

05-11 15:54