




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用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 tftpsudo apt-get install tftpdsudo apt-get install xinetdtftp是客户端,作用是从别人的TFTP服务器端上传/下载东西。tftpd是服务端,字母d代表daemon,作用是为别人提供TFTP服务,供别人上传/下载东西。xinetd是inetd的扩展。inetd 服务器是一个专门管理入网连接的网络后台程序,xinetd现在已经取代inetd,它一个守护进程,用于处理对各种服务的请求。tftp是要用inetd来控制的。另一种更简单的方法:tftp-hpasudo apt-get install tftp-hpasudo apt-get install tftpd-hpatftp-hpa与tftp作用相当,但两者是冲突的,不能同时安装。tftpd-hpa与tftpd的关系同理。这种方法下,不需要inetd服务就可以。网上也有人同时装了xinetd,不仅需要配置,似乎还容易出问题。2、创建TFTP目录首先需要建立一个TFTP目录,以供上传和下载。当然也可以使用现有的目录。然后需要设定该目录的权限,决定是否能够下载和上传文件。对于日常使用,我们一般就将其权限设置为最高,为所有用户组都添加所有权限(读+写+执行=4+2+1=7):sudo mkdir /home/tftpbootcd /homesudo chmod 777 tftpboot R我们的TFTP目录为/home/example/tftp,其权限已经是最高。3、修改配置文件对于xinetd方法,要在/etc/xinetd.d/下,修改配置文件tftp。如果是第一次使用,没有这个文件,需要自己创建一个空文件。可以利用touch指令:cd /etc/xinetd.dtouch tftpsudo gedit tftp在打开的文件中输入以下内容:service tftpsocket_type = dgramprotocol = udpwait = yesuser = rootserver = /usr/sbin/in.tftpdserver_args = -s /home/tftpbootdisable = noper_source = 11cps = 100 2flags = IPv4socket_type:网络套接字类型,流或者数据包protocol:IP 协议,通常是TCP或者 UDPuser:运行进程的用户 ID,当前用户或rootserver:执行的完整路径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-hpaTFTP_USERNAME=tftpTFTP_DIRECTORY=/var/lib/tftpbootTFTP_ADDRESS=:69TFTP_OPTIONS=-secure我将其修改为:# /etc/default/tftpd-hpaTFTP_USERNAME=donghaiTFTP_DIRECTORY=/home/tftpbootTFTP_ADDRESS=:69TFTP_OPTIONS=-l -c -s说明:TFTP_USERNAME:必须改为当前的用户名,或者root;TFTP_DIRECTORY:我们设定的TFTP根目录;TFTP_OPTIONS:TFTP启动参数。意义如下:-l:以standalone/listen模式启动TFTP服务,而不是从inetd启动。(这里也表明,再像前面一样装xinetd,其实是多此一举)-c:可创建新文件。默认情况下,TFTP只允许覆盖原有文件,不能创建新文件。-s:改变TFTP启动的根目录。加了-s后,客户端使用TFTP时,不再需要输入指定目录,填写文件的完整路径,而是使用配置文件中写好的目录。这样也可以增加安全性。我一开始没有注意TFTP_USERNAME这一项,随便取了一个名字,一直没有成功,后来改用自己的用户名,才测试成功。4、重新启动服务如果用xinetd法,修改好tftp的配置文件后,需要重新启动一下xinetd。每次修改完配置文件后,都需要重新启动该服务:sudo /etc/init.d/xinetd restart如果用tftp-hpa法,要重启tftpd-hpa服务:sudo service tftpd-hpa restart如果显示如下,说明配置正确:tftpd-hpa start/running, process 2290之前我没有把TFTP_USERNAME该为用户名,而是随便取了一个,则会提示如下:tftpd-hpa start/running对比发现,这里并没有启动进程,因为配置中TFTP_USERNAME不正确,也就没有成功开启TFTP。5、确认tftp服务是否已经开启下面确认tftp服务是否开启(基于tftp-hpa方法)。查看tftp相关进程可以用以下指令:ps aux |grep tftp弹出以下信息root 2290 0.0 0.0 2364 120 ? Ss 19:45 0:00 /usr/sbin/in.tftpd -listen -user donghai -address :69 -l -c -s /home/tftpboot可以看到, /usr/sbin/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来代表本机;三是使用地址,这个IP地址始终代表本机的IP。先在TFTP目录下新建一个文件a,在里面随便写一些内容,然后修改其权限为777。接着,输入以下指令的任意一条,进入TFTP命令行。tftp 01 (自己设定的IP)tftp localhosttftp TFTP命令行的基本指令:put:将文件上传到TFTP目录get:取得TFTP目录上的文件quit/q:退出TFTP因为TFTP服务将某一设定的目录视为根目录,因此不需要打出完整的路径。既然该目录下已经有一个文件a,我们就下面输入指令:tftp get aReceived 5 bytes in 0.0 secondstftp put aSent 5 bytes in 0.0 seconds这样就传输成功了。在方法1中,传输成功后会有时间的提示;而在方法2中,如果没有任何提示,则说明传输成功。下面看看当配置参数和文件权限改变时,会出现什么现象。我列举了一些常见问题:tftp get aTransfer timed out.原因:tftpd服务没有启动。需要注意的是,必须使TFTP的用户名和当前的系统的用户名一致,否则就无法成功启动tftpd服务。tftp get apermission denied原因:操作者权限不够,比如当前的目录是/etc,不能随便get文件下来。需要提升权限。切换到root账户,或者直接执行sudo tftp。tftp put t1tftp: t1: No such file or directory原因:当前目录下没有t1文件tftp get dError code 1: File not found原因:TFTP根目录下没有该文件Error code 2: Only absolute filenames allowed原因:TFTP启动配置参数没有-s,或者在DIRECTORY中没有填写目录以下针对xinetd方法:tftp put aError code 2: Access violation原因:1 TFTP启动配置中无-c,TFTP目录没有同名文件2 TFTP启动配置中无-c,TFTP目录有同名文件,但无写权限解决:chmod 777 a以下针对tftp-hpa方法:tftp put bError code 1: File not found原因:启动配置参数无-c,根目录下无同名文件(注意和前面情况的区别,不是当前目录下没有b文件,而是TFTP目录下找不到同名文件b)tftp put bError code 2: File must have global write permissions原因:根目录下有同名文件,该文件无写权限(启动配置参数有无-c都这样)经测试,在tftp-hpa方法下,下列情况可以put成功:l 启动配置参数无-c,根目录下有同名文件,有写权限l 启动配置参数有-c,根目录下无同名文件l 启动配置参数有-c,根目录下有同名文件,有写权限在xinetd方法下,我将server_args = -s /home/tftpboot改为server_args = -s /home/tftpboot -c 或 server_args =-c -s /home/tftpboot 试图增加-c参数,但重启xinetd后,却发现tftp基本的下载和上传都不行了。因此在xinetd方法下,如需上传,应该让TFTP目录下有一个同名文件(开w权限),尚未找到直接上传文件的方法。2、连接实验箱实验箱操作系统中的TFTP服务已经装好,是在BusyBox v1.12.0中的。它的用法与本机的略有区别,但原理是一样的。基本参数:-g: get,获取文件-p: put,长传文件-l FILE:本地的文件,名为FILE-r FILE:远程的文件,名为FILE实验箱的IP地址为192.16
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 7251.7-2025低压成套开关设备和控制设备第7部分:码头、露营地、市集广场、电动车辆充电站等特定应用的成套设备
- 公文规则考试题库及答案
- 森林康养知识培训班课件
- 2025年主管护师考试模拟试题附答案
- 2025年陪诊师考试流程详解与试题及答案
- 2025年居民健康档案考试题及答案
- 桥梁挖孔桩施工课件
- 2025年轧钢技术中级考试趋势分析与预测
- 2025年无人机技术面试宝典初级装调检修工模拟题解析
- 桥架与配电箱连接课件
- 餐厅前台日常管理制度
- 完整的离婚协议书打印电子版(2025年版)
- 国有企业绩效考核体系的问题诊断与优化路径研究
- 去极端化教育宣讲
- 充电桩知识培训课件
- 人工智能智能客服系统
- 个人安全管理工作存在的不足及整改措施
- 公司登记(备案)申请书
- 八下政治全册思维导图
- 供水管网工程监理实施细则
- 科研伦理与学术规范-期末考试答案
评论
0/150
提交评论