1 背景
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一个基于UDP协议的简单文件传输协议,工作在69端口。它适用于开销较小、应用简单的场景。TFTP专为小文件传输设计,功能包括从服务器获取文件或向服务器写入文件,但不能列出目录或进行认证。
在嵌入式Linux开发中,TFTP协议在很多场合都被用到,比如利用TFTP更新下位机中的文件。
2 环境
虚拟机:VMware 16.2.3
系统:Ubuntu 16.04.4 LTS
硬件:Zynq 7020平台
3 TFTP更新下位机文件的步骤
3.1 Ubuntu上搭建TFTP服务器
1、安装软件:一般的Linux发行版默认都没有安装TFTP服务以及TFTP服务器。
a. 安装xinetd:为TFTP服务器提供网络复位管理。
yong@yong-virtual-machine:~$ sudo apt-get install xinetd
b. 安装tftpd-hpa和tftp-hpa:tftpd-hpa为服务器,tftp-hpa为客户端
yong@yong-virtual-machine:~$ sudo apt-get install tftpd-hpa tftp-hpa
2、修改配置文件
a. 新建/etc/xinetd.d/tftp文件
yong@yong-virtual-machine:~$ sudo vi /etc/xinetd.d/tftp
b. 写入如下内容
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/yong/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
其中server_args参数为TFTP服务器的根目录,disable为是否关闭TFTP服务器自动启动。
c. TFTP服务器文件夹
1. 创建TFTP服务器文件夹(确保此文件夹地址与上一步骤的server_args目录地址一致)。
yong@yong-virtual-machine:~$ mkdir -pv /home/yong/tftpboot
2. 将TFTP服务器文件夹访问权限设置为777
yong@yong-virtual-machine:~$ sudo chmod 777 /home/yong/tftpboot
d. 查看虚拟机Ubuntu本地IP地址
此IP地址将用作TFTP服务器监听的本地局域网地址
IP地址为:192.168.1.120
1. 修改文件
yong@yong-virtual-machine:~$ sudo vi /etc/default/tftpd-hpa
2. 文件内容修改如下
# /etc/default/tftpd-hpa TFTP_USERNAME="yong"
TFTP_DIRECTORY="/home/yong/tftpboot"
TFTP_ADDRESS="192.168.1.120:69" // 此处IP地址需与Ubuntu本地IP地址相同
TFTP_OPTIONS="-s -c"
TFTP_USERNAME:这指定了运行TFTP服务的用户。在这个例子中,TFTP服务将以用户yong的权限运行。
TFTP_DIRECTORY:这设置了TFTP服务器的根目录。所有的TFTP文件传输都将限制在这个目录及其子目录中。在此例中,根目录被设置为/home/yong/tftpboot。
TFTP_ADDRESS="192.168.1.120:69":这指定了TFTP服务器监听的地址和端口。192.168.1.120是Ubuntu本地IP地址,端口为标准的TFTP端口69。
TFTP_OPTIONS="-s -c":这里定义了传递给tftpd-hpa服务的附加选项。-s选项将TFTP服务器操作限制在指定的根目录,而-c选项允许客户端创建新文件。
f. 启动服务
1. 启动xinetd
yong@yong-virtual-machine:~$ sudo service xinetd restart
3. 启动tftpd-hpa
yong@yong-virtual-machine:~$ sudo service tftpd-hpa restart
3、测试TFTP服务
a. 在/home/yong目录下创建文件puttest
echo "tftp put test" >> /home/yong/puttest
b. 在/home/zlf/tftpboot目录下创建文件gettest
echo "tftp get test" >> /home/yong/tftpboot/gettest
c. 进入/home/yong目录
yong@yong-virtual-machine:~$ cd /home/yong
d. 运行TFTP
tftp 192.168.1.120
e. 测试从TFTP服务器获取文件
tftp> get gettest
f. 测试上传文件到TFTP
tftp> put puttes
g. 退出TFTP
tftp> q
h.如果在/home/yong目录下可以看到下载的gettest文件,在/home/yong/tftpboot目录下可以看到上传的puttest文件,则证明TFTP服务器搭建成功!
3.2更新下位机文件
1、进入板卡下位机系统
2、为板卡网络接口 eth0 分配 IP 地址 192.168.1.10(确保该地址与之前设定的 TFTP 服务器地址在同一网段内)。
# ifconfig eth0 192.168.1.10
3、VMware虚拟机使用桥接模式,确保虚拟机与板卡之间能够相互ping通。(见文章《 VMware虚拟机使用桥接模式ping通主机》)
板卡ping虚拟机:
虚拟机ping板卡:
4、从虚拟机的TFTP服务器中获取测试文件gettest
tftp -gr gettest 192.168.1.120
5、如果板卡当前目录下成功获取了测试文件gettest,证明成功利用TFTP服务器远程获取更新文件!
文章评论