Linux系统中用TFTP进行文件传输.doc
文本预览下载声明
使用TFTP进行文件传输
(系统版本: Ubuntu 10.10或以上)
在嵌入式系统开发中,经常需要从主机上传送映像、文件等到目标机上。实现的方法有很多。如tftp,scp等。
TFTP(Trivial File Transfer Protocol)是用来下载远程文件的最简单的网络协议,它基于UDP协议而实现。
一、TFTP的建立
嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。我们要做的是在服务器端(即主机)上安装TFTP服务,并且正确地配置TFTP服务的路径和参数。
下面我尝试了两种搭建TFTP的方法,都实测成功。
1、安装tftp所需软件包:
tftp有好几种版本,其中tftp和tftpd是最经典、最常用的。还有增强版,如atftp和atftpd、tftp-hpa和tftpd-hpa等。所以配置TFTP的方法也不唯一。
传统方法(xinetd):
sudo apt-get install tftp
sudo apt-get install tftpd
sudo apt-get install xinetd
tftp是客户端,作用是从别人的TFTP服务器端上传/下载东西。
tftpd是服务端,字母d代表daemon,作用是为别人提供TFTP服务,供别人上传/下载东西。
xinetd是inetd的扩展。inetd 服务器是一个专门管理入网连接的网络后台程序,xinetd现在已经取代inetd,它一个守护进程,用于处理对各种服务的请求。tftp是要用inetd来控制的。
另一种更简单的方法:tftp-hpa
sudo apt-get install tftp-hpa
sudo apt-get install tftpd-hpa
tftp-hpa与tftp作用相当,但两者是冲突的,不能同时安装。tftpd-hpa与tftpd的关系同理。这种方法下,不需要inetd服务就可以。网上也有人同时装了xinetd,不仅需要配置,似乎还容易出问题。
2、创建TFTP目录
首先需要建立一个TFTP目录,以供上传和下载。当然也可以使用现有的目录。然后需要设定该目录的权限,决定是否能够下载和上传文件。对于日常使用,我们一般就将其权限设置为最高,为所有用户组都添加所有权限(读+写+执行=4+2+1=7):
sudo mkdir /home/tftpboot
cd /home
sudo chmod 777 tftpboot –R
我们的TFTP目录为/home/example/tftp,其权限已经是最高。
3、修改配置文件
对于xinetd方法,要在/etc/xinetd.d/下,修改配置文件tftp。如果是第一次使用,没有这个文件,需要自己创建一个空文件。可以利用touch指令:
cd /etc/xinetd.d
touch tftp
sudo gedit tftp
在打开的文件中输入以下内容:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
socket_type:网络套接字类型,流或者数据包
protocol:IP 协议,通常是TCP或者 UDP
user:运行进程的用户 ID,当前用户或root
server:执行的完整路径
server_args: 传递给server的变量或值。前面的-s代表tftp参数,后面/home/tftpboot是TFTP的根目录,可以根据自己实际情况来修改地址,如/home/example/tftp。
对于tftp-hpa方法,不需要装inetd就能使用,只要修改tftpd-hpa相应的配置文件就可以。
sudo gedit /etc/default/tftpd-hpa
原始的内容如下:
# /etc/default/tftpd-hpa
TFTP_USERNAME=tftp
TFTP_DIRECTORY=/var/lib/tftpboot
TFTP_ADDRESS=:69
TFTP_OPTIONS=--secure
我将其修改为:
# /etc/default/tftpd-hpa
TFTP_USERNAME=donghai
TFTP_D
显示全部