tftp(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,它提供不复杂、开销不大的文件传输服务,端口号为69。
我们在做ARM-Linux嵌入式开发中,经常需要用到tftp在Linux服务端和开发板间进行进行文件传输,因为我所使用的是Ubuntu,所以下面主要介绍Ubuntu下如何启动、配置tftp服务。
Step1:安装tftp相关软件包
包括 xinetd(用于管理tftp),tftpd(服务端),tftp(客户端)
sudo apt-get install xinetd tftpd tftp
也可以安装openbsd-inetd代替xinetd,据说debian5.0不用xinetd进行管理,而是用openbsd-inetd。
sudo apt-get install openbsd-inetd tftpd tftp
Step2:建立配置文件
如果上一步安装的是xinetd,则在/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
}
其中,/tftpboot就是我们的tftp服务文件目录,也就是说,以后用tftp命令上传或下载文件的位置就是/tftpboot目录。
如果上一步安装的是openbsd-inetd,则不需要新建配置文件,直接打开文件 /etc/inetd.conf 进行修改即可。
修改格式如下:
<service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
我们只需把原来的
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
修改为如下,即可。(最后的参数/tftpboot就是tftp服务文件目录,可根据实际情况修改)
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /tftpboot
Step3:建立tftp服务文件目录,并更改其权限
执行如下命令:
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot -R
Step4:重新启动tftp服务
如果Step1安装的是xinetd,则输入如下命令:
sudo /etc/init.d/xinetd restart
如果Step1安装的是openbsd-inetd,则输入如下命令:
sudo /etc/init.d/openbsd-inetd restart
至此,我们在Ubuntu下的tftp服务已经安装、配置、启动完成了。
【tips:如果是在开发板上通过U-Boot提供的tftp命令来与tftp服务端进行文件传输,则只需连接网线,并设置好ipaddr、serverip、gateway、netmask即可。】