在线问答
直播中

刘帅

10年用户 56经验值
擅长:嵌入式技术 RF/无线
私信 关注

【OK210试用体验】之(3) TFTP服务器的搭建


本人纯小白,刚刚接触嵌入式Linux开发。这几天一直在搭建tftpnfs服务器,今天刚刚在主机上完成nfs服务器的搭建,遂总结此文,方便自己记忆,有希望有资于其他小白。
望大神怒喷,指点一二。
参考文档:
1.      TFTP
实验环境:
PC:Ubuntu12.04
开发板:飞凌OK210
其他:路由器  网线  串口线 开发板与PC处于同一网段。
TFTP(Trivial FileTransfer Protocol),即普通文件传输协议,是用来传送文件的Internet软件程序,它比文件传输协议(FTP)使用简单,但是功能少。
在嵌入式开发,特别是初期,利用TFTP下载内核,可大大减少内核下载的时间。(串口下载时间太长,USB下载配置太麻烦)。
嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。我们要做的是在服务器端(即主机)上安装TFTP服务,并且正确地配置TFTP服务的路径和参数。
1、安装tftp所需软件包:
tftp有好几种版本,其中tftp和tftpd是最经典、最常用的。还有增强版,如atftp和atftpd、tftp-hpa和tftpd-hpa等。所以配置TFTP的方法也不唯一。
传统方法(xinetd):
sudoapt-get install tftp
sudoapt-get install tftpd
sudoapt-get install xinetd
tftp是客户端,作用是从别人的TFTP服务器端上传/下载东西。
tftpd是服务端,字母d代表daemon,作用是为别人提供TFTP服务,供别人上传/下载东西。
xinetd是inetd的扩展。inetd 服务器是一个专门管理入网连接的网络后台程序,xinetd现在已经取代inetd,它一个守护进程,用于处理对各种服务的请求。tftp是要用inetd来控制的。
2、创建TFTP目录
首先需要建立一个TFTP目录,以供上传和下载。当然也可以使用现有的目录。然后需要设定该目录的权限,决定是否能够下载和上传文件。对于日常使用,我们一般就将其权限设置为最高,为所有用户组都添加所有权限(读+写+执行=4+2+1=7):
sudomkdir /home/tftpboot
cd/home
sudochmod 777 tftpboot –R
我们的TFTP目录为/home/example/tftp,其权限已经是最高。
3、修改配置文件
对于xinetd方法,要在/etc/xinetd.d/下,修改配置文件tftp。如果是第一次使用,没有这个文件,需要自己创建一个空文件。可以利用touch指令:
cd/etc/xinetd.d
touchtftp
sudogedit tftp
在打开的文件中输入以下内容:
servicetftp
{
socket_type= dgram
protocol= udp
wait =yes
user =root
server =/usr/***in/in.tftpd
server_args= -s /home/tftpboot
disable =no
per_source= 11
cps = 1002
flags =IPv4
}

socket_type:网络套接字类型,流或者数据包
protocolIP 协议,通常是TCP或者 UDP
user:运行进程的用户 ID当前用户或root
server:执行的完整路径
server_args 传递给server的变量或值。前面的-s代表tftp参数,后面/home/tftpbootTFTP的根目录,可以根据自己实际情况来修改地址,如/home/example/tftp
4、重新启动服务
如果用xinetd法,修改好tftp的配置文件后,需要重新启动一下xinetd。每次修改完配置文件后,都需要重新启动该服务:
sudo/etc/init.d/xinetd restart
5、确认tftp服务是否已经开启
查看tftp相关进程可以用以下指令:
psaux |grep tftp
弹出以下信息
root      2290 0.0  0.0   2364  120 ?        Ss   19:45  0:00 /usr/***in/in.tftpd --listen --user donghai --address 0.0.0.0:69 -l-c -s /home/tftpboot

可以看到,/usr/***in/in.tftpd已经启动,说明TFTP服务已经开启了,进程号正是2290。
--listen对应配置文件中的参数 -l
--user donghai就是配置文件中的TFTP_USERNAME
/home/tftpboot是配置文件中的TFTP_DIRECTORY
         另一种方法:
netstat-a|grep tftp
         如果看到如下提示,说明TFTP服务开启了。
udp        0     0 *:tftp                  *:*

二、TFTP的使用
1、连接本机
连接本机有三种方法,一是输入真实的IP地址,可以用ifconfig查得;二是用localhost来代表本机;三是使用地址127.0.0.1,这个IP地址始终代表本机的IP。
先在TFTP目录下新建一个文件a,在里面随便写一些内容,然后修改其权限为777。接着,输入以下指令的任意一条,进入TFTP命令行。
tftp192.168.1.201  (自己设定的IP
tftplocalhost
tftp127.0.0.1
TFTP命令行的基本指令:
put:将文件上传到TFTP目录
get:取得TFTP目录上的文件
quit/q:退出TFTP
因为TFTP服务将某一设定的目录视为根目录,因此不需要打出完整的路径。既然该目录下已经有一个文件a,我们就下面输入指令:
tftp>get a
Received 5 bytes in 0.0 seconds
tftp>put a
Sent 5 bytes in 0.0 seconds
         这样就传输成功了。在方法1中,传输成功后会有时间的提示;而在方法2中,如果没有任何提示,则说明传输成功。

回帖(2)

dz_ltf

2015-9-10 21:14:55
楼主 座位小白 我想请教一下 tftp到底是做什么用的  它是为了在linux下直接下载程序到开发板吗 具体怎么下载 WIN7下的cuteFTP有什么联系???
举报

刘帅

2015-9-11 12:25:06
cuteFTP我没有用过
tftp就是为了直接在uboot里直接烧位于主机PC共享目录里的共享文件,如系统镜像,避免了用SD卡等麻烦方式,与nfs搭配使用,方便底层驱动开发
举报

更多回帖

发帖
×
20
完善资料,
赚取积分