基于Ubuntu系统做的tftp服务器,基于CentOS 7都差不多,书写了关键命令,测试过Ubuntu 12.0.4 和CentOS 7环境
1.介绍tftp服务器
TFTP(Trivial File Protocol , 简单文件传输协议),是一个基于UDP协议实现的客户机和服务器之间进行简单的文件传输协议,适合开销不大、复杂的场合。
在嵌入式开发中,因为Uboot支持tftp服务,可以从服务器上加载内核并运行。
tftp服务依赖xinetd服务,需要安装xinetd,安装tftp-server和安装tftp客户端,
2.安装过程:
1>安装xinetd
apt-get install xinetd (yum install xinetd)
2>安装tftp和tftpd
apt-get install tftp-hpa tftpd-hpa(yum install tftp-server tftp)
3>创建tftpboot目录
mkdir /home/wwb/tftpboot
4>建立/etc/xinetd.d/tftp文件
vim /etc/xinetd/tftp(原本没有这个文件)
5>写入内容
sevice tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/wwb/tftpboot -c
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
:wq
6>重启 xinetd 服务
/etc/init.d/xinetd restart
7>测试服务
tftp 127.0.0.1
get 目录中的文件
出现错误:
Error code 1:File not found
解决方案:
vim /etc/default/tftpd-hpa
#/etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/wwb/tftpboot"//改成你的目录
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
:wq
重新启动
8>重新启动,启动成功
9>说明:1》使用开发板与虚拟机安装的客户系统进行TFTP通讯,需要将虚拟网卡设置为Bridged模式,并建议使用静态IP地址。
2》如果以上设置都确认无误,但tftp还是不成功,请检查主机的防护墙是否已经关闭。
/etc/init.d/iptables stop //关闭防护墙
ufw disable //关闭防护墙(ubuntu)
3》如果老出现“AVC Denial ,click icon to view"的错误,并不能传输文件,需要做如下更改
修改/etc/sysconfig/selinux,将SELINUX设置为 disable
使用命令setenforce 0 让selinux配置文件生效
10>权限问题
chmod 777 /home/wwb/tftpboot