1.tftp简介
TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于 UDP 协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场合。TFTP 协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。这些概念是博主在网上抄来的,正确性无法确定,本博文主要是记录如何在ubuntu平台t搭建使用ftp服务器。
2.为什么要搭建tftp服务器
通常来说,我们开发ARM应用时,大多数使用x86平台编译,传输到ARM平台运行的开发模式。传输的方式有许多种:
1.使用U盘、SD卡:将文件拷贝到U盘,然后将文件从U盘拷贝进板子。(经常需要拔插,不方便)
2.将文件拷贝文件系统,重新制作文件系统,将新的镜像烧录进开发板。(频繁编译烧录,效率低)
3.使用NFS网络文件系统。(这种方式相当于共享文件夹,不过是通过网络进行共享,完成搭建环境后还是十分方便,后面博主也去尝试一下)
4.使用超级终端传输文件,这种方式通过串口传输文件需要确保串口连接且传输较慢。
5.使用tftp方式传输,这种方法配置十分简单,在window环境下甚至有直接使用的exe。
有需要的可以去网上寻找,通常来说我们需要使用linux环境进行交叉编译,所以我们此处介绍在ubuntu搭建tftp服务器。
3.搭建环境
安装xinetd, sudo apt-get install xinetd
安装tftp、tftpd,sudo apt-get install tftp tftpd
配置/etc/xinetd.d/tftp (需要sudo),内容如下,网传需要内容需要严格对齐,但是不对其,博主也没发现什么问题。
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
我们比较关注的参数是server_args 即tftp服务器可提供下载的目录,此处是可以随意修改的,但是必须确保该目录是开放的,同时值得注意的是,tftp开放的只是一级目录,对下一级目录是不可操作的。
需要创建目录:
mkdir /var/tftpboot/ (注意最后一个 / 不能省略)
修改权限:
chmod 777 /var/tftpboot/
4.开启、关闭服务器
开启:
sudo /etc/init.d/xinetd start
关闭:
sudo /etc/init.d/xinetd stop
重启:
sudo /etc/init.d/xinetd restart
5.x86平台linux之间传输文件
tftp传输文件双方必须都安装tftp,同时被获取方应该是服务器端。
输入tftp即可出现操作命令行,使用get xxx即可传输文件
6.ARM平台传输x86平台文件
ARM平台通常提供tftp服务,我们可以直接使用就行,但是必须确保双方处于同一局域网。
6.1 从X86获取文件
tftp -r/-l test -g 192.168.1.106
解释:
-l/-r:在不更改获取文件名的情况下,两者都可以
test:获取的文件名
-g :(get)下载
192.168.1.106:tftp服务器的IP
获取的文件存放在当前路径下。
2、更名获取
tftp -l hello -r test -g 192.168.1.106
解释:
-l :(local)本地
hello:存放到本地的文件名
-r :(remote)远程
test:存放到远程的文件名
-g :(get)下载
test :获取的文件名
192.168.1.106 :tftp服务器的IP
6.1 发送文件到X86
tftp -r test -p 192.168.1.106
解释:
-r :(remote)远程
test:存放到远程的文件名
-p :(push)下载
test :获取的文件名
192.168.1.106 :tftp服务器的IP
但是远程tftp指定的文件夹必须有对应名称的文件,并且文件具有读写操作权限:不然会出现如下错误
tftp: server error: (2) Access violation
创建文件(touch),修改权限(chmod)就可以。