TFTP(Trivial File Transfer Protocol,简单文件传输协议),是TCP/IP协议族中用来在客户机和服务器之间进行简单文件传输的协议,开销很小。TFTP通常用于内核调试。在嵌入式Linux开发过程中,内核调试是其中一个基础、重要的环节。调试内核通常是与 Bootloader配合使用,只需在Bootloader中实现了网卡驱动和TFTP客户端,就可以使用TFTP进行传输内核。使用TFTP协议传输文件,还需要在主机安装TFTP服务端,可以在 Linux系统下实现,也可以在Windows系统下实现,下面在Linux(Ubuntu)系统下安装TFTP服务端进行测试。
安装服务器、客户端和守护进程
elf@ubuntu:~$ sudo apt-get install tftp-hpa tftpd-hpa xinetd
服务器配置
首先,在/home/elf目录下创建tftpboot文件夹,并把属性改成任意用户可读写。
elf@ubuntu:~$ mkdir tftpboot
elf@ubuntu:~$ chmod 777 tftpboot
然后,进入目录/etc/xinetd.d/,并在其中新建文件tftp。
elf@ubuntu:~$ cd /etc/xinetd.d/
elf@ubuntu:~$ sudo vim tftp
添加以下内容到tftp文件。
service tftp
{
disable = no 138
socket_type = dgram
protocol = udp
wait = yes
user = elf
server = /usr/sbin/in.tftpd
server_args = -s /home/elf/tftpboot -c
per_source = 11
cps = 100 2
}
最后,修改配置文件/etc/default/tftpd-hpa。
elf@ubuntu:~$ sudo vim /etc/default/tftpd-hpa
修改为:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/elf/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPtiONS="--secure -l -c -s" 注意:将“TFTP_DIRECTORY” 改为自己创建的tftpboot目录所在的路径。
重新启动服务
elf@ubuntu:~$ sudo /etc/init.d/xinetd reload
[ ok ] Reloading xinetd configuration (via systemctl): xinetd.service.
elf@ubuntu:~$ sudo /etc/init.d/xinetd restart
[ ok ] Restarting xinetd (via systemctl): xinetd.service.
elf@ubuntu:~$ sudo /etc/init.d/tftpd-hpa restart
[ ok ] Restarting tftpd-hpa (via systemctl):tftpd-hpa.service.
测试服务器
在tftpboot文件夹下创建一个文件。
elf@ubuntu:~/tftpboot$ touch abc
进入任意一个目录,如/home下。
elf@ubuntu:~/tftpboot$ cd /home/
elf@ubuntu:/home$ sudo tftp 192.168.0.51 //192.168.0.51为本机IP
tftp> get abc
tftp> quit
elf@ubuntu:/home$ ls
abc elf
如果可以下载abc文件说明服务器已经安装成功。